Anzeige
Archiv - Navigation
1488to1492
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schleife Zeile vertauschen

Schleife Zeile vertauschen
27.04.2016 14:45:57
Chris
Hallo zusammen,
ich habe folgendes Makro in VBA programmiert. Folgendes soll damit erzielt werden.
Wenn sich der Wert 1003 oder 1006 oder 1012 in Zeile i und Spalte 5 befindet und zusätzlich in Zeile j und Spalte 5 einer von den Werten steht außer der der bereits in Zeile i ist dann sollen diese beiden Zeilen vertauscht werden.
Das Makro sieht so aus:
Dim i As Integer
For i = 2 To Cells(65536, 2).End(xlUp).Row
j = i + 1
k = i + 2
a = "1003"
b = "1006"
c = "1012"
If Cells(i, 5) Cells(j, 5) And (Cells(i, 5) = a Or b Or c) And (Cells(j, 5) = b Or c) Then
quelle = Rows(j).Value
senke = Rows(k).Value
Rows(j).Value = senke
Rows(k).Value = quelle
End If
Next i
Problem ist jetzt dass Excel nicht die Werte erkennt und darüber hinaus die Zeilen nicht korrekt vertauscht. Was habe ich hier falsch gemacht?
Vielen Dank euch allen.
Gruß
Chris

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife Zeile vertauschen
27.04.2016 15:42:29
Piet
Hi
Auswertungsfehler: -- a Or b Or c funkltioniert nicht!
(Cells(i, 5) = a Or b Or c) And (Cells(j, 5) = b Or c)
(Cells(i, 5) = a Or Cells(i, 5) = b Or Cells(i, 5) = c) And (Cells(j, 5) = b Or Cells(j, 5) = c)
mein Tipp:
Text in Variable laden - Txt1/ Txt2 oder Tx1/ Tx2
Txt1 = Cells(i, 5): Txt2 = Cells(j, 5)
(Txt1 = a Or Txt1 = b Or Txt1 = c) And (Txt2 = b Or Txt2 = c)
mfg Piet

AW: Schleife Zeile vertauschen
27.04.2016 15:58:11
Chris
Vielen Dank schonmal.
Das Problem was ich aber nach wie vor habe ist dass ich so ja zig Schleifen miteinander vergleichen muss.
Also wenn Zeile i = 1003 ist dann darf in Zeile j nur 1006 oder 1012 stehen.
Wenn jetzt aber Zeile i = 1012 ist dann darf in Zeile j nur 1003 oder 1006 stehen u. s. w.
Gibt es hier vielleicht die Möglichkeit zu sagen Wenn Zeile i = 1003 dann vergleiche alles in Zeile j außer 1003.
Ich hoffe ihr versteht was ich meine. Plane noch weitere Werte zu vergleichen deshalb ist das sehr wichtig.
Vielen Dank an alle.
Gruß
Chris

Anzeige
AW: Schleife Zeile vertauschen
27.04.2016 17:01:55
Werner
Hallo Chris,
z.B. so:
Public Sub neu()
Dim i As Long
Dim schalter1 As Boolean
Dim schalter2 As Boolean
With Sheets("Tabelle1")
For i = 2 To .Cells(Rows.Count, 2).End(xlUp).Row 'letzte Zeile in Spalte B
schalter1 = False
schalter2 = False
Select Case .Cells(i, 5).Value 'Wert in Zelle (i, 5)
Case 1003, 1006, 1012 'Werte nach deinen Bedürfnissen erweitern
schalter1 = True
End Select
Select Case .Cells(i + 1, 5).Value 'Vergleichswerte Zelle unter (i, 5)
Case 1003, 1006, 1012 'Werte nach deinen Bedürfnissen erweitern
schalter2 = True
End Select
If schalter1 And schalter2 Then
'hier sollte anstatt der Messagebox dann das rein, was du eigentlich machen willst
'ist mir noch nicht so ganz klar
If .Cells(i, 5)  .Cells(i + 1, 5) Then MsgBox "Hurra"
End If
Next
End With
End Sub
Gruß Werner

Anzeige
AW: Schleife Zeile vertauschen
28.04.2016 01:03:48
Piet
Hi Chris K
für deine Zweite Frage hier ein Denkansatz:
Statt 1003 = 1003 kannst du auch 1003 1003 auswerten, s. unten
If Cells(i, 5) = a And Cells(j, 5) a Then - - oder:
If Cells(i, 5) = a And Cells(j, 5) = b Or Cells(j, 5) = c Then
Ich weiss nicht wieviel du noch auswerten willst und ob evtl.
Werner seine Lösung mit Case Select dabei vorteilhafter ist.
Am besten sagst du uns mal den Gesamtumfang der Auswertung.
mfg Piet

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige