![]() |
Betrifft: Problem mit countIf und Datum
von: reefgirl81
Geschrieben am: 16.09.2014 02:05:55
Liebe Mitglieder,
ich habe vor kurzem mit VBA begonnen. Ich muss dazu sagen, dass ich bereits seit Jahren in C# und Java entwickle. Ich weiß, nun aber trotzdem nicht mehr weiter.
Ich habe mir bereits sehr viel Hilfe von euch geholt, indem ich alte Forumsbeiträge durchstöbert habe, aber leider...
Ich weiß, dass die Frage bzgl. der WorksheetFunction.CountIf bereits öfters gestellt wurde und habe diese Beiträge bereits studiert und ich komme auch meinen Fehler nicht drauf.
Es geht um eine kleine Teilfunktion meines Programms. Ich habe in einer Spalte Range("A4:A" & lastRowData) lauter Daaten (formatiert als Datum kurz) gespeichert habe. Das mittels countIf, möchte ich herausfinden, ob es Daten gibt, welche größer als bspw. der 30.06.2014 sind. Die betreffenden Codezeilen sehen wie folgt aus:
Dim toDate As Date Dim countIfs As Double Dim rangeDates As range Dim lastRowData As Integer ' ist die letzte Zeile in meinem Arbeitsblatt
toDate = Format("30.06.2014", "dd.mm.yyyy") Set rangeDate = ActiveWorkbook.Sheets("Daten").range("A4:A" & lastRowData) countIfs = WorksheetFunction.CountIf(rangeDates, ">" & toDate)
![]() ![]() |
Betrifft: AW: Problem mit countIf und Datum
von: Luschi
Geschrieben am: 16.09.2014 05:05:58
Hallo reefgirl81,
zwei kleine Änderungen sind erforderlich:
- Dim toDate As String
- toDate = Format("30.06.2014", "M\/d\/yyyy")
In Vba ist eben alles amerikanisch und gerade bei der Datumssuche wird durch den Programmierer viel zu viel deutsch gedacht. In der Tabellenansicht ist das Datum zwar nationalisiert/regionalisiert, aber im Innersten doch amerikanisch gespeichert.
Gruß von Luschi
aus klein-Paris
![]() ![]() |
Betrifft: AW: Problem mit countIf und Datum
von: reefgirl81
Geschrieben am: 16.09.2014 17:20:42
Hallo Luschi,
danke vielmals für deine rasche Antwort... mit so einer Geschwindigkeit habe ich nicht gerechnet.
Ich habe deinen Vorschlag übernommen, jedoch funktoniert es immer nocht nicht. Das Ergebnis ist 0 obwohl es 307 sein sollte.
Eigentlich will ich wissen, wieviele Feedbackbögen innerhalb einer angegebenen Zeitspanne ausgefüllt wurden. Deshalb frage ich mit dem ersten countIf ab, ob es Daten gibt die kleiner als das Startdatum sind und subtrahiere diese von der Variable numberOfFB. Die zweite countIf sollte das Ergebnis zurückliefern, wieviele nach dem Endedatum enthalten sind. Schlussendlich sollte die Variable numberOfFB die Anzahl der innerhalb in dieser Zeitspanne ausgefüllten Feedbackbögen ergeben.
Ich weiß, dass der Weg etwas kompliziert ist, aber mit countIfs hat gar nichts funktioniert und deshalb bin ich auf diesen Weg gekommen.
Die im Code unterhalb enthaltenen Variablen aktDatFrom und aktDatTo sind vom Typ Date im Format "dd.mm.yyyy"
Dim countIfs As Double Dim numberOfFB As Integer ' Anzahl der gesamten Feedbackbögen/Daten Dim fromDate As String Dim rangeDate As range Dim toDate As String Set rangeDate = ActiveWorkbook.Sheets("Daten").range("A4:A" & lastRowData)
fromDate = Format(aktDatFrom, "M\/d\/yyyy") toDate = Format(aktDatTo, "M\/d\/yyyy") ' Format("30.06.2014", "M\/d\/yyyy") numberOfFB = lastRowData - 3 ' da die ersten drei Zeilen im Arbeitsblatt die Ü _ berschriften enthalten
countIfs = WorksheetFunction.CountIf(rangeDate, "<" & fromDate) numberOfFB = numberOfFB - countIfs countIfs = WorksheetFunction.CountIf(rangeDate, ">" & toDate) numberOfFB = numberOfFB - countIfsWürde mich über weitere Hilfe freuen. Danke schonmal im voraus
![]() ![]() |
Betrifft: AW: Problem mit countIf und Datum
von: Luschi
Geschrieben am: 16.09.2014 18:32:57
Hallo reefgirl81,
hier mal ein Beispiel von mir. Die Datumswerte in Spalte 'A' können sortiert oder unsortiert ermittelt werden. Einige Datumswerte entsprechen nicht dem Standardformat - und funktioniert.
https://www.herber.de/bbs/user/92668.xlsm
Gruß von Luschi
aus klein-Paris
![]() |