Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1856to1860
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

Sortieren via Hilfsspalte

Sortieren via Hilfsspalte
26.11.2021 00:23:53
Daniel
Guten Abend zusammen,
in einem Arbeitsprojekt sind eine Liste von Mitarbeitern in Spalte K mit zugehörigen EMail Adressen in Spalte L enthalten. Den Namen sind die Anreden Hr. und Fr. vorangestellt. Standarmäßig sortiet Excel nur nach Hr. und Fr., was sinnlos ist. Die Prozedur, um die Namen ohne Anrede in eine Hilfsspalte M zu exportieren, ist mir gelungen. Nur beim Sortieren der Range K4:L nach Key M fängt er viel weiter oben an und bezieht auch die Daten in den Spalten A bis J ein ... die Spalten nach M bleiben alle intakt; aber wieso? EIne Fehlermeldung vom Skript kommt nicht - was ja schonmal ein Anfang ist. Mein Ziel ist es, dass ausschließlich die Spalten K+L nach M sortiert bis zur letzen Zeile mit Daten sortiert werden.
Bitte um Hilfe und Anregungen.
Freundliche Grüße
Daniel Jäger

Sub StringFiltern()
Dim arr(1 To 100)
Dim iCounter As Integer
Dim sTxt As String
For iCounter = 1 To 100
'11 = Spalte K
sTxt = Cells(iCounter, 11).Value
If InStr(sTxt, "Hr. ") Or InStr(sTxt, "Fr. ") Then
sTxt = Right(sTxt, Len(sTxt) - InStr(sTxt, " "))
sTxt = Left(sTxt, 100)
arr(iCounter) = sTxt
End If
Next iCounter
For iCounter = 1 To 100
Cells(iCounter, 13).Value = arr(iCounter)
Next iCounter
With Sheets("Tabelle1")
lngLR = .Cells(.Rows.Count, 1).End(xlUp).Row
.Cells(2, 1).Resize(lngLR - 1, 13).Sort _
Key1:=.Range("M5"), Order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortieren via Hilfsspalte
26.11.2021 06:41:41
ralf_b
was bedeutet " fängt viel weiter oben an" ? Tolle Beschreibung für Jemandem der nicht davor sitzt.
du h0lst dir die letzte benutzte Zelle aus Spalte "A" .Cells(.Rows.Count, 1).End(xlUp).Row Ändere das versuchsweise auf "K"
AW: Sortieren via Hilfsspalte
26.11.2021 07:10:02
GerdL
Moin Daniel,
probier mal mit folgender geändertet Teilprozedur.
Ziel: Sortierung der Spalten K-M mit Überschriften in Zeile 4.

With Sheets("Tabelle1")
lngLR = .Cells(.Rows.Count, 11).End(xlUp).Row
.Cells(4, 11).Resize(lngLR - 3, 3).Sort _
Key1:=.Range("M5"), Order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
Gruß Gerd
Anzeige
AW: Sortieren via Hilfsspalte
26.11.2021 10:55:50
Daniel
Guten Morgen zusammen,
@Gerd: Dein Tipp war Spitze! Die Routine läuft jetzt wie gewünscht, wenngleich alles recht langsam von Statten geht (liegt wohl am 100er i-Counter)
@RPP63 & ralf_B: Entschuldigt die ungenaue Formulierung. Ich werde mich das nächste Mal präziser ausdrücken.
@Peter: Ich habe Deinen Code für die Sortierung ausprobiert; leider kommt die Meldung, dass das Objekt die Methode oder Eigenschaft nicht unterstützt wird. Es interessiert mich natürlich, woran das liegen könnte.
Vielen Dank
Daniel Jäger
AW: Sortieren via Hilfsspalte
26.11.2021 11:22:01
GerdL
Hallo Daniel,
lass mal den iCounter im Variant-Array laufen.

Dim X As Variant
Dim iCounter As Integer
Dim sTxt As String
X = Range("K1:K100").Value
For iCounter = 1 To 100
sTxt = X(iCounter, 1)
If InStr(sTxt, "Hr. ") Or InStr(sTxt, "Fr. ") Then
sTxt = Right(sTxt, Len(sTxt) - InStr(sTxt, " "))
sTxt = Left(sTxt, 100)
X(iCounter, 1) = sTxt
End If
Next iCounter
Range("M1:M100") = X
Gruß Gerd
Anzeige
AW: Sortieren via Hilfsspalte
26.11.2021 11:32:43
peterk
Hallo Daniel
Hab einen Punkt vergessen

Statt
.Sort.SortFields.Add2 Key:=Range(
mit .Range
.Sort.SortFields.Add2 Key:=.Range(
Peter
AW: Sortieren via Hilfsspalte
26.11.2021 12:11:26
Daniel
@ Peter: ... mmh, meckert immer noch das gleiche Problem. (das hier ist das Thema, was ich bereits bei unserem letzten Austausch zum Projekt Testzentrale am Ende angeschnitten habe; nur dass ich die Hilfsspalte nicht mehr zwischen Namen und Emails setze, sondern dahinter.
@Gerd: Der andere i-Counter läuft jetzt in angemessen flottem Tempo (und nicht wie auf einem 486er DX2 ;-) Danke! Das sind Kniffe, wo ich die Logik begreife, aber noch nicht das Vokabular in VBA besitze.
Liebe Grüße
Daniel Jäger
Anzeige
Bei gegebenem Excel 365 …
26.11.2021 07:19:08
RPP63
… würde ich ja mit =SORTIEREN() arbeiten.
Ich bin aber auch der Meinung, dass die Threaderöffnung zu schwammig formuliert wurde.
Gibt es eine Beispieldatei?
Gruß Ralf
AW: Sortieren via Hilfsspalte
26.11.2021 10:34:29
peterk
Hallo Daniel
Bezugnehmend auf Deine Beispielmappe

With Worksheets("Bibliothek")
.Sort.SortFields.Add2 Key:=Range( _
"L4:L100"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SetRange .Range("K4:M100")
.Sort.Header = xlNo
.Sort.MatchCase = False
.Sort.Orientation = xlTopToBottom
.Sort.SortMethod = xlPinYin
.Sort.Apply
End With
Peter
Anzeige
AW: Sortieren via Hilfsspalte
27.11.2021 09:57:40
Oberschlumpf
Hi Daniel
und per Upload eine Bsp-Datei mit Bsp-Daten in den richtigen Spalten zu zeigen, ist für dich wirklich nicht möglich?
Ciao
Thorsten
AW: Sortieren via Hilfsspalte
29.11.2021 08:58:50
Daniel
Hallo Thorsten,
das Problem konnte ich mit der Forenkompetenz bereits am vergangenen Freitag lösen. Auskommentiert sind noch ein paar Zeilen zu einer zweiten Sortiervariante, die aber noch nicht richtig klappt. Dazu stehe ich mit Peter hier weiter im Austausch. Anbei die Datei mit der flotten Array-Variante: https://www.herber.de/bbs/user/149448.xlsm (schlanke Version; das gesamte Projekt umfasst mehrere Reiter, die die max. Dateigröße überschreitet)
Liebe Grüße
Daniel Jäger
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige