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

Spalte durchlaufen - Liste mit Zusatzinfo erzeugen

Spalte durchlaufen - Liste mit Zusatzinfo erzeugen
22.08.2018 15:38:43
Arnd-Olav
Liebe Excel-Freunde,
Ich habe das folgende Arbeitsblatt:
https://www.herber.de/bbs/user/123495.xlsm
Leider habe ich von Makros noch nicht wirklich viel Ahnung :(
Mit diesem Makro kann ich eine PN eingeben, und das Makro sucht im Sheet "AQPL" nach dem C-Code _ und listet mir auf dem Sheet "Mail" die PN mit den jeweiligen dazugehörigen C-codes auf.

Sub test44()
Quelle = "AQPL" 'Name der Tabelle mit den Quelldaten
QSpalte = "A" 'Spalte, in welcher gesucht wird
Spaltenanzahl = 2 'Anzahl daneben liegender Spalten, aus denen die Inhalte in die Zieldatei ü _
bertragen werden sollen
Ziel = "Mail" 'Tabellenname für gefilterte Daten
AbZZeile = 2 'Eintragen der gefilterten Daten ab dieser Zeile
ZSpalte = "A" 'Eintragen der gefilterten Daten ab dieser Spalte
Do Until Suche  "" 'keine leere Eingabe akzeptieren
Suche = InputBox("Bitte den Suchbegriff eingeben (oder mit Eingabe von 'Ende' abbrechen):",  _
_
_
"Suchbegriff")
Loop
If LCase(Suche) = "ende" Then Exit Sub 'Abbruch
Set Q = Worksheets("AQPL")
Set z = Worksheets("Mail")
ZZeile = AbZZeile 'Startzeile in Zieldatei setzen
With Q.Columns(QSpalte)
Set Gefunden = .Find(Suche, LookIn:=xlValues) 'gesamte Spalte der Quelldatei durchsuchen
If Not Gefunden Is Nothing Then 'nur wenn der Suchbegriff auch gefunden wurde, die  _
folgenden Schritte durchführen
Erste = Gefunden.Address 'erste Fundstelle merken
Do 'für alle Fundstellen
z.Cells(ZZeile, ZSpalte).Resize(1, Spaltenanzahl) = Gefunden.Offset(0, 1).Resize(1,  _
_
_
Spaltenanzahl).Value 'Werte der Nachbarzellen übertragen
ZZeile = ZZeile + 1 'Zeilennummer der Zieltabelle erhöhen
Set Gefunden = .FindNext(Gefunden) 'nächste Fundstelle suchen
Loop Until Gefunden.Address = Erste 'bis wieder erste Fundstelle gefunden wird (= alle   _
_
_
erledigt)
End If
End With
MsgBox "Fertig."
End Sub
Ich versuche nun krampfhaft, dass die Eingabe nicht per InputBox erfolgt, sondern dass sich das Makro aus dem Sheet "Input" (nacheinander) die PNs aus Spalte A zieht, dazu die Quantity und , wie im Makro den C-Code auf Sheet "Mail" packt, und dies solange wiederholt, bis es alle PNs aus dem Sheet "Input" durch hat.
Das Ergebnis müsste für meine Beispieldatei ungefähr so aussehen:
PN 1 10 CC1
PN 1 10 CC3
PN 1 5 CC1
PN 1 5 CC3
Pn 2 20 CC1
Pn 2 20 CC2
Pn 2 20 CC4
PN 3 10 CC2
PN 3 10 CC3
PN 3 10 CC5
PN 3 35 CC2
PN 3 35 CC3
PN 3 35 CC5
PN 4 1 CC2
PN 5 5 CC1
PN 5 5 CC2
PN 5 5 CC3
PN 5 5 CC4
PN 5 5 CC5

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

Betreff
Datum
Anwender
Anzeige
AW: Spalte durchlaufen - Liste mit Zusatzinfo erzeugen
24.08.2018 08:27:33
Werner
Hallo,
da würde ich eher mit dem Autofilter arbeiten und dann das entsprechende Filterergebnis in einem Rutsch kopieren.
Hier mal ein Code, der deine "Suchbegriffe" aus Spalte A in ein Array schreibt und dieses dann an den Autofilter übergibt.
Dabei bin ich davon ausgegangen, dass deine Suchbegriffe im Blatt "Input" in Spalte A, ab A2, eingetragen sind, in A1 eine Überschrift.
Das ist jetzt mal nur das Filtern. Das Kopieren des Filterergebnisses ist da noch nicht drin.
Schau dir mal an, ob das mit dem Filterergebnis dann so passen würde.
Wenn ja, dann kann ich den restlichen Code zum Kopieren des Filterergebnisses noch nachliefern.
Public Sub Filtern()
Dim FilterArray As Variant, raBereich As Range
Dim loLetzte As Long, i As Long
With Worksheets("Input")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
If loLetzte = 1 Then
MsgBox "Es gibt keine Suchbegriffe"
Exit Sub
End If
For i = 2 To loLetzte
If .Cells(i, 1)  "" Then
If FilterArray = "" Then
FilterArray = .Cells(i, 1)
Else
FilterArray = FilterArray & "," & .Cells(i, 1)
End If
End If
Next i
End With
With Worksheets("AQPL")
.Range("$A$1:$C$" & .Cells(.Rows.Count, 1).End(xlUp).Row).AutoFilter Field:=1, _
Criteria1:=Split(FilterArray, ","), Operator:=xlFilterValues
End With
End Sub

Gruß Werner
Anzeige
AW: Spalte durchlaufen - Liste mit Zusatzinfo erzeugen
24.08.2018 08:58:51
Arnd-Olav
Das scheint glaube ich zu funktionieren. Wenn du mir das mit dem kopieren noch basteln könntest, waäre ich dir sehr dankbar. Ich bin der absolute Anfänger. :(
Heute nicht mehr...
24.08.2018 09:12:02
Werner
Hallo,
...dazu möchte ich mir deine Beispielmappe erst an sehen und die kann ich im Moment nicht herunterladen.
Ich denke, dass ich morgen Nachmittag dazu komme.
Gruß Werner
AW: Spalte durchlaufen - Liste mit Zusatzinfo erzeugen
24.08.2018 10:46:02
Werner
Hallo,
hab es jetzt mal gemacht ohne deine Datentstruktur in der Beispielmappe zu kennen. Kannst ja mal testen ob es so passt.
Wobei sich die Frage stellt, ob vor der Ausführung des Makros evtl. vorhandene Daten im Zielblatt gelöscht werden müssen.
Public Sub Filtern_kopieren()
Dim FilterArray As Variant
Dim loLetzte As Long, loLetzte1 As Long, i As Long
Application.ScreenUpdating = False
With Worksheets("Input")
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
If loLetzte = 1 Then
MsgBox "Es gibt keine Suchbegriffe"
Exit Sub
End If
For i = 2 To loLetzte
If .Cells(i, 1)  "" Then
If FilterArray = "" Then
FilterArray = .Cells(i, 1)
Else
FilterArray = FilterArray & "," & .Cells(i, 1)
End If
End If
Next i
End With
With Worksheets("AQPL")
loLetzte1 = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("$A$1:$C$" & loLetzte1).AutoFilter Field:=1, _
Criteria1:=Split(FilterArray, ","), Operator:=xlFilterValues
If .Cells(.Rows.Count, 1).End(xlUp).Row > 1 Then
With .AutoFilter.Range
.Resize(.Rows.Count - 1).Offset(1, 0).Copy _
Worksheets("Mail").Cells(2, 1)
End With
Else
MsgBox "Kein Treffer im Blatt ""AQPL"""
End If
If .AutoFilterMode Then .AutoFilterMode = False
End With
Application.ScreenUpdating = True
End Sub
Gruß Werner
Anzeige
AW: Spalte durchlaufen - Liste mit Zusatzinfo erzeugen
27.08.2018 09:39:38
Arnd-Olav
Vielen Dank Werner.
Das funktioniert einwandfei :D
Jetztwerde ich für den Lerneffekt versuchen das Makro zu verstehen.
Und meine letzte Frage wäre, wie könnte ich zusätzliche Spalten mit in das "Mail" Worksheet kriegen? Also aus dem Beispiel z.B. die quantity?
Als absoluter Makroanfänger würde ich mir im ersten Gedanken einen Schlüssel bauen und dann wieder mit SVERWESI um die Ecke kommen :(
AW: Spalte durchlaufen - Liste mit Zusatzinfo erzeugen
27.08.2018 09:52:48
Werner
Hallo,
ich habe keine Ahnung von was du sprichst. In deiner Beispielmappe holst du die Daten aus dem Blatt AQPL ins Blatt Mail.
Im Blatt AQPL gibt es keine Spalte quantitiy.
Gruß Werner
Anzeige
AW: Spalte durchlaufen - Liste mit Zusatzinfo erzeugen
27.08.2018 10:13:03
Arnd-Olav
Du hast recht. Aus der Mappe AQPL benötige ich nur den bereits gesuchten Datensatz. Meine Frage ist, wie ich zusätzlcieh Spalten aus der Mapp "Input" mit übertragen könnte.
AW: Spalte durchlaufen - Liste mit Zusatzinfo erzeugen
27.08.2018 10:40:50
Werner
Hallo,
so ist das nur gestochere im Nebel.
Mach mal anhand deiner bereits hochgeladenen Beispielmappe und dem Ergebnis das du mit meinem Makro bekommst eine weitere Beispielmappe in der du dein Wunschergebnis im Blatt Mail händisch einträgst. Dieses Beispiel dann hier hochladen.
Aber bitte nicht nur eine zusätzliche Spalte im Blatt Input - du sprichst nämlich von Spalten.
Gruß Werner
AW: Spalte durchlaufen - Liste mit Zusatzinfo erzeugen
27.08.2018 11:23:37
Arnd-Olav
Ich hab die Datei hochgeladen.
Mit dem Makro funktioniert alles was grün ist auf dem Sheet "Mail".
Es fehlen die zusätzlichen blauen Spalten, die im "Input" mit enthalten sind, und wenn eine PN mehrmals vorkommt, aber mit unterschiedlichen QTYs (etc.), dann kopiert er diese noch nicht mit (daher PN 3 und PN 5 blau beim zweiten Auftreten).
Danke dir ;)
https://www.herber.de/bbs/user/123583.xlsm
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige