Flexibel zählen m. 2 Variablen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
InputBox MsgBox
Bild

Betrifft: Flexibel zählen m. 2 Variablen
von: Gerhard Henneicke
Geschrieben am: 05.12.2003 12:56:06

Hallo Excel-Kenner,

ich habe ein Problem und komme nicht weiter. Mit folgendem Code kann ich eine Tabelle flexibel nach einer Zeichenkette durchsuchen:


Sub Flexibel_zählen()
Dim Anzahl As Double
Dim z As String
z = InputBox("Zu suchende Zeichenfolge eingeben.")
For Each sh In Sheets
Anzahl = Anzahl + Application.WorksheetFunction.CountIf(sh.Range("a:p"), "=" & z)
Next
MsgBox Anzahl
End Sub


Wie bekomme ich es hin, nur zu zählen, wenn eine zweite freiwählbare Zeichenkette in der Zeile vorhanden ist? Ich hoffe mein Problem ist verständlich geschildert.

Gruß Gerhard
Bild


Betrifft: AW: Flexibel zählen m. 2 Variablen
von: Nepumuk
Geschrieben am: 05.12.2003 13:16:25

Hallo Gerd,
folgendes Programm sucht, wenn du bei der zweiten abfrage nichts eingibst nur nach einem Begriff. Groß- und Kleinschreibung werden berücksichtigt. Kann aber auch wegfallen.

Option Explicit
Sub Flexibel_zählen()
    Dim lngAnzahl As Long, strSuchbegriff1 As String, strSuchbegriff2 As String
    Dim myRange As Range, myWorksheet As Worksheet
    strSuchbegriff1 = InputBox("Zu suchende erste Zeichenfolge eingeben.", "Eingabe")
    If strSuchbegriff1 <> "" Then
        strSuchbegriff2 = InputBox("Zu suchende zweiten Zeichenfolge eingeben.", "Eingabe")
        For Each myWorksheet In ThisWorkbook.Worksheets
            Set myRange = myWorksheet.Columns("A:P").Find(What:=strSuchbegriff1, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
            If Not myRange Is Nothing Then
                If strSuchbegriff2 = "" Then
                    lngAnzahl = lngAnzahl + 1
                Else
                    Set myRange = myWorksheet.Rows(myRange.Row).Find(What:=strSuchbegriff2, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
                    If Not myRange Is Nothing Then
                        lngAnzahl = lngAnzahl + 1
                    End If
                End If
            End If
        Next
        MsgBox lngAnzahl
    End If
End Sub


Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk


Bild


Betrifft: AW: Flexibel zählen m. 2 Variablen
von: Gerhard
Geschrieben am: 05.12.2003 13:56:43

Hallo Nepumuk,

klappt bei mir irgendwie nicht.

Ergebnis ist immer 0, obwohl definitiv mehrfach Kombinationen in der Tabelle sind.

Gruß Gerhard


Bild


Betrifft: AW: Flexibel zählen m. 2 Variablen
von: Nepumuk
Geschrieben am: 05.12.2003 14:00:31

Hallo Gerd,
bei mir ging es. Kannst du mal eine Mustetabelle auf den Server laden, bei der es nicht geht?
Gruß
Nepumuk


Bild


Betrifft: AW: Flexibel zählen m. 2 Variablen
von: Gerhard Henneicke
Geschrieben am: 08.12.2003 08:48:37

Ich habe mal eine Beispieltabelle geladen. Es wäre super wenn ich eine Lösung dafür bekommen könnte.
https://www.herber.de/bbs/user/2366.xls

Gerhard


Bild


Betrifft: AW: Flexibel zählen m. 2 Variablen
von: Nepumuk
Geschrieben am: 09.12.2003 20:16:07

Hallo Gerhard,
anscheinend geht es nicht mit zweimal Find - Methode in einer Schleife. Aber so klappt es:

Option Explicit
Sub Flexibel_zählen()
    Dim lngAnzahl As Long, strSuchbegriff1 As String, strSuchbegriff2 As String
    Dim strAdresse As String, myRange As Range, myWorksheet As Worksheet
    strSuchbegriff1 = InputBox("Zu suchende erste Zeichenfolge eingeben.", "Eingabe")
    If strSuchbegriff1 <> "" Then
        strSuchbegriff2 = InputBox("Zu suchende zweiten Zeichenfolge eingeben.", "Eingabe")
        For Each myWorksheet In ThisWorkbook.Worksheets
            Set myRange = myWorksheet.Columns("A:P").Find(What:=strSuchbegriff1, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
            If Not myRange Is Nothing Then
                strAdresse = myRange.Address
                Do
                    If strSuchbegriff2 = "" Then
                        lngAnzahl = lngAnzahl + 1
                    Else
                        lngAnzahl = lngAnzahl + Application.WorksheetFunction.CountIf(myWorksheet.Rows(myRange.Row), strSuchbegriff2)
                    End If
                    Set myRange = myWorksheet.Columns("A:P").FindNext(myRange)
                Loop While Not myRange Is Nothing And myRange.Address <> strAdresse
            End If
        Next
        MsgBox lngAnzahl
    End If
End Sub


Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk


Bild

Beiträge aus den Excel-Beispielen zum Thema " Flexibel zählen m. 2 Variablen"