Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge