Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1440to1444
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

Worksheet.Match funktioniert nicht wie gewünscht

Worksheet.Match funktioniert nicht wie gewünscht
04.08.2015 15:57:55
Uppe
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

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

Betreff
Datum
Anwender
Anzeige
AW: Dein Denkfehler ist..
04.08.2015 18:14:47
Daniel
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

Deine Darstellung ist derart missverständlich, ...
05.08.2015 04:27:36
Luc:-?
…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 …

Fehlende Werte in Bestehende Liste einf.
05.08.2015 09:19:40
Daniel
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

Anzeige
Danke!
05.08.2015 13:10:20
Uppe
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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige