Hallo @all,
habe ein großes Problem
ich will Zellinhalte mit einander vergleichen (und dann neue Werte in A1 einlesen)wobei die Zellen nicht streng monton steigend vorliegen sondern auch zb 2,3,1,19,3 sein können.
Mein Code funktioniert nur bei Monoton steigend.
For e = 0 To 10
If Worksheets(„Tabelle1“).Range(„A2“).Value >= Worksheets(„Tabelle2“).Range(„A1“).Value Then
Worksheets(„Tabelle1“).Range(„A1“).Value = Worksheets(„Tabelle2“).Cells(12, 2 + e).Value
end if
next e
Wäre echt toll wenn mir jemand helfen könnte:smile:
viele Grüße
der Suchende
Hallo,
ich will Zellinhalte mit einander vergleichen (und dann neue
Werte in A1 einlesen)wobei die Zellen nicht streng monton
steigend vorliegen sondern auch zb 2,3,1,19,3 sein können.
Mein Code funktioniert nur bei Monoton steigend.
For e = 0 To 10
If Worksheets(„Tabelle1“).Range(„A2“).Value >=
Worksheets(„Tabelle2“).Range(„A1“).Value Then
Worksheets(„Tabelle1“).Range(„A1“).Value =
Worksheets(„Tabelle2“).Cells(12, 2 + e).Value
end if
next e
Dein Code hat das Problem, daß beim Prüfen und beim Ziel das e keine Rolle spielt. Das Ziel wird immer mit dem letzten Wert überschrieben. Das solltest Du prüfen, was Du da in diesem Beispiel vergessen hast zu schreiben.
Ich baue die indirekte Indizierung mal in Deinen Code ein, wie er ist und lasse den Fehler unberücksichtigt.
Option Explicit
Private Sub Test()
Dim e As Integer, Arr() As String, Q As String
Q = "2,3,1,19,3"
Arr = Split(Q, ",")
For e = 0 To UBound(Arr)
If Worksheets("Tabelle1").Range("A2").Value \>= Worksheets("Tabelle2").Range("A1").Value Then
Worksheets("Tabelle1").Range("A1").Value = Worksheets("Tabelle2").Cells(12, 2 + Val(Arr(e))).Value
End If
Next
End Sub
Gruß Rainer
Vielen Dank:smile:
Asche auf mein Haupt, habe einen Fehler drin (weil ich das Problem aus dem Kontext heraus gelöst habe, ich stelle mal die ganze verbesserte Sub rein)
mein Problem ist, es läuft, aber löscht in Tabelle2 die alten Werte in Cells(11, 2 + e)d.h. die Werte die er mir davor ausgegeben hat (ich möchte quasi in der Zeile 11 in jeder Spalte einen andere Wert haben).
Bin für jede Hilfe sehr dankbar:smile:
Viele Grüße
der Suchende
Dim e as Integer
dim counter3 as Integer
Private Sub CommandButton2_Click()
Worksheets(„Arbeitsplatz“).Activate
counter3 = counter3 + 1
CommandButton2.Caption = „v“
Worksheets(„Tabelle1“).Range(„A2“).Formula = counter3
For e = 0 To 10
If Worksheets(„Tabelle1“).Range(„A2“).Value >= Worksheets(„Tabelle1“).Range(„A1“).Value Then
Worksheets(„Tabelle1“).Range(„A1“).Value = Worksheets(„Tabelle2“).Cells(12, 2 + e).Value
Worksheets(„Tabelle2“).Cells(11, 2 + e).Value = Worksheets(„Tabelle1“).Range(„A2“).Value
counter3 = 0
End If
Next e
End Sub
Hallo,
das würde indirekt indiziert dann so aussehen:
Option Explicit
Dim e As Integer
Dim counter3 As Integer
Private Sub CommandButton2\_Click()
Dim Arr() As String, Q As String
Q = "2,3,1,19,3"
Arr = Split(Q, ",")
Worksheets("Arbeitsplatz").Activate
counter3 = counter3 + 1
CommandButton2.Caption = "v"
Worksheets("Tabelle1").Range("A2").Formula = counter3
For e = 0 To 10
If Worksheets("Tabelle1").Range("A2").Value \>= Worksheets("Tabelle1").Range("A1").Value Then
Worksheets("Tabelle1").Range("A1").Value = Worksheets("Tabelle2").Cells(12, 2 + Val(Arr(e))).Value
Worksheets("Tabelle2").Cells(11, 2 + Val(Arr(e))).Value = Worksheets("Tabelle1").Range("A2").Value
counter3 = 0
End If
Next e
End Sub
Da stimmt immer noch etwas nicht.
Die Schleife ergibt noch keinen richtigen Sinn. Der Index sollte jeweils in Quelle und Ziel auftauchen, sonst werden Werte überschrieben und/oder in eine Zeile lauter gleiche werte, nämlich immer der Letzte eingetragen.
Gruß Rainer
Vielen Dank, ich verstehe nur die Zahlen Bei Q = „2,3,4,5,6“
Arr = Split(Q, „,“)nicht:frowning:
(in meine Frage sollten das nur Beispielswerte sein, die in einer Zelle stehen können, also nicht der Spalten der Zelle), darum komme ich mit dem Arr auch nicht viel weiter(der Fehler, dass in den e-1 Spalte nicht gespeichert bleibt, ist leider noch drin) meine Idee war es, immer den i-1 Wert schreibgeschützt zu machen, aber wie das geht weiß ich nicht:frowning: (über Protect ging es nicht)
Viele Grüße und Dankeschön:smile:
Der Suchender
Hallo @all,
habe ein großes Problem
ich will Zellinhalte mit einander vergleichen (und dann neue
Werte in A1 einlesen)wobei die Zellen nicht streng monton
steigend vorliegen sondern auch zb 2,3,1,19,3 sein können.
Mein Code funktioniert nur bei Monoton steigend.
Hallo Suchender,
die Codes kann ich schon lesen, ich hab nur den Sinn des Ganzen noch nicht verstanden.
Bastle mal eine Mappe, ein Blatt „Vorher“ mit Beispieldaten und einem Blatt „Nacher“ wo man sieht wie die Daten aussehen sollen wenn ein makro darüberlief.
Hochladen z.B. mit FAQ:2606
Gruß
Reinhard
Hallo,
ich verstehe nur die Zahlen Bei Q = „2,3,4,5,6“
Arr = Split(Q, „,“)nicht:frowning:
Split zerlegt den String und trägt ihn in ein Array ein.
Dabei wird das Komma als Trennzeichen verwendet, weil ich das so angegeben habe (",").
Aus „2,3,4“
wird …
Arr(0) = „2“
Arr(1) = „3“
Arr(2) = „4“
(in meine Frage sollten das nur Beispielswerte sein, die in
einer Zelle stehen können, also nicht der Spalten der Zelle),
In Meinem Code ist Q = „1,2,3,4“ auch nur ein Beispiel.
Du kannst den String natürlich auch aus einer Zelle lesen oder die Indizes anders ermitteln.
Man könnte auch schreiben:
Dim Arr() As String, Q As String
Arr = Split(…Cells(1,1).Value)
For e = Lbound(Arr) To Ubound(Arr) ’
Hallo Reinhard,
ginge es, dass man einen Code einfügt der die Zeile e+1 schützt, d.h. nicht überschreibt? oder eher nicht weil dann auch der Wert von Ist nicht übernommen werden würde?
Unter:
http://rapidshare.com/files/345479284/Zeilenproblem… ist die Mappe´gespeichert
Viele Grüße und nochmals vielen Dank
der Suchende