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

Excel: Arbeitsmappe durchsuchen

Excel: Arbeitsmappe durchsuchen
22.07.2014 11:38:46
netu
Hallo Gemeinde,
ich stehe vor einen Problem, und da ich nur Basiskenntnisse in Excel besitze komme ich nicht wirklich weiter.
Folgendes Szenario
Ich habe eine Excel Arbeitsmappe mit immer steigenden Anzahl an Tabellen (zur Zeit 24),diese Tabellen sind alle mit Informationen gefüllt. Ich will diese Tabellen alle durchsuchen und den Inhalt wonach ich gesucht haben ausgeben, auf einer extra Tabelle.
Wie könnte man das machen?

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel: Arbeitsmappe durchsuchen
22.07.2014 13:24:09
fcs
Hallo netu,
dein Problem kann man eigentlich nur per Makro lösen. Ich hab aber noch einige Fragen:
1. Wie willst du Suchen?
- Gesamten Zellinhalt vergleichen (Zellinhalt = Suchbegriff) oder Zelle enthält Suchbegriff
- Groß-/Kleinschreibung beachten?
2. Wie soll der Suchbegriff an das Makro übergeben werden?
Inhalt einer bestimmten Zelle oder Eingabe-Box die das Makro einblendet?
3. Was soll in die extra Tabelle ausgegeben werden?
Jede Tabellenzeile, in der der Suchbegriff gefunden wurde?
4. Wo befindet sich die extra Tabelle für die Ausgabe?
Innerhalb der gleichen Arbeitsmappe?
Oder soll jeweils eine neue Arbeitsmappe/Datei angelegt werden?
5. Soll der Suchbegriff in allen Zellen der Tabelle gesucht werden oder in bestimmten Spalten?
Gruß
Franz

Anzeige
AW: Excel: Arbeitsmappe durchsuchen
22.07.2014 14:27:40
netu
Hallo Franz,
danke für deine Antwort
1 Ich will ein Wort eingeben und es soll mir die gesamte Zeile ausgegeben werden Groß-/Kleinschreibung ist egal
2 Ich hatte das ganz gerne mit einer Box
3 In der Extra Tabelle sollen die Ergebnisse Zeileninhalt
4 Die Extra Tabelle ist in der gleichen Arbeitsmappe
5 Alle Zellen
Gruß
Netu

Excel: Arbeitsmappe durchsuchen - Ergebnisliste
22.07.2014 15:39:55
fcs
Hallo Netu,
hier der Code eines entsprechenden Makros, den du im VBA-Editor in einem allgemeinen Modul einfügen musst. Die Werte der von mir kommentierten Variablen musst du noch an deine Bedürfnisse anpassen.
Gruß
Franz
'Makro in einem allgemeinen Modul
Option Explicit
Private varFind As Variant
Sub Suche_in_Mappe()
Dim wksErgebnis As Worksheet, ZeileErgebnis As Long
Dim strErgebnis As String, ZeileTitelErgebnis As Long
Dim bolValueFormatOnly As Boolean, bolGefunden As Boolean, _
bolLoeschenAlt As Boolean
Dim wks As Worksheet, rngSuchbereich As Range
Dim rngFind As Range, lngFind As Long, str1stAdr As String
strErgebnis = "Suchergebnis" 'Name des Tabellenblatts in das Ergebnisse _
kopiert werden - ggf. anpassen
ZeileTitelErgebnis = 1 'Zeile unterhalb der die Ergebnisse eingefügt werden _
sollen - ggf. anpassen
bolValueFormatOnly = False 'auf True ändern, wenn nur Formate und Werte _
kopiert werden sollen
bolLoeschenAlt = True 'auf False ändern, wenn Werte der vorherigen Suche _
nicht gelöscht werden sollen
'Suchbegriff eingeben
varFind = InputBox("Suchbegriff (keinen Leertext suchen!)" & vbLf _
& "Platzhalterzeichen Sternchen (*) oder Fragezeichen (?) " _
& "können im Suchbegriff verwendet werden", _
"Suche in Arbeitsmappe", Default:=varFind)
If varFind = "" Then Exit Sub
'Ergebnisblatt vorbereiten
Set wksErgebnis = ActiveWorkbook.Worksheets(strErgebnis)
With wksErgebnis
'letzte benutzte Zeile im Ergebnisnblatt ermitteln
Set rngFind = .Cells.Find(What:="*", After:=.Range("A1"), LookIn:=xlFormulas, _
lookat:=xlWhole, Searchorder:=xlByRows, searchdirection:=xlPrevious)
If rngFind Is Nothing Then
ZeileErgebnis = 0
Else
ZeileErgebnis = rngFind.Row
End If
If bolLoeschenAlt = True Then
If ZeileErgebnis > ZeileTitelErgebnis Then
'Zeilen mit Altdaten löschen
.Range(.Rows(ZeileTitelErgebnis + 1), .Rows(ZeileErgebnis)).Clear
End If
ZeileErgebnis = ZeileTitelErgebnis
End If
End With
'Tabellenblätter abarbeiten
For Each wks In ActiveWorkbook.Worksheets
Select Case wks.Name
Case strErgebnis, "Tabelle XYZ" 'Tabellenname(n) ggf. anpassen/ergänzen
'in diesen Tabellenblättern nicht suchen
Case Else
With wks
'Variablen zurücksetzen
Set rngFind = Nothing
str1stAdr = ""
lngFind = 0
'zu durchsuchender Zellbereich
Set rngSuchbereich = .Cells
'Suchbegriff suchen
Set rngFind = rngSuchbereich.Find(What:=varFind, LookIn:=xlValues, _
lookat:=xlWhole, Searchorder:=xlByRows, MatchCase:=False)
If rngFind Is Nothing Then
'Suchbegriff im Blatt nicht vorhanden
Else
'Zelladresse der 1. Fundstelle merken
str1stAdr = rngFind.Address
Do
bolGefunden = True
'Zeile der gefundenen Zelle prüfen
Select Case rngFind.Row
Case 1, lngFind
'Suchbegriff in Zeile 1 oder mehrfach in Zeile
'Case-Werte ggf. anpassen
Case Else
'Zeile der gefundenen Zelle merken
lngFind = rngFind.Row
'Zähler für Zielzeile erhöhen
ZeileErgebnis = ZeileErgebnis + 1
If bolValueFormatOnly = True Then
'Zeile mit Fundstelle kopieren - nur Werte und Formate
.Rows(lngFind).Copy
wksErgebnis.Rows(ZeileErgebnis).PasteSpecial Paste:=xlPasteFormats
wksErgebnis.Rows(ZeileErgebnis).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Else
'Zeile mit Fundstelle kopieren - ggf. inkl. Formeln etc.
.Rows(lngFind).Copy wksErgebnis.Rows(ZeileErgebnis)
End If
End Select
'Nächste Fundstelle suchen
Set rngFind = rngSuchbereich.FindNext(After:=rngFind)
Loop Until rngFind.Address = str1stAdr
End If
End With
End Select
Next
If bolGefunden = False Then
MsgBox "Keine Treffer für Suchbegriff """ & varFind & """ gefunden", _
vbOKOnly, "Suche in Arbeitsmappe"
Else
wksErgebnis.Activate
End If
End Sub

Anzeige
AW: Excel: Arbeitsmappe durchsuchen - Ergebnisliste
23.07.2014 00:13:41
Adis
Hallo
anbei eine kleine Beispieldatei zum Arbeitsmappe durchsuchen
mein Programm kann mit den echten Excel Profis nicht mithalten
Ich habe ein Makro von Franz gesehen wo ich nicht durchblicke.
Vielleicht sin die einfachen alten Versionen trotzem brauchbar
Meine erste Versionen war für eine andere Anfrage, ohne Optionen
und Suche in externen Mappen. Die Erweiterung finde ich praxisnahe.
Es gibt noch weitere Überlegungen, dafür brauche ich noch mehr Zeit
Würde mich freuen eine Rückmeldung zu bekommen
https://www.herber.de/bbs/user/91650.xls
Gruss Adis

Anzeige
AW: Excel: Arbeitsmappe durchsuchen - Ergebnisliste
23.07.2014 02:35:31
fcs
Hallo Adis,
ich hab mal deine Datei runtergeladen und versucht in Excel 2010 zu öffnen. Ich erhalte die folgende tolle Meldung und die Datei wird ohne VBA-Projekt geöffnet und alle Makro-Funktionen sind tot.
Userbild
Was hast du denn besonderes an Komponenten/Steuerelementen in deiner Datei verwendet, dass eine neuere Excel-Version so "allergisch" auf deine Datei reagieren kann?
Ich hab mich jetzt noch nicht auf die Suche nach dem in der Meldung zitierten VBA-Konverter gemacht, aber irgendwie hört sich das nicht gut an.
Gruß
Franz

Anzeige
AW: Excel: Arbeitsmappe durchsuchen - Ergebnisliste
23.07.2014 08:16:09
netu
Hallo Franz,
vielen dank für den Code das funktioniert Super!!! Ich frage mich geht das so einfach ich habe in der Zeit nur eine Suchfunktion geschafft zu machen :(
Aber ich habe noch eine Frage
- eine Tabelle hat z.B. Oben ein Titel da steht dann RX100 und da drunter sind alle Geräte die zu RX100 gehören usw. kann mann das auch ausgeben lassen wenn ich danach suche?
@Adis
Hallo danke für deine Tabelle aber die Funktioniert bei mir auch nicht.
Gruss
Netu

AW: Excel: Arbeitsmappe durchsuchen - Ergebnisliste
23.07.2014 10:12:22
fcs
Hallo Netu,
die meisten Aktionen, die man in Excel manuell ausführen kann, können auch per Makro ausgeführt werden.
Die Schwierigkeit besteht dann meistens darin, den für die Programmierung guten/optimalen Ansatz zu finden.
Ich hab das Makro für die Suche in der Arbeitsmappe mal so zusammengekürt und angepasst, dass die Suche in der Zeile eines Blattes erfolgt und die unter der Fundstelle stehenden Daten in eine Zielzelle kopiert werden.
Gruß
Franz
Sub SucheGeraete()
Dim wksErgebnis As Worksheet
Dim strErgebnis As String, rngZiel As Range, varFind
Dim bolValueFormatOnly As Boolean
Dim wks As Worksheet, rngSuchbereich As Range
Dim rngFind As Range, Zeile_L As Long
strErgebnis = "Suchergebnis" 'Name des Tabellenblatts in das Ergebnisse _
kopiert werden - ggf. anpassen
bolValueFormatOnly = False 'auf True ändern, wenn nur Formate und Werte _
kopiert werden sollen
'Suchbegriff eingeben
varFind = InputBox("Suchbegriff", _
"Suche Geräte zu Suchbegriff in Titelzeile")
If varFind = "" Then Exit Sub
'Ergebnisblatt vorbereiten
Set wksErgebnis = ActiveWorkbook.Worksheets(strErgebnis)
With wksErgebnis
.Range("A2").Value = varFind 'Suchbegriff im Zielblatt eintragen
Set rngZiel = .Range("B2") '1. Zelle in die Ergebnis-Zellen kopiert werden sollen
'letzte benutzte Zelle unterhalb Einfügezelle
Set rngFind = .Cells(.Rows.Count, rngZiel.Column).End(xlUp)
If rngFind.Row >= rngZiel.Row Then
'Altdaten löschen
.Range(rngZiel, rngFind).Clear
End If
End With
Set wks = Worksheets("Tabelle2") ' ActiveSheet 'Tabellenblatt mit den zu suchenden Daten
With wks
'zu durchsuchender Zellbereich
Set rngSuchbereich = .Rows(1)       'Zeilennummer ggf anpassen
'Suchbegriff suchen
Set rngFind = rngSuchbereich.Find(What:=varFind, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False)
If rngFind Is Nothing Then
'Suchbegriff in Titelzeile des Blattes nicht vorhanden
MsgBox "Kein Treffer für Suchbegriff """ & varFind & """ gefunden", _
vbOKOnly, "Suche in Maschine in Titelzeile"
Else
'letzte Zeile in gefundener Spalte
Zeile_L = .Cells(.Rows.Count, rngFind.Column).End(xlUp).Row
If Zeile_L = rngFind.Row Then
MsgBox "Es gibt keine Geräte zu Maschine """ & varFind & """"
Else
If bolValueFormatOnly = True Then
'Daten unterhalb Fundstelle kopieren - nur Werte und Formate
.Range(rngFind.Offset(1, 0), .Cells(Zeile_L, rngFind.Column)).Copy
rngZiel.PasteSpecial Paste:=xlPasteFormats
rngZiel.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Else
'Zeile mit Fundstelle kopieren - ggf. inkl. Formeln etc.
.Range(rngFind.Offset(1, 0), .Cells(Zeile_L, rngFind.Column)).Copy rngZiel
End If
End If
wksErgebnis.Activate
End If
End With
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige