zockerman
Goto Top

Excel VBA Wörterliste durchgehen und Anzahl der Wörter in Tabelle schreiben

Makro zum Zählen von Wörtern.

Hallo liebe Community,

ich habe (mal wieder) ein Problem. Und zwar möchte ich eine Vorlage erstellen, mit der ich eine *.csv importiere. Eine *.txt und diese dann auswerte.
Wie ich das mache weiß ich schon, aber es scheitert an noch an der Programmierung.

Das importieren habe ich bereits programmiert. Das geht.

Also:
1. Die *.csv enthält Logon-Daten der User und wird in die Tabelle "Import" geschrieben. Alle in Spalte "A" (Bsp: mobileadress,kriegste.eh@nich.com,Oct 2, 2010 10:53:29 AM CEST,S:1638852001)

2. Die *.txt enthält E-Mail-Adressen der User und wird in die Tabelle "User" geschrieben. Alle in Spalte "A" (Bsp: kriegste.eh@nich.com)

3. Es soll die zweite Tabelle "User" durchgegangen werden, Zeile für Zeile, und dann geschaut werden. Wie oft kommt die E-Mail-Adresse in der "Import"-Tabelle vor.
Es soll also gezählt werden, wie oft sich ein User angemeldet hat.

Ich hoffe ich konnte es deutlich genug erklären.

Nun mein bisheriger Programmcode. Aber ich hatte schon viele andere Lösungsansätze. Das scheint mir aber der beste zu sein.

Sub Login_Auswerten()

    Dim lngZeile As Long
    Dim SuchWort As String
    Dim Anzahl As Long
   
    For lngZeile = 1 To Sheets("User").Cells(Rows.Count, 1).End(xlUp).Row  
        SuchWort = InputBox("Geben Sie den genauen Pfad der Datei an")  
        Anzahl = 0
        ActiveDocument.Range.Find.Text = SuchWort
            While ActiveDocument.Range.Find.Execute
                Sheets("Auswertung").Cells(lngZeile, 1) = Sheets("User").Cells(lngZeile, 1)  
                Sheets("Auswertung").Cells(lngZeile, 2) = Sheets("Auswertung").Cells(lngZeile, 2) + 1  
            Wend
    Next

End Sub

Content-ID: 159858

Url: https://administrator.de/contentid/159858

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

Zockerman
Zockerman 01.02.2011 um 10:46:38 Uhr
Goto Top
2 Fehler gesehen^^
1. SuchWort = InputBox("Geben Sie den genauen Pfad der Datei an") --> SuchWort = InputBox("Geben Sie den Suchbegriff ein")

2. SuchWort = InputBox("Geben Sie den genauen Pfad der Datei an") --> Set SuchWort = InputBox("Geben Sie den genauen Pfad der Datei an")
Anzahl = 0 --> Set Anzahl = 0
bastla
bastla 01.02.2011 um 11:15:26 Uhr
Goto Top
Hallo Zockerman!

Wozu brauchst Du VBA? Ein simples "ZÄHLENWENN()" sollte doch in diesem Fall (wenn sich ja die gesuchten Adressen in einer eigenen Spalte befinden) ausreichen ...

Grüße
bastla

BTW: "Set" wird in VB(A) für das Erzeugen von Objektvariablen benötigt - für die Zuweisung eines Strings (ob aus einer "MsgBox" oder auf andere Weise) oder eines Zahlenwertes ist es nicht verwendbar ...
Zockerman
Zockerman 01.02.2011 um 11:22:25 Uhr
Goto Top
Hallo.

Ähm dumme Frage. Wie geht das. Ich kann nix mit Excel auser programmieren :D

ok danke. Dass das mit dem Set falsch war hab ich mittlerweile auch gemerkt.

Aber ich würde es trotzdem gerne in VB haben, da es über einen Button ablaufen soll.

Sub Login_Auswerten()

    Dim lngZeile As Long
    Dim SuchWort As String
    Dim Anzahl As Long
    Application.ScreenUpdating = False
    For lngZeile = 1 To Sheets("User").Cells(Rows.Count, 1).End(xlUp).Row  
        SuchWort = Sheets("User").Cells(lngZeile, 1)  
        Anzahl = 0
        Sheets("Auswertung").Cells(lngZeile, 1) = Sheets("User").Cells(lngZeile, 1)  
        Sheets("Auswertung").Cells(lngZeile, 2) = 0  
        ActiveDocument.Range.Find.Text = SuchWort
            While ActiveDocument.Range.Find.Execute
                Sheets("Auswertung").Cells(lngZeile, 2) = Sheets("Auswertung").Cells(lngZeile, 2) + 1  
            Wend
    Next
    Application.ScreenUpdating = True
    
End Sub

Mein aktueller Code
bastla
bastla 01.02.2011 um 15:08:36 Uhr
Goto Top
Hallo Zockerman!

Naja, ein Schleifchen hättest Du ja schon, und die Formel kannst Du auch per VBA eintragen (ist dann sogar dynamisch):
Sub Login_Auswerten()

Dim lngZeile As Long
Application.ScreenUpdating = False
For lngZeile = 1 To Sheets("User").Cells(Rows.Count, 1).End(xlUp).Row  
    Cells(lngZeile, "B").FormulaLocal = "=ZÄHLENWENN(Auswertung!B:B;" & "A" & lngZeile & ")"  
Next
Application.ScreenUpdating = True
Das Testen (und ggf Anpassen der Spalten / Tabellennamen oder Eingrenzen des zu durchsuchenden Bereiches - derzeit "B:B") habe ich Dir überlassen ... face-wink

Grüße
bastla
Zockerman
Zockerman 02.02.2011 um 10:48:32 Uhr
Goto Top
Danke funktioniert (:

Gruß Zockerman