Worksheet.Match funktioniert nicht wie gewünscht

Bild

Betrifft: Worksheet.Match funktioniert nicht wie gewünscht
von: Uppe
Geschrieben am: 04.08.2015 15:57:55

Hallo Experten,
ich bin ratlos.
Ich habe eine Excelliste, in der in Spalte B alphabetisch sortierte Namen stehen (die verschiedenen Anfangsbuchstaben sind durch Leerzeichen getrennt)
Adam
Anton
Berta
Bruno
Charlie
...
In einer weiteren Liste stehen unsortierte Namen, die in die erste Liste eingefügt werden sollen.
Ich habe dazu ein kleines Programm geschrieben.
Zuerst wird geschaut, ob der Wert evtl. schon drin steht:
lZeile = WorksheetFunction.Match(ThisWorkbook.Worksheets(1).Range("A" & i).Value, wksNamenListe.Range("B:B"), 0))
Das funktioniert. Wenn der Wert nicht gefunden wird, soll nach dem nächstkleineren Wert gesucht werden :
lZeile = WorksheetFunction.Match(ThisWorkbook.Worksheets(1).Range("A" & i).Value, wksNamenListe.Range("B:B"), 1)
Das funktioniert leider nicht. Mir wird immer irgendeine der Leerzeile ausgegeben, egal mit welchem Wert ich teste (auch z.B. mit Agate oder Birgit).
Wo ist mein Denkfehler?
Gruß Uppe

Bild

Betrifft: AW: Dein Denkfehler ist..
von: Daniel
Geschrieben am: 04.08.2015 18:14:47
Hi
eine Liste, die mit Leerzeilen unterteilt ist, ist nicht sortiert.
eine sortierte Liste enthält keine Leerzeilen, weil Leerzeilen beim sortieren ans Listenende wandern.
Gruß Daniel

Bild

Betrifft: Deine Darstellung ist derart missverständlich, ...
von: Luc:-?
Geschrieben am: 05.08.2015 04:27:36
…Uppe,
dass man sie sowohl so wie offenbar Daniel als auch noch ganz anders interpretieren kann. Also wirst du wohl nicht umhin kommen, eine kleine BspDatei hier einzustellen.
Gruß, Luc :-?

Besser informiert mit …

Bild

Betrifft: Fehlende Werte in Bestehende Liste einf.
von: Daniel
Geschrieben am: 05.08.2015 09:19:40
Hi
dein Vorhaben sollte so relativ einfach gelingen:
1. kopiere alle Namen von der "weiteren" Liste unter die Namen der "sortierten" Liste
2. Wende auf die ganze Spalte in der "sortierten" Liste nacheinander die Funktionen an:
- DATEN - DATENTOOLS - DUPLIKATE ENTFERNEN
- DATEN - SORTIEREN
damit sind aber deine Zwischen-Leerzeilen verschwunden.
um die wiederherzustellen kannst du folgendes machen:
1. in Spalte C der "sortierten" Liste den Anfangsbuchstabgen extrahieren mit: =Links(B1;1)
2. die Spalte C kopieren und am unteren Ende nochmal anfügen
3. im neu angefügten Zellbereich das Duplikate-entfernen ausführen
4. die gesamte Tabelle nach Spalte C sortieren
sieht als Code dann so aus:

ThisWorkbook.Worsheets(1).Columns(1).SpecialCells(xlcelltypeconstants, 2).Copy
With wksNamenListe
    .Activate
    '--- Namen einfügen, Duplikate Entfernen und Sortieren
    .Cells(.Rows.count, 2).End(xlup).offset(1, 0).PasteSpecial xlpasteall
    .columns(2).RemoveDuplicates 1, xlno
    .Columns(2).Sort Key1:=.cells(1, 2), order1:=xlascending, Header:=xlguess
    
    '--- Leerzeilen zwischen Anfangsbuchstabengruppen hinzufügen
    with .Cells(.Rows.count, 2).end(xlup)
        with range(.Offset(1 - .Row, 1), .offset(0, -1))
            .FormulaR1C1 = "=Left(RC2,1)"
            .Copy
        End with
        .Offset(1, 1).PasteSpecial xlpastevalues
        Selection.Removeduplicates 1, xlno
    End with
    .Range("B:C").Sort Key1:=.Cells(1, 3), order1:=xlascending, Header:=xlguess
    .Columns(3).ClearContents
End with
Gruß Daniel
ps. nicht getestet, da ich deine Datei nicht nachbaue

Bild

Betrifft: Danke!
von: Uppe
Geschrieben am: 05.08.2015 13:10:20
Vielen Dank für eure Hinweise. Mir war nicht bewusst, dass MATCH Probleme mit den Leerzeilen hat.
Ich habe es jetzt so geschrieben: Leerzeilen entfernen, MATCH, Leerzeilen einfügen
Gruß Uppe

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Excel Formel Sparen"