Zählenwenn in VBA nachgebaut

Bild

Betrifft: Zählenwenn in VBA nachgebaut
von: PQuest:-)
Geschrieben am: 25.10.2015 21:12:15

Hallo,
ich habe einen Wert in einer Tabellenzelle. Diesen Wert möchte ich nun mit den Werten in einer anderen Tabelle vergleichen. Daran scheitere ich schon :-(
In der angefügten Tabelle habe ich das Problem etwas näher erläutert. Grundsätzlich ist das ein Fall für Countif(). Allerdings haben die Zellen unterschiedliche Wertigkeiten und am Ende wird der Counter ausgewertet und...und...und
Ich hatte mir überlegt, den Wert aus der ersten Tabelle (Cal) an eine Variable zu übergeben, dann die Vergleichstabelle (LoP) zeilenweise zu durchlaufen (siehe händisches Beispiel) und am Ende den ermittelten Wert weiter zu verwenden.
Vielleicht kann mir jemand zumindest mit dem Grundgerüst auf die Sprünge helfen.
Gruß,
PQuest:-)
PS: Tabellenstruktur ist vorgegeben und kann nicht geändert werden.
https://www.herber.de/bbs/user/101032.xlsx

Bild

Betrifft: AW: Zählenwenn in VBA nachgebaut
von: Daniel
Geschrieben am: 25.10.2015 21:57:32
Hi
als Funktion könnte dein Code so aussehen:

Function P_Quest(Einzeldatum, Datumsbereich As Range, SpaltenWertigkeit As Range) As Double
Dim arrBereich
Dim arrWert
Dim z As Long, s As Long
Dim Wert As Double
arrBereich = Datumsbereich.Value
arrWert = SpaltenWertigkeit.Value
For z = 1 To UBound(arrBereich, 1)
    Wert = 0
    For s = 1 To UBound(arrBereich, 2)
        If arrBereich(z, s) = Einzeldatum Then _
            Wert = WorksheetFunction.Max(Wert, arrWert(1, s))
    Next
    P_Quest = P_Quest + Wert
Next
End Function
kannst du dann in einer Zelle als Formel verwenden:
=P_Quest(Cal!A3;LoP!B3:F6;LoP!B10:F10)
Gruss Daniel

Bild

Betrifft: AW: Zählenwenn in VBA nachgebaut
von: PQuest:-)
Geschrieben am: 26.10.2015 11:54:24
...oder als Function in eine Sub einbinden :-)
Danke, werde es heute abend in Ruhe austesten.

Bild

Betrifft: AW: Zählenwenn in VBA nachgebaut
von: Daniel
Geschrieben am: 26.10.2015 11:57:32
wie auch immer.
du kannst es natürlich auch direkt in deinem Code verwenden.
Gruß Daniel

Bild

Betrifft: AW: Zählenwenn in VBA nachgebaut
von: PQuest:-)
Geschrieben am: 26.10.2015 21:56:05
Hallo Daniel,
wie zu erwarten. Passt wie Faust auf's Auge.
1000 Dank!!

Bild

Betrifft: Deine nähere Erläuterung entspricht nicht ...
von: Luc:-?
Geschrieben am: 26.10.2015 04:58:23
…dem in der BspDatei vorgestellten Ergebnis, Peter;
sollen nur ungleiche Wertigkeiten addiert wdn, das hast du gemacht, oder tatsächlich eine Summe der Wertigkeiten für den Zeilen-Counter gebildet wdn wie im Folgenden?
1 Zeile3: {=WENNFEHLER(MAX(WENN(LoP!A3:F3=Cal!A$3;LoP!A$10:F$10));"")}
0,6 Zeile4: {=WENNFEHLER(SUMME(WENN(LoP!A4:F4=Cal!A$3;LoP!A$10:F$10));"")}
1,3 Zeile5: {=WENNFEHLER(SUMME(WENN(LoP!A5:F5=Cal!A$3;LoP!A$10:F$10));"")}
0,3 Zeile6: {=WENNFEHLER(SUMME(WENN(LoP!A6:F6=Cal!A$3;LoP!A$10:F$10));"")}
3,2 Gesamt: =SUMME(dieserWerte)
Dafür brauchst du auch keine spezielle Zählenwenn-Fkt, schon gar nicht, wenn sie nicht mal allgemeiner einsetzbar ist als ZÄHLENWENN!
Aber viell geht's dir ja um eine Klick-auf-Button-Lösung…?!
Morrn, Luc :-?

Bild

Betrifft: AW: Deine nähere Erläuterung entspricht nicht ...
von: PQuest:-)
Geschrieben am: 26.10.2015 11:58:03
Hallo Luc,
es ist so wie in der Datei beschrieben. Innerhalb der Zeile soll nur der höchste Wert 1x gezählt werden. Die Ergebnisse der einzelnen Zeilen sollen dann als Gesamtsumme zusammengefasst werden.
Ich weiss nicht, was du unter einer Klick-auf-Button Lösung verstehst. es muss auf jeden Fall in einen vorhandenen Sourcecode eingefügt werden ...also ist VBA gefragt :-)
Grüße

Bild

Betrifft: In der Datei steht was Anderes! owT
von: Luc:-?
Geschrieben am: 26.10.2015 20:42:31
:-?

Bild

Betrifft: AW: In der Datei steht was Anderes! owT
von: PQuest:-)
Geschrieben am: 26.10.2015 20:55:21
Zitat:
Wird der Wert in der Zeile mehrmals gefunden, soll nur der höchste Wert einmal gezählt werden.
Wird der Wert in mehreren Zeilen gefunden, so sind die Ergebnisse der Zeilen zu addieren
Ich finde, das lässt nicht viel Freiraum für Spekulationen. Sicher nur ein Missverständnis, aber nun haben wir es ja geklärt ;-)

Bild

Betrifft: Du unterscheidest im Bsp zwischen 1. ...
von: Luc:-?
Geschrieben am: 27.10.2015 03:11:14
…und den Folgezeilen, Peter,
was ich wohl missdeutet habe, und schreibst im Wunschergebnis Wertigkeit der Trefferspalten = 1 und 0,3, was ich im Zusammenhang mit sind die Ergebnisse der Zeilen zu addieren als Addition der Spaltenwerte, nicht als ihr Maximum gedeutet hatte. Dass insgesamt 'ne Summe gebildet wird, hatte ich gesehen. Folglich hätte die Fml nur für dieses Gesamt aus den (zuvor) ermittelten Maxima gebildet wdn müssen. 'Ne (mögliche!) Fml-Entwicklung kann ich mir dann ja jetzt schenken… ;-)
Na, da hast du mich ja ganz schön verwirrt, Peter… ;-]
Luc :-?

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zählenwenn in VBA nachgebaut"