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

Abfragestatistik via VBA

Abfragestatistik via VBA
Jenny
Hi Ihr,
ich habe noch einmal eine Frage zu VBA an Euch: :-)
Ich habe eine Tabelle, in der man durch Eingabe im Feld D2 eine Suche über verschiedene andere Tabellen starten kann.
Der Suchbegriff wird dabei ausschließlich in diesem Feld eingegeben und die Suche anschließend über einen "Find"-Button (startet "Find"-Makro) gestartet.
Gibt es eine Möglichkeit, dass jedes Mal, wenn auf diesem Weg nach einem Begriff gesucht wird (Auslöser = Klick auf "Find" bzw. start des Makros "Find" eine entsprechende Statistik zu führen, z.B. auf einem separaten Tabellenblatt ?
Es wäre eine riesen Hilfe, wenn ich hier sehen könnte, wie oft nach welchen Begriffen gesucht wird, da darauf alle internen Schulungen etc. aufbauen...
Danke Euch für jeden Tipp ! :-)
LG aus Irland,
Jenny

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Abfragestatistik via VBA
13.03.2012 17:18:10
Armin
Hallo Jenny,
Du musst dazu nur eine Tabelle anlegen mit z.Bsp. "Statistik" und dann in der Find Procedure diesen Aufruf einbauen:
Statistik (Find.value) ' für Find =Deine Variable
und in ein Modul diesen Code
Sub Statistik(Begriff As String)
Dim Eintrag As Long
Dim FB As Range
Dim firstAddress As String
Eintrag = Worksheets("Statistik").Cells(Rows.Count, 1).End(xlUp).Row
With Worksheets("Statistik").Range("A1:A" & CStr(Eintrag))
Set FB = .Find(Begriff, LookIn:=xlValues)
If Not FB Is Nothing Then
FB.Offset(0, 1).Value = FB.Offset(0, 1).Value + 1
Else
Worksheets("Statistik").Cells(Eintrag + 1, 1).Value = Begriff
Worksheets("Statistik").Cells(Eintrag + 1, 2).Value = 1
End If
End With
End Sub
In der Spalte daneben wird hochgezählt.
LG Armin
Anzeige
AW: Abfragestatistik via VBA
13.03.2012 17:43:33
Jenny
Hallo Armin,
vielen vielen Dank dafür ! :-)
Kannst Du mir damit noch ein bisschen helfen, da ich mit VBA leider noch ziemlich am Anfang bin ?
Also, der Wert, nach dem gesucht wird, steht immer in D2 auf Blatt "Search", und wird dann per Formel umgewandelt und in L2 kopiert, von wo aus er für die Suche verwendet wird.
Für die Statistik habe ich ein neues Blatt "Statistics" erstellt.
Klickt man auf Blatt "Search" auf einen Button, startet folgendes Makro - nur das mit dem Verbinden mit Deinem Code bekomme ich irgendwie noch nicht hin - kannst Du mir erklären, wo genau ich was hier hinkopieren muss..?
Sub Search()
' Keyboard Shortcut: Ctrl+s
Selection.AutoFilter Field:=1, _
Criteria1:=Range("L2")
Columns("C:J").Select
With Selection
.WrapText = True
End With
Range("D2").Select
End Sub
LG und nochmals vielen Dank ! :-)
Jenny
Anzeige
AW: Abfragestatistik via VBA
13.03.2012 18:19:26
Armin
Hallo Jenny,
also wenn ich das hoffentlich richtig sehe dann müsste das so aussehen:
Sub Search()
' Keyboard Shortcut: Ctrl+s
Selection.AutoFilter Field:=1, _
Criteria1:=Range("L2")
Columns("C:J").Select
With Selection
.WrapText = True
End With
Range("D2").Select
Statistik (Range("D2").value)
End Sub
Diese Procedure in ein Modul kopieren!
Sub Statistik(Begriff As String)
Dim Eintrag As Long
Dim FB As Range
Dim firstAddress As String
Eintrag = Worksheets("Statistics").Cells(Rows.Count, 1).End(xlUp).Row
With Worksheets("Statistics").Range("A1:A" & CStr(Eintrag))
Set FB = .Find(Begriff, LookIn:=xlValues)
If Not FB Is Nothing Then
FB.Offset(0, 1).Value = FB.Offset(0, 1).Value + 1
Else
Worksheets("Statistics").Cells(Eintrag + 1, 1).Value = Begriff
Worksheets("Statistics").Cells(Eintrag + 1, 2).Value = 1
End If
End With
End Sub

Anzeige
AW: Abfragestatistik via VBA
13.03.2012 18:24:00
Jenny
Hallo Armin,
das ist der Hammer und funktioniert super - vielen vielen Dank dafür !! :-)
...Klasse, bin total begeistert ! :-)
LG aus Irland und Dir noch einen schönen Abend,
Jenny
AW: Abfragestatistik via VBA
13.03.2012 19:01:42
Jenny
Hallo Armin,
sorry, jetzt hab ich doch nochmal eine Frage zu Deinem schönen Code - vielleicht kannst Du mir ja auch dabei noch helfen ? :-)
Mir ist eingefallen, dass die Datei nach Freigabe von mehreren Usern gleichzeitig genutzt werden wird, d.h. das Schreiben der Statistik in ein integriertes Tabellenblatt funktioniert hier nicht bzw. würde vermutlich die jeweils anderen User überschreiben oder am Speichern hindern.
Gibt es die Möglichkeit, diese Statistik in einer separaten Datei oder einem Ordner auf einem Laufwerk zu speichern, evtl. getrennt nach User (Environ) ?
LG und vielen Dank für alle Hilfe,
Jenny
Anzeige
AW: Abfragestatistik via VBA
13.03.2012 21:57:21
Nepumuk
Hallo,
versuch es mal damit:
Die Textdateien die dabei im selben Ordner in dem sich auch die Mappe befindet entstehen, sind versteckte Systemdateien welche "normalerweise" für den Benutzer unsichtbar bleiben.
Option Explicit

Private Type DATASET
    strSearchTerm As String * 50
    lngCount As Long
End Type

Public Sub Search()
    '
    ' Keyboard Shortcut: Ctrl+s
    '
    ActiveSheet.AutoFilter.Range.AutoFilter Field:=1, _
        Criteria1:=Range("L2").Text
    Columns("C:J").WrapText = True
    Call Statistic(Range("D2").Text)
End Sub

Private Sub Statistic(ByVal pvstrSearchTerm As String)
    Dim intFileNumber As Integer
    Dim lngDatasetCounter As Long
    Dim strFile As String
    Dim udtDataset As DATASET
    Reset
    intFileNumber = FreeFile
    strFile = ThisWorkbook.Path & "\Statistic_" & _
        Environ$("USERNAME") & ".log"
    Open strFile For Random Access Read Write As _
        #intFileNumber Len = Len(udtDataset)
    Do
        lngDatasetCounter = lngDatasetCounter + 1
        Get #intFileNumber, lngDatasetCounter, udtDataset
        If EOF(intFileNumber) Then
            udtDataset.strSearchTerm = pvstrSearchTerm
            udtDataset.lngCount = 1
            Exit Do
        End If
        If StrComp(Trim$(udtDataset.strSearchTerm), _
            pvstrSearchTerm, vbTextCompare) = 0 Then
            udtDataset.lngCount = udtDataset.lngCount + 1
            Exit Do
        End If
    Loop
    Put #intFileNumber, lngDatasetCounter, udtDataset
    Close #intFileNumber
    Call SetAttr(strFile, vbHidden Or vbSystem)
End Sub

Public Sub Analysis()
    Dim intFileNumber As Integer
    Dim lngDatasetCounter As Long, lngRow As Long
    Dim strPath As String, strFileName As String, strUser As String
    Dim udtDataset As DATASET
    With Worksheets("Statistics")
        .UsedRange.ClearContents
        With Range("A1:C1")
            .Value2 = Array("User name", "Search term", "Count")
            .Font.Bold = True
        End With
        lngRow = 1
        Reset
        intFileNumber = FreeFile
        strPath = ThisWorkbook.Path & "\"
        strFileName = Dir$(strPath & "Statistic_*.log", _
            vbHidden Or vbSystem)
        Do Until strFileName = vbNullString
            strUser = Mid$(strFileName, 11, Len(strFileName) - 14)
            Open strPath & strFileName For Random Access _
                Read As #intFileNumber Len = Len(udtDataset)
            Do
                Get #intFileNumber, , udtDataset
                If EOF(intFileNumber) Then Exit Do
                lngRow = lngRow + 1
                .Cells(lngRow, 1).Value = strUser
                .Cells(lngRow, 2).Value = Trim$(udtDataset.strSearchTerm)
                .Cells(lngRow, 3).Value = udtDataset.lngCount
            Loop
            Close #intFileNumber
            strFileName = Dir$
        Loop
        .UsedRange.EntireColumn.AutoFit
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Abfragestatistik via VBA
13.03.2012 22:30:34
Jenny
Hallo Nepumuk,
das ist ja klasse - vielen Dank dafür !
Der Code muss so komplett in ein Modul kopiert werden, d.h. inkl. Option Explicit, richtig ?
Wenn Du schreibst, dass die generierten Textdateien normalerweise unsichtbar sind, wie kann ich sie dann sehen ? :-)
LG,
Jenny
AW: Abfragestatistik via VBA
13.03.2012 23:35:25
Nepumuk
Hallo,
1. Ja alles in ein Modul.
2. Dafür gibt es die Prozedur "Analysis" mit der du den Inhalt der Dateien in die Tabelle "Statistics" auslesen kannst. Um sie wirklich sehen zu können musst du in den Ansichtenoptionen der Ordners 1. das Häkchen bei "Geschützte Systemdateien ausblenden (empfohlen)" rausnehmen und 2. die Option "Ausgeblendete Dateien, Ordner und Laufwerke anzeigen" auswählen. An diese Optionen kommst du über die Systemsteuerung.
Gruß
Nepumuk
Anzeige
AW: Abfragestatistik via VBA
14.03.2012 12:19:30
Jenny
Hallo Nepumuk,
vielen Dank dafür - das ist super so und echt eine riesen Hilfe !! :-)
LG aus Irland und einen schönen Tag Dir,
Jenny

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige