online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Suki vom 14.06.2022, 14:30 Options

einzelne Wörter herausfiltern - Excel

Hallo zusammen

ich arbeite mit untenstehendem Makro, um von meiner Excel-Tabelle bestimmte Daten in ein separates Tabellenblatt herauszufiltern. Es handelt sich bei den Datensätzen jeweils um ganze Sätze. Jetzt möchte ich aber nicht immer die ganzen Datensätze kopiert haben, sondern nur einzelne Wörter, beispielsweise mit der Buchstabenfolge "ck". Kann mir jemand helfen, das Makro entsprechend abzuändern?

Vielen herzlichen Dank!
Suki




Sub suchen_kopieren()

Application.ScreenUpdating = False
Dim Begriff As String, gefunden As Variant, firstAddress As Variant, _
Zeile As Long
Begriff = InputBox("suche nach:", "Suchbegriff")
If Begriff = "" Then Exit Sub
With Sheets("Tabelle1").Cells
Set gefunden = .Find(Begriff, LookIn:=xlValues)
If Not gefunden Is Nothing Then
firstAddress = gefunden.Address
Do
Zeile = gefunden.Row
Rows(Zeile).Copy
Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial
Set gefunden = .FindNext(gefunden)
Loop While Not gefunden Is Nothing And gefunden.Address <> firstAddress
End If
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub


Antwort schreiben

Antwort 1 von rainberg vom 14.06.2022, 17:28 Options

Hallo Suki,

wenn ich Dich richtig verstanden habe müsste es so funktionieren.

Option Explicit

Sub suchen_kopieren()

Application.ScreenUpdating = False
Dim Begriff As String, gefunden As Variant, firstAddress As Variant
Begriff = InputBox("suche nach:", "Suchbegriff")
If Begriff = "" Then Exit Sub
With Sheets("Tabelle1").Cells
Set gefunden = .Find(Begriff, LookIn:=xlValues)
If Not gefunden Is Nothing Then
firstAddress = gefunden.Address
Do
gefunden.Copy
Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial
Set gefunden = .FindNext(gefunden)
Loop While Not gefunden Is Nothing And gefunden.Address <> firstAddress
End If
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub


Gruss
Rainer

Antwort 2 von Suki vom 15.06.2022, 21:36 Options

Vielen Dank für die schnelle Antwort!

Hm, ich habe es probiert, es kopiert aber nicht nur die einzelnen Wörter, sondern immer die ganzen Sätze.

Vielleicht nochmals zur Präzision:

A1: "Er liegt auf der Straße."
A2: "Ich bin müde."
A3: "Gruß und Kuss."

Jetzt hätte ich gerne, dass mir im zweiten Tabellenblatt lediglich einzelne Wörter angezeigt werden, z.B. wenn ich sage, "suche nach "ß", dass mir dann einfach dies angegeben wird:
- Straße
- Gruß

Den Rest des Satzes möchte ich nicht exportieren.

Wäre super, wenn es dazu eine Lösung gäbe! Besten Dank schon im Voraus!

Antwort 3 von rainberg vom 16.06.2022, 07:43 Options

Hallo Suki,

offensichtlich habe ich Deine Frage falsch verstanden.

Ich nahm an Du sprichst von Datensätzen, die sich über mehrere Spalten erstrecken und nur das Datenfeld welches das Suchkriterium enthält soll zurück gegeben werden.

Für das heraus picken eines einzelnen Wortes aus einem Satz, welcher in einer Zelle steht, fällt mir im Moment leider keine Lösung ein.

Hier sind die VBA-Spezialisten gefragt, zu denen ich leider nicht gehöre.

Gruss
Rainer

Antwort 4 von coros vom 18.06.2022, 11:40 Options

Hallo Suki,

nachfolgendes Makro sucht im aktiven Tabellenblatt nach dem eingegebenen Buchstaben und kopiert das Wort, in dem der Buchstabe vorkommt, in das Tabellenblatt "Tabelle2".

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Sub suchen_kopieren()

Application.ScreenUpdating = False
Dim Begriff As String, gefunden As Variant, firstAddress As Variant, _
Zeile As Long

Dim strSuchwort() As String
Dim iSuchwort As Integer
Dim iWortlänge As Integer

Begriff = InputBox("suche nach:", "Suchbegriff")
If Begriff = "" Then Exit Sub
With Sheets("Tabelle1").Cells
    Set gefunden = .Find(Begriff, LookIn:=xlValues)
    If Not gefunden Is Nothing Then
        firstAddress = gefunden.Address
        Do
            'Text aus der gefundenen Zelle in einzelne Wörter aufsplitten
            strSuchwort = Split(Range(gefunden.Address), " ")
            'Alle Wörter der gefundenen Zelle durchsuchen
            For iSuchwort = 0 To UBound(strSuchwort)
                'Abgefragtes Wort Buchstabenweise durchsuchen
                For iWortlänge = 1 To Len(strSuchwort(iSuchwort))
                    'Wenn abgefragter Buchstabe mit dem Suchbegriff übereinstimmt, Wort kopieren
                    If Mid(strSuchwort(iSuchwort), iWortlänge, 1) = Begriff Then
                        Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = _
                            strSuchwort(iSuchwort)
                    End If
                Next
            Next
            Set gefunden = .FindNext(gefunden)
        Loop While Not gefunden Is Nothing And gefunden.Address <> firstAddress
    End If
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub



MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 5 von Suki vom 18.06.2022, 12:52 Options

Lieber Oliver,

wow, vielen vielen herzlichen Dank!!! Das ist genau das, was ich brauche! Das erleichtert mir meine Arbeit ungemein, zumal es sich um rund 2000 Datensätze handelt, in denen ich die entsprechenden Daten von Hand hätte rauskopieren müssen!
Vielen vielen Dank also für deine Mühe, ich weiss sie sehr zu schätzen!

Liebe Grüsse,
Suki

Ähnliche Themen

Zugangsberechtigung für einzelne Spalte (Excel)
lauflist  27.03.2009 - 134 Hits - 1 Antwort

gleiche Wörter erkennen und zählen
jam85385  30.06.2009 - 471 Hits - 8 Antworten

Beim Durchsuchen des Filesystems einzelne Ordner ausschliessen
jojo7  23.11.2009 - 214 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026