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

Suche nach Begriff in Spalte und dann neues Blatt

Suche nach Begriff in Spalte und dann neues Blatt
Chris
Hallo,
ich habe eine relativ große Tabelle und suche nun eine Lösung um einer bestimmten Spalte z.B. "H" einen bestimmten Begriff zu suchen und mir dann alle Zeilen die diesen Begriff beinhalten in einem neuen Fenster angezeigt werden. In dieser Spalte stehen teilweise viele Begriffe mit Komma getrennt in einer Zelle.
Gibts so etwas? Am besten mit nem Button wo man draufklickt und dann den Suchbegriff eingeben kann.
AW: Suche nach Begriff in Spalte und dann neues Blatt
03.06.2010 13:12:40
Josef

Hallo Chris,
probier mal.

' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub SearchAndList()
  Dim objShSrc As Worksheet, objShTarget As Worksheet
  Dim rng As Range, strFirst As String, strSearch As String
  Dim lngRow As Long
  
  strSearch = InputBox("Bitte Suchbegriff eingeben!", "Suche")
  
  lngRow = 3
  
  If strSearch <> "" Then
    Set objShSrc = Sheets("Tabelle1") 'Tabelle in welcher gesucht wird
    Set objShTarget = ThisWorkbook.Worksheets.Add(after:=objShSrc)
    objShTarget.Name = "Search_" & Format(Now, "yymmdd-hhmmss")
    
    Set rng = objShSrc.Columns(8).Find(What:=strSearch, LookIn:=xlValues, LookAt:=xlPart, after:=objShSrc.Cells(Rows.Count, 8))
    If Not rng Is Nothing Then
      strFirst = rng.Address
      objShTarget.Cells(1, 1) = "Die Suche nach '" & strSearch & "' ergab folgende Treffer!"
      Do
        With objShTarget
          .Hyperlinks.Add Anchor:=.Cells(lngRow, 1), _
            Address:="", _
            SubAddress:="'" & objShSrc.Name & "'!" & rng.Address, _
            TextToDisplay:=rng.Address(0, 0)
          lngRow = lngRow + 1
        End With
        Set rng = objShSrc.Columns(8).FindNext(rng)
      Loop While Not rng Is Nothing And strFirst <> rng.Address
    Else
      objShTarget.Cells(1, 1) = "Die Suche nach '" & strSearch & "' ergab keinen Treffer!"
    End If
    
  End If
  
  Set rng = Nothing
  Set objShSrc = Nothing
  Set objShTarget = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Suche nach Begriff in Spalte und dann neues Blatt
03.06.2010 14:02:07
Chris
Hey Sepp, vielen Dank für Deine schnelle Antwort.
Ich habe alles so übernommen, leider zeigt er mir keine Ergebnisse an. Bekomme immer "die Suche nach xxx ergab keine Treffer".
Weiß leider auch nicht wo ich etwas ändern soll. Die Daten stehen in Tabelle1
Liebe Grüße
Chris
AW: Suche nach Begriff in Spalte und dann neues Blatt
03.06.2010 14:09:33
Josef

Hallo Chris,
mein Code sucht in Spalte "H", so wie du es gewünscht hast.
Im neuen Code kannst du die Suchspalte leichter anpassen, siehe Kommentar.

' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub SearchAndList()
  Dim objShSrc As Worksheet, objShTarget As Worksheet
  Dim rng As Range, strFirst As String, strSearch As String
  Dim lngRow As Long, lngSearchColumn As Long
  
  strSearch = InputBox("Bitte Suchbegriff eingeben!", "Suche")
  
  lngRow = 3
  lngSearchColumn = 8 'Spalte in welcher gesucht wird 8 = "H"
  
  If strSearch <> "" Then
    Set objShSrc = Sheets("Tabelle1") 'Tabelle in welcher gesucht wird
    Set objShTarget = ThisWorkbook.Worksheets.Add(after:=objShSrc)
    objShTarget.Name = "Search_" & Format(Now, "yymmdd-hhmmss")
    
    Set rng = objShSrc.Columns(lngSearchColumn).Find(What:=strSearch, LookIn:=xlValues, _
      LookAt:=xlPart, after:=objShSrc.Cells(Rows.Count, lngSearchColumn))
    If Not rng Is Nothing Then
      strFirst = rng.Address
      objShTarget.Cells(1, 1) = "Die Suche nach '" & strSearch & "' ergab folgende Treffer!"
      Do
        With objShTarget
          .Hyperlinks.Add Anchor:=.Cells(lngRow, 1), _
            Address:="", _
            SubAddress:="'" & objShSrc.Name & "'!" & rng.Address, _
            TextToDisplay:=rng.Address(0, 0)
          lngRow = lngRow + 1
        End With
        Set rng = objShSrc.Columns(8).FindNext(rng)
      Loop While Not rng Is Nothing And strFirst <> rng.Address
    Else
      objShTarget.Cells(1, 1) = "Die Suche nach '" & strSearch & "' ergab keinen Treffer!"
    End If
    
  End If
  
  Set rng = Nothing
  Set objShSrc = Nothing
  Set objShTarget = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Suche nach Begriff in Spalte und dann neues Blatt
03.06.2010 14:16:42
Chris
Hui das ging wieder schnell. Noch mal danke.
Wenn ich nun den Begriff "xxx" suche zeigt er mir im neuen Arbeitsblatt nun "H8" an. Gibt es eine Möglichkeit alle Zeilenmit allen Daten in dem der Begriff "xxx" in Spalte "H"auftaucht, im neuen Arbeitsbaltt anzuzeigen?
Vielen Dank für Deine Hilfe Sepp!
Grüße
Chris
AW: Suche nach Begriff in Spalte und dann neues Blatt
03.06.2010 15:14:23
Josef

Hallo Chris,
klar, geht auch.

' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub SearchAndList()
  Dim objShSrc As Worksheet, objShTarget As Worksheet
  Dim rng As Range, strFirst As String, strSearch As String
  Dim lngRow As Long, lngSearchColumn As Long
  
  strSearch = InputBox("Bitte Suchbegriff eingeben!", "Suche")
  
  lngRow = 3
  lngSearchColumn = 8 'Spalte in welcher gesucht wird 8 = "H"
  
  If strSearch <> "" Then
    Set objShSrc = Sheets("Tabelle1") 'Tabelle in welcher gesucht wird
    Set objShTarget = ThisWorkbook.Worksheets.Add(after:=objShSrc)
    objShTarget.Name = "Search_" & Format(Now, "yymmdd-hhmmss")
    
    Set rng = objShSrc.Columns(lngSearchColumn).Find(What:=strSearch, LookIn:=xlValues, _
      LookAt:=xlPart, after:=objShSrc.Cells(Rows.Count, lngSearchColumn))
    If Not rng Is Nothing Then
      strFirst = rng.Address
      objShTarget.Cells(1, 1) = "Die Suche nach '" & strSearch & "' ergab folgende Treffer!"
      Do
        objShTarget.Rows(lngRow).Value = rng.EntireRow.Value
        lngRow = lngRow + 1
        Set rng = objShSrc.Columns(8).FindNext(rng)
      Loop While Not rng Is Nothing And strFirst <> rng.Address
    Else
      objShTarget.Cells(1, 1) = "Die Suche nach '" & strSearch & "' ergab keinen Treffer!"
    End If
    
  End If
  
  Set rng = Nothing
  Set objShSrc = Nothing
  Set objShTarget = Nothing
End Sub

Gruß Sepp

Anzeige
kleine Korrektur!
03.06.2010 17:50:35
Josef

Hallo Chris,
da war noch ein kleiner Fehler drinn.

' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub SearchAndList()
  Dim objShSrc As Worksheet, objShTarget As Worksheet
  Dim rng As Range, strFirst As String, strSearch As String
  Dim lngRow As Long, lngSearchColumn As Long
  
  strSearch = InputBox("Bitte Suchbegriff eingeben!", "Suche")
  
  lngRow = 3
  lngSearchColumn = 8 'Spalte in welcher gesucht wird 8 = "H"
  
  If strSearch <> "" Then
    Set objShSrc = Sheets("Tabelle1") 'Tabelle in welcher gesucht wird
    Set objShTarget = ThisWorkbook.Worksheets.Add(after:=objShSrc)
    objShTarget.Name = "Search_" & Format(Now, "yymmdd-hhmmss")
    
    Set rng = objShSrc.Columns(lngSearchColumn).Find(What:=strSearch, LookIn:=xlValues, _
      LookAt:=xlPart, after:=objShSrc.Cells(Rows.Count, lngSearchColumn))
    If Not rng Is Nothing Then
      strFirst = rng.Address
      objShTarget.Cells(1, 1) = "Die Suche nach '" & strSearch & "' ergab folgende Treffer!"
      Do
        objShTarget.Rows(lngRow).Value = rng.EntireRow.Value
        lngRow = lngRow + 1
        Set rng = objShSrc.Columns(lngSearchColumn).FindNext(rng)
      Loop While Not rng Is Nothing And strFirst <> rng.Address
    Else
      objShTarget.Cells(1, 1) = "Die Suche nach '" & strSearch & "' ergab keinen Treffer!"
    End If
    
  End If
  
  Set rng = Nothing
  Set objShSrc = Nothing
  Set objShTarget = Nothing
End Sub

Gruß Sepp

Anzeige
AW: kleine Korrektur!
07.06.2010 13:09:58
chris
Hallo Sepp,
ich habe es heute mal in meine Liste eingebaut. Bei der einen scheint es zu funzen, bei meiner anderen Liste bekomme ich eine Fehlermeldung bei dieser Zeile':
objShTarget.Rows(lngRow).Value = rng.EntireRow.Value
Fehlermeldung:
Laufzeitfehler '1004'
Anwendung- oder objectdefinierter Fehler.
Hat Du Zeit da noch einmal drüber zu schauen?
TIA
Chris
AW: kleine Korrektur!
07.06.2010 15:30:58
chris
Hallo Sepp,
ich habe mal ein wenig rumgespielt. Ich habe mal ein paar Zellen gelöscht in denen sehr viel Text info stand und siehe da, das Makro läuft. Scheint der Laufzeitfehler also durch die "dicken" Zellen zu kommen.
Weiterhin ist mir aufgefallen daß verlinkungen in der "Kopie" ohne link aufschlagen.
Kannst Du da nochmal bitte helfen?
Liebe Grüße
Chris
Anzeige
AW: kleine Korrektur!
07.06.2010 21:11:45
Josef

Hallo Chris,
ändere die Zeile
objShTarget.Rows(lngRow).Value = rng.EntireRow.Value
ab in
rng.EntireRow.Copy objShTarget.Rows(lngRow)


Gruß Sepp

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige