1.8k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

hab da ein aufwendigeres Problem.

Und zwar möchte ich in einem Tabellenblatt mit einem Suchbegriff in einer Spalte alle exakten Treffer automatisch kopieren und in einem anderen Tabellenblatt unter dem Suchbegriff alle Zeilen auflisten lassen. (Zeilen sollen automatisch nach unten verschoben werden, da ich zuvor nicht weiß, wieviele Treffer es gibt.) Jedoch habe ich nicht nur einen Suchbegriff, sondern mehrere in einer Spalte untereinander, die auf den gleiche Bezugsspalte im anderen Tabellenblatt zugreifen.

mit Verweisen, Summewenn, Spezialfiltern hab ich es bereits versucht. Die Funktionen von Excel geben aber nur einen Wert als Ergebnis aus.

6 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi charlie brown ^^

tab 1 spalte a suchbegriffe ab zeile 2 nehme ich an

suchbereich ?

ausgabe welche worksheet ?

gruss nighty
0 Punkte
Beantwortet von
Hallo nighty,

der/die Suchbegriffe liegen in Tab. Blatt 1 Spalte A. Das Ergebnisfeld liegt jeweils unter dem Suchbergriff in der/den Zeilen, abhängig von der Anzahl der gefundenen Treffer. Der Suchbereich liegt in Tab. Blatt 2 in Spalte A. Die Zeile mit dem übereinstimmenden Argument soll kopiert werden und in Tab. Blatt 1 unter dem Argument in einer neuen Zeile eingefügt werden.

Ich versuche es jetzt mal mit einem Schleifen Makros.

Gruß avd
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi avd ^^

hier mal ein anfang :-)

suchkreterium ist hier die 1 bzw durch zelle ersetzen

gruss nighty

Option Explicit

Sub FilterKopieren()
With Worksheets("Tabelle2")
.Range("A1").AutoFilter Field:=1, Criteria1:=1
.Rows("2:" & .UsedRange.SpecialCells(xlCellTypeLastCell).Row).Copy Worksheets("Tabelle1").Range("A" & Worksheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1)
.Range("A1").AutoFilter
End With
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi avd ^^

oder vielleicht so :-))

vorher

suchbegriff1
suchbegriff2
suchbegriff3

nachher

suchbegriff1
fund1
fund2
suchbegriff2
fund1

etc.

das wuerde aber die ursprungsliste loeschen :-))

gruss nighty
0 Punkte
Beantwortet von
Bekomme das Makros nicht zum Laufen. Der Teil
Autofilter im Makros funktioniert, der Rest nicht wirklich.

Die zweite Idee ist nicht schlecht, nur das mit dem Überschreiben wird nachteilig.

Gruß
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi charlie brown ^^

vielleicht so :-)

gruss nighty

Tabelle1 spalte a suchbegriffe ab zeile 2
Tabelle2 flexibler suchbereich ab zeile 2
Tabelle3 ausgabe

Option Explicit

Sub DatenSuchen()
Dim SpaltenAnz As Long, QuellAnz As Long, ZeilenAnz As Long
Dim Wks1Lzeile As Long, Wks2Lzeile As Long, Wks2Lspalte As Long
Dim Zindex As Long
Worksheets("Tabelle1").Activate
Wks1Lzeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
ReDim WksSuchDat(1 To Wks1Lzeile, 1 To 1) As Variant
WksSuchDat() = Range(Cells(1, 1), Cells(Wks1Lzeile, 1))
Worksheets("Tabelle2").Activate
Wks2Lzeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Wks2Lspalte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
ReDim WksQuelle(1 To Wks2Lzeile, 1 To Wks2Lspalte) As Variant
ReDim WksNeu(1 To Wks2Lzeile, 1 To Wks2Lspalte) As Variant
WksQuelle() = Range(Cells(1, 1), Cells(Wks2Lzeile, Wks2Lspalte))
Worksheets("Tabelle3").Activate
For ZeilenAnz = 2 To Wks1Lzeile
For QuellAnz = 2 To Wks2Lzeile
If WksSuchDat(ZeilenAnz, 1) = WksQuelle(QuellAnz, 1) Then
Zindex = Zindex + 1
For SpaltenAnz = 1 To Wks2Lspalte
WksNeu(Zindex, SpaltenAnz) = WksQuelle(QuellAnz, SpaltenAnz)
Next SpaltenAnz
End If
Next QuellAnz
Next ZeilenAnz
Range(Cells(2, 1), Cells(Wks2Lzeile + 1, Wks2Lspalte)).Resize(UBound(WksNeu())) = WksNeu()
End Sub
...