Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Filter mit Teilstring

Filter mit Teilstring
01.10.2006 18:07:02
Juergen
Hallo Forumsmitglieder,
ich versuche aus einer Tabelle die Anzahl der Datensätze zu finden , bei denen in Spalte A eine "1" steht und in Spalte B ein Teilstring "AUS" (ab dem 1. Zeichen) beinhaltet ist.
Spalte A SpalteB
Nummer Bezeichnung
1 Aus1234
2 ABCD
5 EFGH
4 AABB
1 AusGHT
1 XXX
2 YYY
Im Beispiel sollte 2 herauskommen. Ich habe es mit Aus* versucht, so geht's aber nicht. Hat jemand eine Idee, wo es hängt?
MsgBox Application.Evaluate("SUM((B2:B" & MaxAnzahlDatenSaetze & "=""Aus*"")*(A2:A" & MaxAnzahlDatenSaetze & "=1))")
Vielen Dank,
Juergen
Anzahldatensätze=100 z.B.
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filter mit Teilstring
ransi
Hallo
Nutze zählenwenn().
In VBA sieht das so aus:


Option Explicit
Public Sub test()
MsgBox WorksheetFunction.CountIf(Range("B:B"), "Aus*")
End Sub


ransi
Anzeige
AW: Filter mit Teilstring
02.10.2006 09:15:04
Jürgen
Hallo Ransi,
es funzt leider nicht. Habe alle möglichen Konstellationen getestet, es kommen immer 0 Datensätze heraus. Habe den Filter über A = "1" weggelassen und nur nach "Aus*" gesucht.
Danke für deine Mühe.
Gruß,
Jürgen
AW: Filter mit Teilstring
ransi
Hallo Jürgen
Versuch mal dies:


Option Explicit
Public Sub test()
MsgBox wie_oft(Range("A1:B100"))
End Sub
Public Function wie_oft(bereich As Range) As Long
Dim d As Variant
Dim L As Long
d = bereich
For L = 1 To UBound(d)
    If bereich(L, 1) = 1 Then
        If LCase(bereich(L, 2)) Like "*aus*" Then _
        wie_oft = wie_oft + 1
    End If
Next
End Function


ransi
Anzeige
AW: Filter mit Teilstring
02.10.2006 16:12:07
Jürgen
Hallo Ransi,
nochmals Dank für die Idee, geht aber auch nicht.
Die Bedingung:
If bereich(L, 1) = 1 Then
...
wird auch nie erfüllt (Kontrolle mit Messagebox). Mir ist aber auch nicht klar, auf was hier geprüft wird.
Gruß,
Jürgen
AW: Beispieldatei
02.10.2006 17:36:50
Jürgen
Hi Ransi,
der Trick liegt hier:
MsgBox wie_oft(Range("A1:B100"))
Eine Abfrage über ZWEI Spalten geht offensichtlich, jedoch ändere mal ("A1:B100")
in ("B1:B100") -- Ergebnis "0" !
Danke nochmals für deine Mühen. Ich denke, ich muss einen anderen Weg suchen.
Gruß,
Jürgen
Anzeige
AW: Beispieldatei
02.10.2006 17:44:35
Jürgen
Oops, hatte vergessen die Frage wieder auf "offen" zu setzen!
Hi Ransi,
der Trick liegt hier:
MsgBox wie_oft(Range("A1:B100"))
Eine Abfrage über ZWEI Spalten geht offensichtlich, jedoch ändere mal ("A1:B100")
in ("B1:B100") -- Ergebnis "0" !
Danke nochmals für deine Mühen. Ich denke, ich muss einen anderen Weg suchen.
Gruß,
Jürgen
Anzeige
AW: Beispieldatei
02.10.2006 20:37:24
Jürgen
Hi Ransi,
alles im grünen Bereich. Hab deinen Code jetzt gefressen, funzt auch. Habe zunächst nicht erkannt,dass direkt 2 Spalten ausgewertet werden und dass Lcase aktiv ist.
Danke nochmals für die super Hilfe !!!!
Gruß,
Jürgen
;
Anzeige
Anzeige

Infobox / Tutorial

Filter mit Teilstring in Excel


Schritt-für-Schritt-Anleitung

Um die Anzahl der Datensätze zu zählen, bei denen in Spalte A eine "1" steht und in Spalte B ein Teilstring "AUS" enthalten ist, kannst du die folgende VBA-Funktion verwenden:

  1. Öffne Excel und drücke Alt + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul ein, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Modul einfügen" wählst.

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Option Explicit
    
    Public Function wie_oft(bereich As Range) As Long
       Dim d As Variant
       Dim L As Long
       d = bereich
       For L = 1 To UBound(d)
           If bereich(L, 1) = 1 Then
               If LCase(bereich(L, 2)) Like "*aus*" Then
                   wie_oft = wie_oft + 1
               End If
           End If
       Next
    End Function
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Verwende die Funktion in einer Zelle, indem du =wie_oft(A1:B100) eingibst, um die Anzahl der Datensätze zu ermitteln.


Häufige Fehler und Lösungen

  • Problem: Die Funktion gibt immer 0 zurück.

    • Lösung: Stelle sicher, dass die Daten in den Zellen tatsächlich die Werte "1" in Spalte A und die Teilstrings in Spalte B enthalten. Achte auch darauf, dass der Vergleich in der Funktion mit LCase durchgeführt wird, um Groß- und Kleinschreibung zu ignorieren.
  • Problem: Der Filter funktioniert nicht wie erwartet.

    • Lösung: Überprüfe, ob du den richtigen Bereich in der Funktion angegeben hast. Der Bereich muss alle relevanten Daten abdecken, zum Beispiel A1:B100.

Alternative Methoden

Eine andere Möglichkeit, die Anzahl der Datensätze zu zählen, besteht darin, die Funktion ZÄHLENWENN() zu verwenden, allerdings ist diese Methode weniger flexibel bei der Verwendung von Teilstrings. Du kannst den folgenden Befehl in einer Zelle verwenden:

=ZÄHLENWENN(B:B, "Aus*")

Dies zählt jedoch nur die Einträge in Spalte B, die mit "Aus" beginnen, ohne die Bedingung für Spalte A zu berücksichtigen.


Praktische Beispiele

Angenommen, du hast folgende Daten:

Spalte A Spalte B
1 Aus1234
2 ABCD
5 EFGH
4 AABB
1 AusGHT
1 XXX
2 YYY

Wenn du die Funktion wie_oft(A1:B7) anwendest, erhältst du als Ergebnis 2, da nur die ersten und fünften Einträge die Bedingungen erfüllen.


Tipps für Profis

  • Nutze die Application.Evaluate Methode in VBA, um dynamische Berechnungen durchzuführen.
  • Experimentiere mit verschiedenen Suchbegriffen und Teilstrings, um die Flexibilität deines Filters zu erhöhen.
  • Vermeide harte Kodierungen von Zellbereichen; nutze stattdessen Variablen, um die Lesbarkeit und Wartbarkeit deines Codes zu verbessern.

FAQ: Häufige Fragen

1. Frage: Kann ich die Funktion auch für andere Teilstrings verwenden?
Antwort: Ja, du kannst die Funktion anpassen, indem du die Bedingung in der Like-Anweisung änderst, um nach anderen Teilstrings zu suchen.

2. Frage: Funktioniert das auch in Excel Online?
Antwort: Die VBA-Funktionalität ist in Excel Online nicht verfügbar. Du musst die Desktop-Version von Excel verwenden, um die VBA-Funktionen effektiv zu nutzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige