Thema Datum  Von Nutzer Rating
Antwort
Rot Datenliste (Tabelle1) nach meheren Suchkiterien durchsuchen und ganze Zeile Kopieren
02.06.2016 09:53:11 Rafael Stoll
NotSolved
02.06.2016 13:17:28 Gast6905
NotSolved
02.06.2016 13:17:29 Gast46272
NotSolved
02.06.2016 13:47:08 Gast11778
NotSolved
02.06.2016 14:04:24 Rafael Stoll
NotSolved
02.06.2016 14:08:40 Gast46900
NotSolved
02.06.2016 14:32:12 Rafael Stoll
NotSolved

Ansicht des Beitrags:
Von:
Rafael Stoll
Datum:
02.06.2016 09:53:11
Views:
1156
Rating: Antwort:
  Ja
Thema:
Datenliste (Tabelle1) nach meheren Suchkiterien durchsuchen und ganze Zeile Kopieren

Hallo zusammen,

ich bin Anfänger und habe schon versucht die antwort im Forum zu finden, leider bisher erfolglos.

Ich habe in einer Tabelle eine große Datenliste die ich nach Ortsnamen durchsuchen möchte. Da es sich um Ortsnamen die einer Verbandsgemeinde zugeortnet werden, können es auch mal >70 Orte sein nach denen die Daten durchsucht werden sollen. Diese sind in einem zweiten Tabellenblatt aufgelistet (Verbandsgemeinde und in der Spalte die Ortsnamen).

Ziel soll es sein über einen Butten die jeweilige Verbandsgemeinde auszuwählen (Liste mit Ortsnamen= Suchkiterien) und eine Tabelle mit den gefundenen Daten zu erstellen (komplette Zeile zum gefundenen Suchkiterium muss kopiert werden).

Aktuelle wird dies noch mit einer Inputbox durchgeführt aber ich schaffe es nicht nach mehreren Suchkiterien zu Suchen.

Ich hoffe jemand kann mir helfen.

Anbei der Quellcode nach aktuellem Stand:

Option Explicit
 
Sub SuchkiteriumOrt()
Dim rng As Range
Dim Suchbegriff As String
Dim Antwort As String
Dim wksOrig As Worksheet
Dim rngNeueZelle As Range
Dim Suchliste As Variant
Dim Token As Variant
Dim XO As Boolean

XO = True

 
' Auschalten der Bildschirmaktualisierung
Application.ScreenUpdating = False
 
' Abfrage des Suchwortes in der aktuellen Tabelle
Suchbegriff = InputBox("Bitte Suchbegriff eingeben:")
Suchliste = Split(Suchbegriff, ",")
 
' Wenn kein Suchbegriff eingegeben wurde = Fehlermeldung
If Suchbegriff = "" Then
  Beep
  MsgBox "Bitte einen Suchbegriff eingeben!", , Application.UserName
  Exit Sub
End If
 
' Suchroutine
Set rng = Cells.Find(what:=Suchliste, LookAt:=xlWhole, LookIn:=xlValues, SearchOrder:=xlByRows, _
  MatchCase:=True, After:=Range("A1"))     ' Activecell halte ich für nicht optimal

 
' Wenn Suchbegriff nicht in Tabelle = Fehlermeldung
If rng Is Nothing Then
  Beep
  MsgBox "Suchbegriff nicht gefunden!", , Application.UserName
  Exit Sub
End If
 
' Suchbegriff inklusive der kompletten Zeile kopieren und in neue Tabelle mit Namen des Suchbegriffs einfügen
If XO = True Then
Set wksOrig = ActiveSheet
Antwort = rng.Address
Rows(rng.Row).Copy
Sheets.Add
ActiveSheet.Name = Suchbegriff
Set rngNeueZelle = Sheets(Suchbegriff).Range("A1")
rngNeueZelle.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Rows(rngNeueZelle.Row).Insert Shift:=xlDown
End If

' Weitersuchen in der aktiven Tabelle nach dem Suchbegriff und wenn gefunden, in Tabelle mit Namen Suchbegriff einfügen
wksOrig.Activate
Cells.FindNext(After:=rng).Activate
While ActiveCell.Address <> rng.Address
  Rows(ActiveCell.Row).Copy
  Sheets(Suchbegriff).Activate
  Rows("1:1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  Rows("1:1").Insert Shift:=xlDown
  wksOrig.Activate
  Cells.FindNext(After:=ActiveCell).Activate
Wend

XO = False

For Each Token In Suchliste
Set rng = Cells.Find(what:=Token, LookAt:=xlWhole, LookIn:=xlValues, SearchOrder:=xlByRows, _
  MatchCase:=True, After:=Range("A1"))     ' Activecell halte ich für nicht optimal
  
If Token <> "" Then

' Weitersuchen in der aktiven Tabelle nach dem Suchbegriff und wenn gefunden, in Tabelle mit Namen Suchbegriff einfügen
wksOrig.Activate
Cells.FindNext(After:=rng).Activate
While ActiveCell.Address <> rng.Address
  Rows(ActiveCell.Row).Copy
  Sheets(Suchbegriff).Activate
  Rows("1:1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  Rows("1:1").Insert Shift:=xlDown
  wksOrig.Activate
  Cells.FindNext(After:=ActiveCell).Activate
Wend
End If


Next

' Einschalten der Bildschirmaktualisierung
Application.ScreenUpdating = True
End Sub

 

Gruß Rafael


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Datenliste (Tabelle1) nach meheren Suchkiterien durchsuchen und ganze Zeile Kopieren
02.06.2016 09:53:11 Rafael Stoll
NotSolved
02.06.2016 13:17:28 Gast6905
NotSolved
02.06.2016 13:17:29 Gast46272
NotSolved
02.06.2016 13:47:08 Gast11778
NotSolved
02.06.2016 14:04:24 Rafael Stoll
NotSolved
02.06.2016 14:08:40 Gast46900
NotSolved
02.06.2016 14:32:12 Rafael Stoll
NotSolved