Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Teilergebnis 103 – Anzahl2 mit Bedingungen

Forumthread: Teilergebnis 103 – Anzahl2 mit Bedingungen

Teilergebnis 103 – Anzahl2 mit Bedingungen
27.04.2017 19:33:59
KK
Hallo an alle hier,
ich arbeite mit Excel 2010 auf Win7 und stehe als ewiger Makro-Laie wieder einmal vor einem für mich schier unlösbaren Problem.
Das folgende Makro zur Erzeugung der Funktion „zählenspezial“ habe ich einem Forum entnommen – leider ist derjenige, der das erstellt hat dort nicht mehr registriert ….
Public Function zählenSpezial(Bereich As Range) As Long
Dim zelle As Range
Dim dic
Set dic = CreateObject("scripting.dictionary")
For Each zelle In Bereich
If Not zelle.Height = 0 And Not zelle.Value = "" And Not dic.exists(zelle.Value) Then
dic.Add zelle.Value, ""
End If
Next zelle
zählenSpezial = dic.Count
End Function
Mit dieser Funktion „zählenspezial“ lässt sich Anzahl2 nur eingeblendeter Zellen (Teilergebnis 103 = durch Autofilter oder durch manuell ausgeblendete Zellen) unter folgenden Bedingungen: ohne doppelte Werte, ohne leere Werte.
In Anlehnung an diese Funktion bräuchte ich jetzt noch für die gleiche Tabelle folgende Funktionen:
1) zählenspezial1
Anzahl2 wie oben unter folgenden Bedingungen:
mit doppelten Werten, ohne leere Werte (““)
2) zählenspezial2
Anzahl2 wie oben unter folgenden Bedingungen:
mit doppelten Werten, ohne leere Werte (““), ohne Werte „nein“
3) zählenspezial3
Anzahl2 wie oben unter folgenden Bedingungen:
mit doppelten Werten, ohne leere Werte (““), ohne Werte „?“
4) zählenspezial4
Anzahl2 wie oben unter folgenden Bedingungen:
mit doppelten Werten, mit Werten „ja“
Vielleicht findet sich hier jemand, der mir bei der Lösung helfen kann. Bin für jeden Ratschlag dankbar.
Grüße
Konrad
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teilergebnis 103 – Anzahl2 mit Bedingungen
28.04.2017 09:59:15
ransi
hallo,
Teste mal diese 3:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

'1) zählenspezial1
'Anzahl2 wie oben unter folgenden Bedingungen:
'mit doppelten Werten, ohne leere Werte (““)
'
'2) zählenspezial2
'Anzahl2 wie oben unter folgenden Bedingungen:
'mit doppelten Werten, ohne leere Werte (““), ohne Werte „nein“
'
'3) zählenspezial3
'Anzahl2 wie oben unter folgenden Bedingungen:
'mit doppelten Werten, ohne leere Werte (““), ohne Werte „?“
'
'4) zählenspezial4
'Anzahl2 wie oben unter folgenden Bedingungen:
'mit doppelten Werten, mit Werten „ja“

Function ZählenSpezial1(bereich As Range) As Long
    Dim zelle As Range
    Dim mydic
    Dim L As Long
    Set mydic = CreateObject("scripting.dictionary")
    For Each zelle In bereich
        If zelle.Height <> 0 Then
            If zelle.Value <> "" Then
                L = L + 1
                mydic(L) = 0
            End If
        End If
    Next zelle
    ZählenSpezial1 = mydic.Count
End Function


Function ZählenSpezial2(bereich As Range) As Long
    Dim zelle As Range
    Dim mydic
    Dim L As Long
    Set mydic = CreateObject("scripting.dictionary")
    
    For Each zelle In bereich
        If zelle.Height <> 0 Then
            If zelle.Value <> "" Then
                If zelle.Value <> "nein" Then
                    L = L + 1
                    mydic(L) = 0
                End If
            End If
        End If
    Next zelle
    ZählenSpezial2 = mydic.Count
End Function


Function ZählenSpezial3(bereich As Range) As Long
    Dim zelle As Range
    Dim mydic
    Dim L As Long
    Set mydic = CreateObject("scripting.dictionary")
    
    For Each zelle In bereich
        If zelle.Height <> 0 Then
            If zelle.Value <> "" Then
                If zelle.Value <> "?" Then
                    L = L + 1
                    mydic(L) = 0
                End If
            End If
        End If
    Next zelle
    ZählenSpezial3 = mydic.Count
End Function


Zählenspezial 4 hab ich nicht verstanden.
Sollen da nur Zellen mit "ja" gezählt werden?
ransi
Anzeige
AW: Teilergebnis 103 – Anzahl2 mit Bedingungen
28.04.2017 15:20:06
KK
Hallo ransi,
vielen herzlichen Dank für deine perfekte Lösung!
zu Zählenspezial4:
richtig, es sollen nur Zellen mit "ja" gezählt werden - müßte der Code dann so aussehen?
Function ZählenSpezial4(bereich As Range) As Long
Dim zelle As Range
Dim mydic
Dim L As Long
Set mydic = CreateObject("scripting.dictionary")
For Each zelle In bereich
If zelle.Height  0 Then
'If zelle.Value  "" Then
If zelle.Value = "ja" Then
L = L + 1
mydic(L) = 0
End If
'End If
End If
Next zelle
ZählenSpezial4 = mydic.Count
End Function

Noch eine Bitte habe ich - nachdem deine Codes so sauber strukturiert sind:
könntest du den ursprünglichen Code für zählenSpezial ebenso sauber strukturiert als ZählenSpezial0 darstellen?
Grüße
Konrad
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Teilergebnis 103 – Anzahl2 mit Bedingungen in Excel


Schritt-für-Schritt-Anleitung

Um die Funktionen für das Teilergebnis 103 in Excel zu erstellen, folge diesen Schritten:

  1. Öffne Excel 2010 und drücke ALT + F11, um den Visual Basic Editor zu starten.
  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Füge die folgenden VBA-Funktionen für die speziellen Zählungen ein:
Function ZählenSpezial(Bereich As Range) As Long
    Dim zelle As Range
    Dim dic
    Set dic = CreateObject("scripting.dictionary")
    For Each zelle In Bereich
        If Not zelle.Height = 0 And Not zelle.Value = "" And Not dic.exists(zelle.Value) Then
            dic.Add zelle.Value, ""
        End If
    Next zelle
    ZählenSpezial = dic.Count
End Function

Function ZählenSpezial1(Bereich As Range) As Long
    Dim zelle As Range
    Dim mydic
    Dim L As Long
    Set mydic = CreateObject("scripting.dictionary")
    For Each zelle In Bereich
        If zelle.Height <> 0 Then
            If zelle.Value <> "" Then
                L = L + 1
                mydic(L) = 0
            End If
        End If
    Next zelle
    ZählenSpezial1 = mydic.Count
End Function

Function ZählenSpezial2(Bereich As Range) As Long
    Dim zelle As Range
    Dim mydic
    Dim L As Long
    Set mydic = CreateObject("scripting.dictionary")
    For Each zelle In Bereich
        If zelle.Height <> 0 Then
            If zelle.Value <> "" And zelle.Value <> "nein" Then
                L = L + 1
                mydic(L) = 0
            End If
        End If
    Next zelle
    ZählenSpezial2 = mydic.Count
End Function

Function ZählenSpezial3(Bereich As Range) As Long
    Dim zelle As Range
    Dim mydic
    Dim L As Long
    Set mydic = CreateObject("scripting.dictionary")
    For Each zelle In Bereich
        If zelle.Height <> 0 Then
            If zelle.Value <> "" And zelle.Value <> "?" Then
                L = L + 1
                mydic(L) = 0
            End If
        End If
    Next zelle
    ZählenSpezial3 = mydic.Count
End Function

Function ZählenSpezial4(Bereich As Range) As Long
    Dim zelle As Range
    Dim mydic
    Dim L As Long
    Set mydic = CreateObject("scripting.dictionary")
    For Each zelle In Bereich
        If zelle.Height <> 0 Then
            If zelle.Value = "ja" Then
                L = L + 1
                mydic(L) = 0
            End If
        End If
    Next zelle
    ZählenSpezial4 = mydic.Count
End Function
  1. Schließe den Visual Basic Editor und gehe zurück zur Excel-Oberfläche.
  2. Du kannst jetzt die Funktionen ZählenSpezial, ZählenSpezial1, ZählenSpezial2, ZählenSpezial3 und ZählenSpezial4 in deinen Excel-Zellen verwenden, um die entsprechenden Zählungen durchzuführen.

Häufige Fehler und Lösungen

  • Fehler: "Typ nicht definiert"
    Stelle sicher, dass du in die richtigen Module schreibst und die Variablen korrekt deklariert sind.

  • Fehler: Keine Rückgabe
    Überprüfe, ob der Bereich korrekt ausgewählt ist und ob die Zellen, die du zählen möchtest, sichtbar sind.

  • Fehler: Falsches Ergebnis
    Stelle sicher, dass die Bedingungen in den Funktionen korrekt implementiert sind (z. B. für ZählenSpezial4, nur Zellen mit "ja" zählen).


Alternative Methoden

Wenn du die Funktionen nicht verwenden möchtest, kannst du auch die integrierte Funktion TEILERGEBNIS verwenden. Zum Beispiel:

=TEILERGEBNIS(103, A1:A100)

Hierbei wird die Anzahl der sichtbaren (nicht ausgeblendeten) Zellen in dem angegebenen Bereich gezählt. Diese Methode ist jedoch nicht so flexibel wie die VBA-Lösungen.


Praktische Beispiele

Nehmen wir an, du hast eine Tabelle mit den folgenden Werten in Spalte A:

A
ja
nein
ja
?
ja
  • Anwendung von ZählenSpezial:
    Die Formel =ZählenSpezial(A1:A6) zählt die eindeutigen Werte, die sichtbar sind.

  • Anwendung von ZählenSpezial4:
    Die Formel =ZählenSpezial4(A1:A6) zählt nur die Zellen, die "ja" enthalten und sichtbar sind.


Tipps für Profis

  • Nutze die Funktionen in Kombination mit Pivot-Tabellen, um umfassendere Analysen durchzuführen.
  • Experimentiere mit Bedingten Formatierungen, um die Zählungen visuell hervorzuheben.
  • Überlege, ob du die Fehlerbehandlung in deine VBA-Funktionen einbauen möchtest, um robustere Lösungen zu schaffen.

FAQ: Häufige Fragen

1. Kann ich die Funktionen in Excel 2013 oder 2016 verwenden?
Ja, die Funktionen sind kompatibel mit Excel 2010 und höheren Versionen.

2. Was macht die Funktion TEILERGEBNIS mit dem Argument 103?
TEILERGEBNIS(103, Bereich) zählt nur die sichtbaren Zellen im angegebenen Bereich, die nicht ausgeblendet sind.

3. Wie kann ich die Anzahl der Zellen mit "nein" ausschließen?
Verwende die Funktion ZählenSpezial2, die nur Zellen zählt, die nicht "nein" sind.

4. Was ist der Unterschied zwischen ZählenSpezial und ZählenSpezial1?
ZählenSpezial zählt nur eindeutige Werte, während ZählenSpezial1 alle Werte zählt, einschließlich doppelter.

Mit diesen Anleitungen und Tipps bist du gut gerüstet, um die Funktionen für das Teilergebnis 103 in Excel erfolgreich zu nutzen!

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige