239 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

ich bin auf der Suche nach einem VBA, dass mir über mehrere Tabellenblätter einen Begriff oder Zahl sucht und dann zusammenzählt wie viele es sind.

Würde mich sehr über eurer Hilfe freuen

MFG Julian C.

1 Antwort

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Julian,

das folgende Makro durchsucht alle Blätter der Arbeitsmappe nach dem Suchbegriff. Kopiere das Makro in ein allgemeines Modul deiner Arbeitsmappe:

Sub suchen()
Dim varSuch As Variant
Dim i As Integer
Dim rngZelle As Range
Dim lngZaehler As Long

'Suchbegriff abfragen
varSuch = InputBox("Bitte geben Sie den Suchbegriff ein:", "Eingabe")
'Prüfen, ob Suchbegriff Zahl ist und ggf. in Zahl umwandeln
If IsNumeric(varSuch) Then varSuch = CDbl(varSuch)

'Alle Tabellen der aktuellen Arbeitsmappe durchlaufen
For i = 1 To ThisWorkbook.Worksheets.Count
  With ThisWorkbook.Worksheets(i)
    'alle Zellen im genutzten Bereich des Arbeitsblattes durchlaufen
    For Each rngZelle In .UsedRange
      If rngZelle.Value = varSuch Then lngZaehler = lngZaehler + 1   'Zähler erhöhen, wenn Suchbegriff gefunden wurde
    Next rngZelle
  End With
Next i

'Ergebnis ausgeben
MsgBox lngZaehler

End Sub


Oder wenn du nur bestimmte Tabellenblätter durchsuchen willst:

Sub suchen2()
Dim arrSuch
Dim varSuch As Variant
Dim i As Integer
Dim rngZelle As Range
Dim lngZaehler As Long

'Tabellenblätter festlegen, die durchsucht werden sollen
arrSuch = Array("Tabelle1", "Tabelle3")

'Suchbegriff abfagen
varSuch = InputBox("Bitte geben Sie den Suchbegriff ein:", "Eingabe")
'Prüfen, ob Suchbegriff Zahl ist und ggf. in Zahl umwandeln
If IsNumeric(varSuch) Then varSuch = CDbl(varSuch)

'Alle aufgezählten Tabellen durchlaufen
For i = LBound(arrSuch) To UBound(arrSuch)
  With ThisWorkbook.Worksheets(arrSuch(i))
    'alle Zellen im genutzten Bereich des Arbeitsblattes durchlaufen
    For Each rngZelle In .UsedRange
      If rngZelle.Value = varSuch Then lngZaehler = lngZaehler + 1   'Zähler erhöhen, wenn Suchbegriff gefunden wurde
    Next rngZelle
  End With
Next i

'Ergebnis ausgeben
MsgBox lngZaehler

End Sub

Gruß

M.O.

...