Zellwerte in nicht aufsteigender Reihenfolge vergl

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. :smile: 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