Suche, finde und gebe in eine bestimmte Zelle aus

Hallo gemeinsam,

ich versuche seit einiger Zeit eine Suchfunktion in Excel zusammenzustellen aber irgendwie tut sich nichts auf mein Tabellenblatt :frowning:

Kurz zusammengefasst habe ich ein Tabellenblatt („Tabelle2“) wo zwei Spalten (A und B) über 4.000 Einträge haben. In A sind Zahlen und in B sind die dazugehörige Bezeichnungen aufgelistet.

Jetzt will ich in einem anderen Tabellenblatt („Tabelle1“) in der Zelle A2 eine der Nummern (aus „Tabelle2“ Spalte A) eingeben und durch start des Makros soll er mir in A3 den Namen, denn er sich aus „Tabelle2“ Spalte B gezogen hat, ausgeben.

Eigentlich ein ganz einfache Aufgabe, nur bei mir will es nicht klappen. Ich würde es gern mit VB machen, da mit der Excel-Formel es seeeehr lange dauert.

Das habe ich zusammengebastelt:

Sub Suche()
 x = Cells(Rows.Count, 1).End(xlUp).Row

 For i = 1 To x
 Dim a As Variant

 Set Wks1 = Sheets("Tabelle1")
 Set Wks2 = Sheets("Tabelle2")
 such = Wks1.Range("A2")

 a = 0
 If Wks2.Cells(i, 1) = such Then
 a = Wks2.Cells(i, 2)
 'Wks1.Sheets(1).Cells(i, 1) = a
 Wks1.Range("A3") = a
 End If

 Next
End Sub

Die Nummer gibt es nur einmal, d.h. wenn er sie gefunden hat braucht er nicht zu suchen.

Kann man aus diesem Code-Salat noch was retten?

Vielen Dank im Voraus.

Beste Grüsse,
Dimi

Eigentlich ein ganz einfache Aufgabe, nur bei mir will es
nicht klappen. Ich würde es gern mit VB machen, da mit der
Excel-Formel es seeeehr lange dauert.

Hallo Dimi,

wieso ist SVerweis langsam?

Gruß
Reinhard

Alternative zu SVERWEIS()
Grüezi Dimi

Kurz zusammengefasst habe ich ein Tabellenblatt („Tabelle2“)
wo zwei Spalten (A und B) über 4.000 Einträge haben. In A sind
Zahlen und in B sind die dazugehörige Bezeichnungen
aufgelistet.

Jetzt will ich in einem anderen Tabellenblatt („Tabelle1“) in
der Zelle A2 eine der Nummern (aus „Tabelle2“ Spalte A)
eingeben und durch start des Makros soll er mir in A3 den
Namen, denn er sich aus „Tabelle2“ Spalte B gezogen hat,
ausgeben.

Eigentlich ein ganz einfache Aufgabe, nur bei mir will es
nicht klappen. Ich würde es gern mit VB machen, da mit der
Excel-Formel es seeeehr lange dauert.

Eine fixe Alternative zum SVERWEIS() ist die folgend Kombination:

Tabellenblatt: [Mappe1]!Tabelle1
 │ A │ B │
──┼─────┼───┤
1 │ │ │
──┼─────┼───┤
2 │ 5 │ │
──┼─────┼───┤
3 │ 5AA │ │
──┼─────┼───┤
4 │ │ │
──┴─────┴───┘
Benutzte Formeln:
A3: =INDEX(Tabelle2!$B:blush:B;VERGLEICH(A2;Tabelle2!$A:blush:A;0))

Tabellendarstellung erreicht mit dem Code in FAQ:2363

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Thomas,

vielen Dank für deine Alternative. Überraschenderweise klappt das hervorragend… vorhin mit meinem Versuch hat es wirklich länger gedauert. Ich hatte das Gefühl das er alle 4.000 Einträge durchlaufen hat…

Nun, aber Ende gut - Alles gut… :smiley:

Danke nochmal und viele Grüsse,
Dimi

Grüezi Dimi

vielen Dank für deine Alternative. Überraschenderweise klappt
das hervorragend… vorhin mit meinem Versuch hat es wirklich
länger gedauert. Ich hatte das Gefühl das er alle 4.000
Einträge durchlaufen hat…

Fein, dass es nun klappt - interessant wäre aber dennoch zu wissen, wie deine Formel genau ausgesehen hat und ob die Quelldaten sortiert oder unsortiert vorgelegen haben.

Mit freundlichen GrüssenThomas Ramel- MVP für MS-Excel -