Frage von STPDMNKY, 21

wie vereinfache ich die suche nach bestimmten angaben in Excel?

Hallo zusammen,

Ich muss z.Zt. knapp 250 Excel tabellen nach 4 bestimmten Seriennumern absuchen. Bislang habe ich das mit Strg+F, also der einfachsten suchmethode gemacht, dies ist aber meines erachtens nach sehr zeitaufwändig. Die excel tabellen sind alle gleich aufgebaut: Item No, Serial No, Order NO, QTY

Demnach möchte ich rausfinden, ob Seriennumer XYZ in Spalte B irgendwo auftaucht am besten sogar wo. Ich habe das schon mit dem SVERWEIS versucht, gebe den Befehl aber wohl falsch ein o.ä.

Perfekt wäre es natürlich wenn ich den befehl mir per Copy Paste in jedes Excel Dokument übertragen könnte und so quasi nach allen angefragten Seriennumern gleichzeitig suchen kann. Ich hoffe hier weiß jemand Rat.

Expertenantwort
von Ninombre, Community-Experte für Excel, 21

Die Zeilennummer liefert Dir

=VERGLEICH("XYZ";B:B;0)

Du suchst aber nach verschiedenen Nummern, oder?

Liegen die Dateien alle in einem Verzeichnis? Bei dieser Anzahl macht eine Makrolösung schon Sinn


Kommentar von Ninombre ,

wenn die Dateien alle in einem Verzeichnis stehen und immer im Tabellenblatt 1 die Spalte B durchsucht werden soll, geht es recht einfach:

Die Variante zum Durchsuchen des Ordners kann man von hier übernehmen:

http://www.herber.de/forum/archiv/760to764/763292_Per_VBA_Dateien_aus_einem_Ordn...

Dann noch die Verweisfunktion als VBA und das sollte schon genügen:

Sub suchmich() 
strpath = "c:\users\hugo\desktop\test\" 'Pfad des Verzeichnisses anpassen
strExt = "*.xlsx" 'Dateiextension ggf. anpassen
Dim strFile As String
Dim i As Long
i = 2
If strpath = "" Then
Exit Sub
Else
strFile = Dir(strpath & strExt)
Do While Len(strFile) > 0
Workbooks.Open Filename:=strpath & strFile
Cells(i, 1).Value = strFile
On Error Resume Next
Cells(i, 2).Value = WorksheetFunction.Match(Range("B1").Value, ActiveWorkbook.Sheets(1).Range("B:B"), 0)
Cells(i, 3).Value = WorksheetFunction.Match(Range("C1").Value, ActiveWorkbook.Sheets(1).Range("B:B"), 0)
Workbooks(strFile).Close
strFile = Dir()
i = i + 1
Loop
End If
End Sub

Das Makro kommt in eine neue Datei.
Schreib in B1 die erste Seriennummer, in C1 die zweite. Wenn Du noch weitere benötigst, kannst die kursive Zeile kopieren und die fett gedruckten Werte erhöhen, also 4 (4. Spalte) und D1

Das Makro geht die Exceldateien in dem Ordner durch (dort sollte Deine neue Datei mit dem Makro NICHT drin sein) und schreibt den Dateinamen und die Zeilennummer je Seriennummer, wenn sie denn gefunden wird.

Wichtig aber noch, dass meine Annahmen stimmen und immer die Tabelle1 durchsucht wird. Man kann das noch erweitern, wenn notwendig.

Keine passende Antwort gefunden?

Fragen Sie die Community