poopie1971
Goto Top

Zelleninhalt suchen und den Inhalt von 2 Spalten daneben ausgeben

Hallo Zusammen,
ich habe ein Problem. Ich möchte gerne in Excel mit einem Makro in einer Tabellenspalte nach einem Wort (einer beruflichen Tätigkeit) suchen, welches in mehreren Zeilen vorkommen kann. Wenn da Wort gefunden wurde, dann soll der Zelleninhalt von den beiden danebenliegenden Zellen (Name und Vorname) in einem neuen Tabellenblatt ausgegeben werden und dann weitergesucht werden bis zum Ende des Tabellenblattes. Im neuen Tabellenblatt soll alles in Zeilen untereinander angeordnet werden, selbstverständlich ohne Freizeilen. Eigentlich ist es ein Filtern, allerdings soll das ganze ohne Filter sondern per Makro angewendet werden.
Der Suchbegriff soll über eine Messagebox vorher abgefragt werden.

Kann mir hier jemand helfen?

Danke und viele Grüße vom Poopie

Content-Key: 201490

Url: https://administrator.de/contentid/201490

Printed on: April 18, 2024 at 23:04 o'clock

Member: Pjordorf
Pjordorf Feb 09, 2013 at 14:54:59 (UTC)
Goto Top
Hallo,

Zitat von @poopie1971:
allerdings soll das ganze ohne Filter sondern per Makro angewendet werden.
OK. Wie weit bist du denn? Wo im VBA Code steckst du fest bzw. kommst du nicht weiter? Den Code hier mit Coda Tags posten.

Gruß,
Peter
Member: poopie1971
poopie1971 Feb 09, 2013 at 15:21:03 (UTC)
Goto Top
Ich habe noch garnicht angefangen weil ich nicht weiß was da zu tun ist.
Ein Beispiel Code wäre nicht verkehrt.
Member: bastla
bastla Feb 09, 2013 at 18:20:47 (UTC)
Goto Top
Hallo poopie1971!

Etwa so:
Sub Filtern()
Quelle = "Tabelle1" 'Name der Tabelle mit den Quelldaten  
QSpalte = "B" 'Spalte, in welcher gesucht wird  
Spaltenanzahl = 2 'Anzahl daneben liegender Spalten, aus denen die Inhalte in die Zieldatei übertragen werden sollen  

Ziel = "Tabelle2" '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(Quelle)
Set Z = Worksheets(Ziel)
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
Das "Drumherum" (zB vorweg Zieltabelle löschen, Spaltenüberschriften, etc) überlasse ich Dir ...

Grüße
bastla

P.S.: Ich hoffe es ist ok, dass ich für die Eingabe keine Messagebox verwendet habe ... face-wink
Member: poopie1971
poopie1971 Feb 10, 2013 at 19:32:28 (UTC)
Goto Top
Hallo bastla,
Dein Tip war perfekt. Ich habe ihn noch etwas modifiziert.

Danke vielmals.
Grüße
Poopie