Anzeige
Archiv - Navigation
1688to1692
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 zum sortiern

Schleife zum sortiern
09.05.2019 10:08:17
Schmidt
Hi,
habe mal ein kleines Problem zur Wiederholung einer Schleife zur Sortierung von Spalten.
Im Genauen sollen in der Schleife immer Zwei Spalten aufgegriffen werden,Bsp. A und B und nach B aufsteigend sortiert werden. Dies betrifft nun mehr als 50 Paare von Spalten, die immer eine Spalte als Platzhalter dazwischen haben und daher würde ich gern alles in einer Schleife durchlaufen lassen, habe aber das Problem, das meine Deklaration anscheinend nich hinhaut.
Hier der code für die reine Sortierung (funktioniert super)

lletzteZeile_g = IIf([A60] > "", 60, [A60].End(xlUp).Row)
ThisWorkbook.Worksheets("Vergleichsliste").Range("A3:B" & lletzteZeile_g).Sort _
Key1:=Range("B3"), _
Order1:=xlDescending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom

Begonnen wird dies Sortierung in Zeile 3.
Hier die von mir entworfene Schleife, die nicht funktioniert.

For j = 1 To 49
x = 4 + j * 3
lletzteZeile(j) = IIf(ThisWorkbook.Worksheets("Vergleichsliste").Cells(60, x) > "", 60,  _
ThisWorkbook.Worksheets("Vergleichsliste").Cells(60, x).End(xlUp).Row)
ThisWorkbook.Worksheets("Vergleichsliste").Range((.Range("G3").Cells(60, x + 1)) &  _
lletzteZeile(j)).Sort _
Key1:=Range(.Range("G3").Cells(3, x)), _
Order1:=xlDescending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom
Next
Ich starte mit Absicht erst in Spalte 7, da vorher zwei andere, separate Sortierungen laufen. Meine Fehler sollten bei der Benennung der Ranges sein. Aslo beim Bereich der Sortierung und beim Startpunkt in Key1. Könnt Ihr mir bitte helfen?
Gruß
Marc

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife zum sortiern
09.05.2019 10:42:20
Werner
Hallo Marc,
du schreibst zwar, dass du die Spalte aufsteigend (xlAscending) sortieren willst, im Code selbst sortierst du dann aber absteigend (xlDescending).
Hier mal ein Code, der durch die Spalten läuft von Spalte G bis zur letzten Spalte. Dann wird G:H nach Spalte H aufsteigend sortiert. Weiter geht es dann mit Spalte J.
Option Explicit
Public Sub Sortieren()
Dim loLetzte As Long, loSpalte As Long, i As Long
Application.ScreenUpdating = False
With Worksheets("Vergleichsliste")
For i = 7 To .Cells(3, .Columns.Count).End(xlToLeft).Column Step 3
loLetzte = .Cells(.Rows.Count, i).End(xlUp).Row
.Range(.Cells(3, i), .Cells(loLetzte, i + 1)).Sort Key1:=.Cells(3, i + 1), _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
Next i
End With
End Sub
Gruß Werner
Anzeige
AW: Schleife zum sortiern
09.05.2019 11:30:37
Schmidt
Hi Werner,
funktioniert super, danke.
Und ich wollte Absteigend (Descending)....Demnach mein Fehler beim Schreiben.
Wo du mir so schnell geholfen hast, hätte ich noch ein Problem.
Vielleicht kannst du mir dabei auch behilflich sein.
Ich möchte für den gleichen Bereich einen Abgleich mit Zellen einer anderen Liste machen. Hier werden Vorgangsnummern aufgelistet (d4:j4), welche automatisch gestartet werden und ich möchte nun die Häufigkeit ermitteln. Ich habe das mit folgendem code einzeln für ein Spaltenpaar gelöst.
Public Sub searchandcompare()
Dim Zelle1 As Range, Zelle2 As Range, Typ1 As Range, Typ2 As Range
Set Typ1 = ThisWorkbook.Worksheets("Vergleichsliste").Range("g3:g60")
Set Typ2 = ThisWorkbook.Worksheets("Vorgaenge").Range("d4:j4")
For Each Zelle2 In Typ2
If Zelle2.Value = ThisWorkbook.Worksheets("Vergleichsliste").Cells(1, 7).Value Then 'hier  _
steht die Vorgangsnummer drin
For Each Zelle1 In Typ1
If Zelle1.Value = ThisWorkbook.Worksheets("Vorgaenge").Cells(4, 4).Value And Zelle1. _
Value  ThisWorkbook.Worksheets("Vergleichsliste").Cells(1, 7).Value Then
Typ1.Cells(Zelle1.Row - 4, 2) = Typ1.Cells(Zelle1.Row - 4, 2) + 1
End If
If Zelle1.Value = ThisWorkbook.Worksheets("Vorgaenge").Cells(4, 5).Value And Zelle1. _
Value  ThisWorkbook.Worksheets("Vergleichsliste").Cells(1, 7).Value Then
Typ1.Cells(Zelle1.Row - 4, 2) = Typ1.Cells(Zelle1.Row - 4, 2) + 1
End If
If Zelle1.Value = ThisWorkbook.Worksheets("Vorgaenge").Cells(4, 6).Value And Zelle1. _
Value  ThisWorkbook.Worksheets("Vergleichsliste").Cells(1, 7).Value Then
Typ1.Cells(Zelle1.Row - 4, 2) = Typ1.Cells(Zelle1.Row - 4, 2) + 1
End If
If Zelle1.Value = ThisWorkbook.Worksheets("Vorgaenge").Cells(4, 7).Value And Zelle1. _
Value  ThisWorkbook.Worksheets("Vergleichsliste").Cells(1, 7).Value Then
Typ1.Cells(Zelle1.Row - 4, 2) = Typ1.Cells(Zelle1.Row - 4, 2) + 1
End If
If Zelle1.Value = ThisWorkbook.Worksheets("Vorgaenge").Cells(4, 8).Value And Zelle1. _
Value  ThisWorkbook.Worksheets("Vergleichsliste").Cells(1, 7).Value Then
Typ1.Cells(Zelle1.Row - 4, 2) = Typ1.Cells(Zelle1.Row - 4, 2) + 1
End If
If Zelle1.Value = ThisWorkbook.Worksheets("Vorgaenge").Cells(4, 9).Value And Zelle1. _
Value  ThisWorkbook.Worksheets("Vergleichsliste").Cells(1, 7).Value Then
Typ1.Cells(Zelle1.Row - 4, 2) = Typ1.Cells(Zelle1.Row - 4, 2) + 1
End If
Next
End If
Next
End Sub
Funktionieren tut die super für das eine Spaltenpaar aber ich bekomme das in keine vernünftige Schleife für alle Spaltenpaare ab G. Hast du da eine Idee?
Danke schonmal im Voraus.
Gruß
Marc
Anzeige
AW: Schleife zum sortiern
09.05.2019 12:43:07
Werner
Hallo Marc,
sorry, aber im Moment verstehe ich nur Bahnhof.
Du willst zählen wie oft Werte aus einem bestimmten Bereich in verschiedenen Spalten vorkommen?
Mach doch mal eine kleine Beispielmappe mit ein paar Beispieldaten und zeig dort auf, wie dein Ergebnis aussehen soll und lade die Mappe hier hoch.
Gruß Werner
AW: Schleife zum sortiern
09.05.2019 13:11:40
Schmidt
Alles gut. Habe es doch selber hinbekommen. Sieht auch sehr gut aus und ist nicht mehr so lang.
Trotzdem danke, dass ich dich für mich auf den Bahnhof begeben hast.
;o)
Gruß
Marc
Gerne u. Danke für die Rückmeldung. o.w.T.
09.05.2019 13:55:19
Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige