Anzeige
Archiv - Navigation
1260to1264
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Funktion CountIf

Funktion CountIf
Riga
Hallo
ich hoffe mir kann hier einer helfen. Ich schlage mich seit Tagen mit der Funktion CountIf herum.
Folgendes Problem: Ich habe 2000 Fondkurse im Bereich IF1:IF2000 eingetragen. Daraus soll mit Hilfe einer Indikatorfunktion ( Gibt es sowas bei VBA?) eine Verteilungsfunktion entsthen.
Dazu habe ich mir überlegt, dass ich in relativ kleinen Schritten die Werte zähle, die kleiner gleich einem bestimmten Wert sind.
Folgendes Funktioniert:
Dim x(1 to 10) As Double
Dim k As Double
k= 43
Worksheets("Pfade").Select
For i =1 To 10
y = k + i
x(i) = WorksheetFunction.CountIf(Range("IF1:IF2000"), "<=" & y)
Next i
~f~
Wenn ich aber die Schrittweite auf 0.5 setzte ( natürlich dann auch ~f~ i= 0.5 to 4.5~f~ ) dann "funktioniert" die Funktion bei den Zahlen mit Nachkommastellen nicht. Ergbenis ist dann immer Null.
Das kann aber nicht sein, wenn schon bei ~f~ y=44~f~ die Funktion gleich 1 ist, dann muss bei ~f~ y=44,5 die Funktion auch mindestens 1 sein.

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

Betreff
Benutzer
Anzeige
AW: Funktion CountIf
09.05.2012 11:04:15
bst
Hi,
VBA spricht englisch. Ersetze das Komma in y mit einem Punkt.
x(i) = WorksheetFunction.CountIf(Range("IF1:IF2000"), "&LT;=" & Replace(y, ",","."))
cu, Bernd
AW: Funktion CountIf
09.05.2012 11:34:23
Riga
Joa, det is klar. Deshalb steht bei Schrittweite 0.5 und nicht 0,5
AW: Funktion CountIf
09.05.2012 11:40:21
bst
Hi,
nein, ist es wohl nicht. Was glaubst Du denn was:
y = 0.5
MsgBox "&LT=" & y
ergibt?
cu, Bernd
AW: Funktion CountIf
09.05.2012 12:04:39
Riga
Hallo,
also denn noch mal zum Verständnis. Auch wenn 0.5 für y einetzte, muss ich dann noch mal excel explizit sagen, dass da zwischen der 0 und der 5 ein Punkt steht?
Ich habe keine Ahnung, was dein obengenanntes Beispiel ergibt. Ich schreib zum erstenmal mit VBA und würde am liebsten den PC gegen die Wand klatschen vor Wut. Es ist nicht leicht in einer Sprache zu progammieren, die man nicht kennt. Deshalb suche ich hier Lösungen und bitte, etwaige Patzer meinerseits zu entschuldigen.
Gruß, R
Anzeige
AW: Funktion CountIf
09.05.2012 12:15:08
bst
Hi,
Du mixt da Äpfel mit Birnen, bzw. Strings mit Gleitkommazahlen. Bei:
"&LT=" & y
nötigst Du VBA die Gleitkommazahl y in einen String zu wandeln. Dazu nutzt VBA implizit (nehme ich mal einfach an) die Funktion CSTR. So dass Du also da:
"&LT=" & CStr(y)
stehen hast. CStr nun aber - wie könnte es auch anders sein ;-) - benutzt zur Wandlung den lokal eingestellten Dezimaltrenner. Und das ist in Deutschland eben ein KOMMA.
Du erhältst also für y = 0.5 hier ein "&LT=0,5".
Und das funktioniert nicht in WorksheetFunction.CountIf da hier - in VBA - eine (us)-englisch formatierte Gleitkommazahl erwartet wird.
Jetzt klarer ?
Bernd
Anzeige
AW: Funktion CountIf
09.05.2012 13:04:47
Riga
Aha, vielen Dank!
Hast du eventuell eine Idee, wie ich diese Umwandlung umgehen kann? Oder gibt es eine andere Funktion als countIf, die ich für mein Problem benutzen kann?
VG
AW: Funktion CountIf
09.05.2012 14:22:56
bst
Hi,
alternativ zum Replace sollte hier - unabhängig vom Locale - auch ein ein Str(y) funktionieren, d.h.:
x(i) = WorksheetFunction.CountIf(Range("IF1:IF2000"), "&LT=" & Str(y))
cu, Bernd
AW: Funktion CountIf
09.05.2012 11:37:17
Riga
Jo, det is klar. Vllt war das Wort " Nachkommastellen" missverständlich, ich hätte auch Gleitpunktzahlen schreiben können. Die Schrittweite ist 0.5 und nicht 0,5. VBA hätte dann ja schon vorher gemekert.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige