Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
964to968
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
964to968
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Automatische Suche über Tabellenblätter

Automatische Suche über Tabellenblätter
28.03.2008 08:52:14
Michael

Hallo,
ich hab eine Excel-Datei mit mehreren Tabellenblättern. Jedes Tabellenblatt steht für ein Datum, an dem Werte aufgezeichnet wurden.
Wie dei ersten drei Tabellenblätter im Beispiel:
https://www.herber.de/bbs/user/51102.xls
Ich möchte gerne alle (oder auch von mir vorher zu definierende Tabellenblätter) nach einer Zeichenkette in Spalte A durchsuchen - wenn die Zeichenkette gefunden wird, soll die komplette betreffende Zeile in ein anderes Tabellenblatt übertragen werden (kopiert) ... siehe Tabellenblatt "Ergebnis"
Eine "zu-Fuß-Methode" wäre natürlich einfach alle Tabellenblätter in ein Tabellenblatt zusammenzukopieren und nach Spalte A zu sortieren ... sind aber wirklich viele Tabellenblätter (100+) und ich bräuchte diese Auswertung öfters.
Der Lösungsweg (VBA,Makro,Formel) ist mir egal. Wäre schön, wenn mich jemand in die richtige Richtung schicken könnte, Danke
Michael Groß

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatische Suche über Tabellenblätter
28.03.2008 09:08:27
Ramses
Hallo
Sub Var_MultiSeek()
    'by Ramses
    'Sucht in der gesamten Mappe nach einem Begriff und kopiert die
    'gefundene Zeile in eine zu definfierende Ergebnistabelle
    Dim wks As Worksheet
    Dim rng As Range
    Dim sAddress As String
    'Suchbegriff
    Dim sFind As Variant
    Dim cr As Long, tarWks As String
    'Name_der_Zieltabelle
    'Bitte Anpassen !!!!
    tarWks = "Tabelle3"
    cr = 65536
    If Worksheets(tarWks).Cells(cr, 1) = "" Then
        cr = Worksheets(tarWks).Cells(cr, 1).End(xlUp).Row
    End If
    If cr = 0 Then cr = 1
    'Suchbegriff definieren
    sFind = InputBox("Bitte Suchbegriff eingeben:")
    If sFind = "" Then Exit Sub
    'Suchbegriff auf Zelle definieren
    'sFind = Worksheets("Tabelle1").Range("A1")
    For Each wks In Worksheets
    If wks.name = tarWks Then Exit Sub
        Set rng = wks.Cells.Find(what:=sFind, _
        lookat:=xlPart, LookIn:=xlFormulas)
        If Not rng Is Nothing Then
            sAddress = rng.Address
            Do
                Application.GoTo rng, True
                'Für die Automation kann die "If"-Anweisung auskommentiert werden
                '---
                If MsgBox("Suchbegriff: " & sFind & ",gefunden in " _
                & wks.name & ", " & rng.Address, vbYesNo + vbQuestion, "Weitersuchen ?") = vbNo Then Exit Sub
                '---
                wks.Rows(rng.Row).Copy Destination:=Worksheets(tarWks).Rows(cr)
                cr = cr + 1
                Set rng = wks.Cells.FindNext(after:=ActiveCell)
                If rng.Address = sAddress Then Exit Do
            Loop
        End If
        NextStart:
    Next wks
    MsgBox prompt:="Keine neue Fundstelle!"
End Sub

Gruss Rainer

Anzeige
AW: Schnellschuss? ;-))
28.03.2008 12:06:36
Erich G.
Hallo Rainer,
in "Var_MultiSeek" sind mir einige Sachen aufgefallen:
cr = 65536
Wäre da nicht (angesichts XL2007) Rows.Count besser?
If Worksheets(tarWks).Cells(cr, 1) = "" Then
Wenn Worksheets(tarWks).Cells(cr, 1) <> "" ist, sollte die Prozedur abbrechen: tarWks ist voll.
cr = Worksheets(tarWks).Cells(cr, 1).End(xlUp).Row
Sollte da nicht ....Row + 1 stehen? Sonst wird die alte letzte Zeile überschrieben.
(alternativ: cr = cr + 1 VOR dem Copy)
If cr = 0 Then cr = 1
Kann denn cr = 0 sein?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Schnellschuss? ;-))
28.03.2008 13:34:21
Ramses
Hallo
Das ist ein älteres Makro.
Es steht dir selbstverständlich frei dies so anzupassen :-)
"...Kann denn cr = 0 sein?..."
Nein,... eigentlich nicht :-)
Gruss Rainer

AW: Automatische Suche über Tabellenblätter
28.03.2008 12:23:26
Erich G.
Hallo Michael und Rainer,
da ich nicht nur "meckern" will, hier eine geänderte Version:


Sub Var_MultiSeek()
'by Ramses
'Sucht in der gesamten Mappe nach einem Begriff und kopiert die
'gefundene Zeile in eine zu definfierende Ergebnistabelle
Dim wks As Worksheet
Dim rng As Range
Dim sAddress As String
'Suchbegriff
Dim sFind As Variant
Dim cr As Long, tarWks As String
'Name_der_Zieltabelle
'Bitte Anpassen !!!!
tarWks = "Tabelle3"
With Worksheets(tarWks)
If .Cells(.Rows.Count, 1) <> "" Then MsgBox "Zielltabelle voll": Exit Sub
cr = .Cells(.Rows.Count, 1).End(xlUp).Row
If cr = 1 And .Cells(1, 1) = "" Then cr = 0
'Suchbegriff definieren
sFind = InputBox("Bitte Suchbegriff eingeben:")
If sFind = "" Then Exit Sub
'Suchbegriff auf Zelle definieren
'sFind = Worksheets("Tabelle1").Range("A1")
For Each wks In Worksheets
If wks.Name <> tarWks Then
Set rng = wks.Cells.Find(what:=sFind, lookat:=xlPart, LookIn:=xlFormulas)
If Not rng Is Nothing Then
sAddress = rng.Address
Do
Application.GoTo rng, True
'Für die Automation kann die "If"-Anweisung auskommentiert werden
If MsgBox("Suchbegriff: " & sFind & ",gefunden in " & wks.Name _
& ", " & rng.Address, vbYesNo + vbQuestion, "Weitersuchen ?") _
= vbNo Then Exit Sub
cr = cr + 1
wks.Rows(rng.Row).Copy Destination:=.Rows(cr)
Set rng = wks.Cells.FindNext(after:=ActiveCell)
If rng.Address = sAddress Then Exit Do
Loop
End If
End If
Next wks
MsgBox prompt:="Keine neue Fundstelle!"
End With
End Sub

Noch was: In der Vorversion stand
If wks.name = tarWks Then Exit Sub
Damit wwurde die Prozedur sofort verlassen, wenn Sheets(tarWks) das erste Blatt ist,
Blätter hinter tarWks werden nicht abgesucht.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Automatische Suche über Tabellenblätter
28.03.2008 12:29:13
Michael
Hallo Rainer und Erich
vielen Dank für eure Hilfe ... ich werde es testen und berichten ... aber leider nicht heute
Am Produktionsserver ist eins der Netzteile abgeraucht ... das hat irgendwie grad Priorität ;-)
Grüße
Micha

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige