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

In Spalte suchen und dazugehörige Werte ausgeben

In Spalte suchen und dazugehörige Werte ausgeben
16.05.2017 12:00:50
Achim
Hallo Gemeinde,
ich suche nach einer schnellen Lösung und wie das dann so ist findet man nichts :(
Ich brauche ein VBA Makro was folgendes machen soll.
In Tabelle1 nach den "Art.-Nr." suchen, welche in Tabelle2 gelistet sind
und dann die dazugehörigen "Bezeichnung" und "Preise" in Tabelle 2 eintragen, welche in Tabelle1 gefunden wurden.
Da es sich um über 20.000 Artiekl handelt, möchte ich es gerne mit VBA lösen.
Userbild
Ich danke euch schon mal für eure Hilfe .

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In Spalte suchen und dazugehörige Werte ausg
16.05.2017 12:34:24
Michael
Hallo!
Dann eine nicht-optimierte, schnelle Lösung:
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim WsQ As Worksheet: Set WsQ = Wb.Worksheets("Tabelle1")
Dim WsZ As Worksheet: Set WsZ = Wb.Worksheets("Tabelle2")
Dim Art As Range, c As Range, List As Range, f As Range
Application.ScreenUpdating = False
Set List = WsQ.Range("A2:A" & WsQ.Cells(WsQ.Rows.Count, 1).End(xlUp).Row)
With WsZ
Set Art = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
For Each c In Art
Set f = List.Find(c.Text, LookIn:=xlValues, lookat:=xlWhole)
c.Offset(, 1).Value = f.Offset(, 1).Value
c.Offset(, 2).Value = f.Offset(, 2).Value
Next c
End With
End Sub
LG
Michael
Anzeige
AW: Mit kleiner Fehler-Prüfung evtl. so...
16.05.2017 12:36:07
Michael
...dann kommt kein Fehler, wenn ein Artikel aus Tab2 NICHT in Tab1 vorkommt...
Sub a()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim WsQ As Worksheet: Set WsQ = Wb.Worksheets("Tabelle1")
Dim WsZ As Worksheet: Set WsZ = Wb.Worksheets("Tabelle2")
Dim Art As Range, c As Range, List As Range, f As Range
Application.ScreenUpdating = False
Set List = WsQ.Range("A2:A" & WsQ.Cells(WsQ.Rows.Count, 1).End(xlUp).Row)
With WsZ
Set Art = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
For Each c In Art
Set f = List.Find(c.Text, LookIn:=xlValues, lookat:=xlWhole)
If Not f Is Nothing Then
c.Offset(, 1).Value = f.Offset(, 1).Value
c.Offset(, 2).Value = f.Offset(, 2).Value
End If
Next c
End With
End Sub
LG
Michael
Anzeige
AW: Mit kleiner Fehler-Prüfung evtl. so...
16.05.2017 12:52:20
Achim
Hallo Michael,
einfach genial... schnell, und für dich wahrscheinlich einfach :-)
Ich möchte mich ganz ganz herzlich bedanken :))
Gern! Danke für die Rückmeldung, LG und owT
16.05.2017 12:59:43
Michael
AW: Gern! Danke für die Rückmeldung, LG und owT
18.05.2017 12:57:00
Achim
..Ups, jetzt haben wir doch noch ein Problem :(
Es gibt auch Staffelpreise.
In diesem Fall taucht die Artikel-Nr. mehrmals untereinander auf,
wird aber durch das Makro nur 1x gelesen.
Userbild
Kann man das so machen, die mit berücksichtigt werden ?
AW: Sehr ärgerlich...
18.05.2017 13:14:29
Michae
Achim!
Ups, jetzt haben wir doch noch ein Problem :(
Der Plural ist völlig unangebracht :-p
Warum prüfst Du Deine Anforderungen nicht bevor Du eine Frage einstellst? Dann erhältst Du gleich den passenden Code, und die Helfer (idF ich) müssen keine doppelte Arbeit leisten.
Zu Deiner Frage: WO tauchen die Artikel mehrfach untereinander auf? In der durchsuchten Tabelle1 oder in der zu ergänzenden Tabelle2? Oder in beiden?
Zeig, analog zu Deinem ersten Bild aber als Bsp-Datei(!), nochmals auf wie Tabelle1 und 2 (mit anonymisierten Bsp-Daten) exemplarisch aussehen, und dann schau ich mir das an.
LG
Michael
Anzeige
AW: Gern! Danke für die Rückmeldung, LG und owT
18.05.2017 19:59:40
Achim
Hallo Michael,
Ja sorry, das war mir leider vorher auch nicht bekannt :(
ich bin quasi drüber gestolpert. (schmeißt mit faulen Eiern nach mir, und gebt mir Tiernamen :-()
Und bitte entschuldige noch einmal, das hab ich wirklich vorher nicht bedacht.
Alsoo, ich weiss jetzt auch nicht recht wie man am einfachsten erschlagen könnte,
aber meine Idee bleibt danach bei einem 3. Tabellenblatt hängen, wo das Ergebnis reingeschrieben werden könnte. Achtung!! Die Staffellung könnte auch 4 oder 5-fach sein !!!
Folgende finale Erklärung zum Bild:
Im Bild sieht man links das Tabellenblatt mit allen Daten aus der Datenbank;
In der Mitte sind lediglich die Daten dargestellt, welche ich zum "Suchen" zur Verfügung habe.
Im rechten, das Tabellenblatt mit dem Wunschergebnis.
Userbild
Anzeige
Ergänzt...
19.05.2017 09:17:05
Michael
Hallo!
ich bin quasi drüber gestolpert.
Alles schön und gut - aber warum stellst Du mir dann ein neues Bild ein, statt einer Bsp-Arbeitsmappe? Meinst Du es macht mir mehr Spaß, Dir eine zweite Lösung zu schreiben, wenn ich davor noch die Spiel-Daten manuell nachbauen darf? Denke bei zukünftigen Anfragen im Forum dran, dass es dem Antwortverhalten von Helferinnen zuträglich ist, wenn man deren Job angenehmer gestaltet...
Hier die neue Variante als Bsp-Datei: https://www.herber.de/bbs/user/113686.xlsm
...und hier als Code
Sub b()
Dim Wb As Workbook: Set Wb = ThisWorkbook
Dim WsQuell As Worksheet: Set WsQuell = Wb.Worksheets("Tabelle1")
Dim WsSuch As Worksheet: Set WsSuch = Wb.Worksheets("Tabelle2")
Dim WsZiel As Worksheet: Set WsZiel = Wb.Worksheets("Tabelle3")
Dim aDB, aNr, aCol, i&, j&, k&, l&, m&, n&
Application.ScreenUpdating = False
aDB = WsQuell.Range("A2:D" & _
WsQuell.Cells(WsQuell.Rows.Count, 1).End(xlUp).Row)
aNr = WsSuch.Range("A2:A" & WsSuch.Cells(WsSuch.Rows.Count, 1).End(xlUp).Row)
ReDim aCol(1 To UBound(aDB, 1), 1 To UBound(aDB, 2))
For i = LBound(aNr) To UBound(aNr)
For j = LBound(aDB) To UBound(aDB)
If aNr(i, 1) = aDB(j, 1) Then
l = l + 1
For k = 1 To UBound(aDB, 2)
aCol(l, k) = aDB(j, k)
Next k
End If
Next j
Next i
With WsZiel
For m = 1 To l
For n = 1 To UBound(aCol, 2)
.Cells(m, n) = aCol(m, n)
Next n
Next m
End With
Erase aDB: Erase aNr: Erase aCol
Set Wb = Nothing
Set WsQuell = Nothing
Set WsSuch = Nothing
Set WsZiel = Nothing
End Sub
Rückmeldung äußerst erwünscht!!!
LG
Michael
Anzeige
Und, klappt/passt? Gib Bescheid, owT
22.05.2017 10:47:15
Michael

325 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige