Zählen eines Wortes in einer Excel Tabelle

  • Excel

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Cyfl0w.

    Zählen eines Wortes in einer Excel Tabelle

    Guten Tag,

    Ich habe folgendes Problem, ich würde gerne in Excel ein Makro erstellen das mir ein bestimmtes Wort in diesem Fall das Wort "Last" in meiner gesamten Tabelle sucht und mir die Anzahl anschließende ausgibt. Nun habe ich leider keine Ahnung wie ich das anstelle vielleicht kann mir ja jemand von euch helfen und mir einen kleinen Lösungsansatz geben. :D

    Vielen Dank im voraus,

    Jonas
    Du musst alle Reihen mit einer Schleife durchgehen und nach deinem String suchen.

    Auf der Seite gibts genug über schleifen.
    de.wikibooks.org/wiki/VBA_in_Excel/_Schleifen

    Performanter wird es wenn du vorher die letzte Zeile mit Text herausfinden würdest.
    Den code dazu findest du ohne Probleme im Internet.

    Wenn du dann einen Lösungsansatz hier schreibst, wird dieser sicherlich, falls nötig verbessert werden ;).
    Danke erstmal für die Antwort :)

    Ich hätte jetzt an so etwas gedacht das Problem ist nur wie ich eben in diese Schleife mein Suchwort integriert bekomme ich habe hier mal angedeutet wie ich das meine.

    Quellcode

    1. Dim colRange as Range
    2. Set colRange = Range("B1:B100")
    3. For each "Danach wird gesucht" in colRange.Cells
    4. "irgendwas"
    5. Next
    Hier...ich habe versucht es so verständlich wie möglich zu machen

    Quellcode

    1. Sub sucheWort()
    2. Dim letzteZeile
    3. Dim letzteSpalte
    4. Dim wortZaehler As Integer
    5. letzteZeile = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    6. letzteSpalte = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
    7. For i = 1 To letzteZeile
    8. For ii = 1 To letzteSpalte
    9. 'Suche Zelle welche meinen Wert enthält und Zähle
    10. 'wortZaehler = wortZaehler + 1
    11. If InStr(1, Cells(i, ii).Value, "text") Then
    12. wortZaehler = wortZaehler + 1
    13. Else
    14. End If
    15. Next
    16. Next
    17. MsgBox wortZaehler
    18. End Sub
    Super Danke :thumbsup:

    Und sehr schön verständlich ist er auch noch :)

    Noch eine Frage irgendwie hat er bei mir Probleme mit dem:

    Quellcode

    1. ​letzteZeile = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row



    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cyfl0w“ ()

    ActiveSheet ist ganz schlecht.
    Da bist du abhängig von dem zufällig ausgewählten Arbeitsblatt.

    Der absolut schnellste Weg, insbesonders bei großen Datenmengen, ist die Verwendung von Find.
    Füge diesen Code in das zu durchsuchende Arbeitsblatt ein:

    Visual Basic-Quellcode

    1. Function FindCount(ByVal s As Variant) As Long
    2. Set c = UsedRange.Find(s, LookIn:=xlValues, LookAt:=xlWhole)
    3. If c Is Nothing Then Exit Function
    4. FirstMatch = c.Address
    5. Do
    6. FindCount = FindCount + 1
    7. Set c = UsedRange.FindNext(c)
    8. Loop While c.Address <> FirstMatch
    9. End Function
    10. Sub Test()
    11. Debug.Print FindCount("Last")
    12. End Sub

    Falls du auch Zellen finden möchtest, die dem Suchmuster nicht genau entsprechen, sondern es nur enthalten, kannst du xlWhole durch xlPart ersetzen.

    Falls du das Ergebnis in einem anderen Blatt oder in einem Modul benötigst geht auch ein Remote-Aufruf à la x=Tabelle1.FindCount("TEST")


    Edit:
    In deinem einfachen Fall fällt mir gerade noch ein Einzeiler ein:

    Visual Basic-Quellcode

    1. ​Anzahl = WorksheetFunction.CountIf(Tabelle1.UsedRange, "Last")

    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „petaod“ ()