Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA CountIf mit <=
#1
Hallo zusammen,

ich versuche mit VBA Werte zu zählen. Folgendes funktioniert:


Code:
cells(7,2) =Application.countif(wks.Columns(5), cells(3,2) + 8)

das aber nicht:


Code:
cells(7,2) =Application.countif(wks.Columns(5), "<=" & cells(3,2) + 8)

in B3 steht ein Datum.

Was läuft hier schief?
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#2
Hallo Edgar

Ich bin ja nicht der VBA-Experte aber müsste es nicht Application.Worksheetfunction.Countif sein?

Ansonsten habe ich bei einer kurzen Websuche das gefunden:
Zitat:dieses Problem wurde hier im Forum schon zig-mal gepostet. Es liegt grundsätzlich an der Referenzierung des Arbeitsbereiches.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#3
Hallo Detlef,

das Ergebnis ist bei beiden Schreibweisen gleich. Was  ich bisher nirgendwo finden konnte, ist ein Countif mit einem Vergleichsoperator & einer Range. Und genau das funktioniert bei mir nicht! Der erste Ausdruck bringt ja ein korrektes Ergebnis.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#4
Ich kann den Fehler reproduzieren.

Bei einer Zahl, die kein Datum ist (! sehr widersprüchlich, denn Datum ist Zahl !), klappt Dein Code aber. Es liegt also am Datum.

Referenzierungserfordernisse (jedesmal mit Worksheet) sind zwar natürlich und grundsätzlich zu beachten, aber hier nicht der Grund, schon aufgrund Boskos Schilderung.

Lösung gefunden: Hänge an die Zellreferenz .Value2 an; .Value geht nicht (VBA-Hilfe zu Value2).

Gelten tut die Anomalie auch für eine Variant-Variable statt eines Zellbezugs, da auch dort der Typ Datum (und Währung) jeweils als Information erhalten bleibt. Da muss statt .Value2 dann umgewandelt werden, da Variable nur Werte als Info haben, Zellen aber eben "alles" (Werte, Formeln, Formate, bed.F., Datenüberprüfung ...).

Ohne Gewähr. Single, Double, Long, Integer und Byte sollten demnach keine Probleme machen, weil sie bei .Value2 nicht aufgeführt sind. Boolean vermute ich bei Date und Currency, aber ich kann nicht alles testen.

Bei Variant sollte man in VBA daher immer .Value2 statt .Value oder (nichts als Default) nehmen, wenn Funktionsargumente in .Worksheetfunction.Funktion benötigt werden.
Antworten Top
#5
Hallo lupo,

danke für die Info. Ich dachte mir schon, dass es am Datum hängt. Bis jetzt habe ich mal Formeln in die Zellen geschrieben und die durch Werte ersezt, ist zwar eine Krücke, funktioniert aber. Jetzt kann ich Deinen Vorschlag noch testen.

Getestet! Funktioniert!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#6
Hallo Bosko, vielleicht noch als Nachfrage für alle:

Ist .Value2
a) nur am CountIf-Kriterium oder
b) zusätzlich am CountIf-Bereich nötig, oder auch
c) nur am CountIf-Bereich ausreichend?

Oder gibt es beim Versuch bei b) oder c) Fehler?

Ich hatte meine Testdaten nicht entsprechend ausgerüstet. Danke!
Antworten Top
#7
Hallo lupo,

ich habe es nur am Kriterium eingesetzt, das war ausreichend. Einsatz im Suchbereich führt zu einem Fehler.

Es gibt ja, soweit ich weiß,  auch bei anderen VBA-Funktionen (Match, Vlookup) Probleme mit dem Datum als Suchkriterium.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste