Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
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

Datum auswerten

Datum auswerten
Holger
Guten Abend,
ich kriege leider folgende Formal einfach nicht hin:
In Spalte A habe ich als Datum das ganze Jahr abgebildet, für jeden Tag 24 Stunden, also über 8000 Zeilen. In Spalte B habe ich für jede Stunde die entsprechenden Umsatzwerte.
Ich benötige nun die Anzahl von Tagen, wo in allen 24 Stunden der Umsatz = 0 ist.
Vielleicht habt Ihr ja eine Idee?
Vielen Dank und Gruß
Holger

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Datum auswerten
22.06.2011 09:41:56
Dirk
Hallo!
vieleicht so (ungetestet)
Sub CheckRevenue()
dim i as long, LastRow as long, NoRevDay as long, MyRange as Range
LastRow=Range("A65536").end(xlup).row
NoRevDay=0
For i=1 to lastrow
if worksheetfunction.isdate(cells(i,1))=true then
'Myrange setzen fuer Datum (24 zeilen)
set myrange=Range(cells(i,1),cells(i+23,1))
if application.count(myrange.offest(0,1))=0 then
NoRevDay=NoRevDay + 1
i=i+23
else
i=i+23
end if
end if
next i
MsgBox "Kein Umsatz an " & NoRevDay & " Tagen"
End Sub
Lass' hoeren, ob ok.
gruss
Dirk aus Dubai
Anzeige
AW: Datum auswerten
22.06.2011 10:46:57
Holger
Hallo Dirk,
bleibt bei dieser Zeile stehen:
If WorksheetFunction.IsDate(Cells(i, 11)) = True Then
mit der Meldung: Objekt unterstützt diese Eigenschaft oder Methode nicht
... kann damit leider nix anfangen!
Gruß & Dank
Holger
P.S.: Makrolösung wäre schon sehr schön! Als Formel geht das wohl nicht?!?
AW: Datum auswerten
22.06.2011 13:03:42
Dirk
Sorry, kleiner Fehler meinerseits.
Hier nochmal korrigiert:
Sub CheckRevenue()
Dim i As Long, LastRow As Long, NoRevDay As Long, MyRange As Range
LastRow = Range("A65536").End(xlUp).Row
NoRevDay = 0
For i = 1 To LastRow
If IsDate(Cells(i, 1).Value) = True Then
'Myrange setzen fuer Datum (24 zeilen)
Set MyRange = Range(Cells(i, 1), Cells(i + 23, 1))
If Application.CountIf(MyRange.Offset(0, 1), "0") = 0 Then
NoRevDay = NoRevDay + 1
i = i + 23
Else
i = i + 23
End If
End If
Next i
MsgBox "Kein Umsatz an " & NoRevDay & " Tagen"
End Sub
Gruss
Dirk aus Dubai
Anzeige
AW: Datum auswerten, kleiner Nachtrag
22.06.2011 13:22:27
Dirk
Hallo!
Falls Du auch die Tage brauchst, an denen kein Umsatz statt fand, nimm dieses:
Sub CheckRevenue()
Dim i As Long, LastRow As Long, NoRevDay As Long, MyRange As Range, Msg as string
LastRow = Range("A65536").End(xlUp).Row
NoRevDay = 0
For i = 1 To LastRow
If IsDate(Cells(i, 1).Value) = True Then
'Myrange setzen fuer Datum (24 zeilen)
Set MyRange = Range(Cells(i, 1), Cells(i + 23, 1))
If Application.CountIf(MyRange.Offset(0, 1), "0") = 0 Then
NoRevDay = NoRevDay + 1
Msg=msg & vbcrlf & cstr(Cells(i,1).value)
i = i + 23
Else
i = i + 23
End If
End If
Next i
MsgBox "Kein Umsatz an " & NoRevDay & " Tagen." & vbcrlf & "Umsatzlose tage: " & vbcrlf & msg
End Sub
Gruss
Dirk aus Dubai
Anzeige
AW: Datum auswerten, kleiner Nachtrag
22.06.2011 14:26:31
Holger
Hallo Dirk,
erst mal vielen herzlichen Dank für Deine Hilfe!!
Es gibt nur leider noch ein kleines Problem: durch die Zeitumstellung bedingt, ändert sich die Stundenzahl von Oktober bis März (23 und 25 Stunden). Dadurch wird das ganze in diesem Zeitraum etwas unscharf!
In den anderen Zeiten läuft es 110%!!
Falls der Aufwand das entsprechend zu berücksichtigen, nehme ich das so hin. Ich bin echt froh, eine Lösung zu haben!!!
Noch eine Frage [eher Bitte]: Kann man das Ergebnis in einer Zelle ausgeben? ... und die Liste mit den Datumsangaben in einem Zielbereich?
So, das war schon alles :-))
Vielen Dank nochmals für Deine tolle Unterstützung!
Holger
Anzeige
AW: Datum auswerten, kleiner Nachtrag
22.06.2011 16:15:58
Dirk
Hallo!
mal auf die Schnelle ohne zu testen:
Sub CheckRevenue()
Dim i As Long, LastRow As Long, NoRevDay As Long, MyRange As Range, Msg As String
Dim SameDateCnt As Long, DateArr() As Variant
LastRow = Range("A65536").End(xlUp).Row
NoRevDay = 0
For i = 1 To LastRow
If IsDate(Cells(i, 1).Value) = True Then
'Myrange setzen fuer selbes Datum
For SameDateCnt = 1 To 26
If Cells(i + SameDateCnt, 1).Value  Cells(i, 1).Value Then
SameDateCnt = SameDateCnt - 1
Exit For
End If
Next SameDateCnt
Set MyRange = Range(Cells(i, 1), Cells(i + SameDateCnt, 1))
If Application.CountIf(MyRange.Offset(0, 1), "0") = 0 Then
NoRevDay = NoRevDay + 1
ReDim Preserve DateArr(NoRevDay)
DateArr(NoRevDay) = Cells(i, 1).Value
i = i + 23
Else
i = i + 23
End If
End If
Next i
Cells(1, 5).Value = "Umsatzlose Tage:"
Cells(1, 6).Value = NoRevDay
Cells(2, 5).Value = "Kein Umsatz:"
For i = LBound(DateArr) To UBound(DateArr)
If DateArr(i)  "" Then
Cells(1 + i, 6) = DateArr(i)
End If
Next i
End Sub

Lass' hoeren, ob ok.
Gruss
Dirk aus Dubai
Anzeige
Morgen
22.06.2011 18:45:21
Michael
Hallo Dirk,
ich komme leider erst morgen dazu, das in Ruhe zu testen. Ich gebe Dir bis 10:30 eine Rückmeldung!!
Vielen Dank für Deinen Einsatz und bis morgen dann
Gruß
Holger
später geworden
23.06.2011 12:35:10
Holger
Hallo Dirk,
funktioniert noch nicht ganz. Im Moment werden auch Stunden, die nicht an einem Tag = 0 waren, zu einem Tag zusammengefasst!
Gruß
Michael
P.S.: Bitte entschuldige meine verspätete Antwort. War leider total im Stress!
Dummy
23.06.2011 13:09:38
Holger
Hallo Dirk,
anbei mal eine Dummydatei mit "unechten" Daten!
https://www.herber.de/bbs/user/75423.xlsx
Vielleicht hilft Dir das ja bei der Fehlersuche?
Gruß
Michael
Anzeige
AW: später geworden
23.06.2011 13:11:10
Dirk
Hallo!
Ja, hatte noch das mit den unterschiedlichen Tagesanzahlen uebersehen.
Sub CheckRevenue()
Dim i As Long, LastRow As Long, NoRevDay As Long, MyRange As Range, Msg As String
Dim SameDateCnt As Long, DateArr() As Variant
LastRow = Range("A65536").End(xlUp).Row
NoRevDay = 0
For i = 1 To LastRow
If IsDate(Cells(i, 1).Value) = True Then
'Myrange setzen fuer selbes Datum
For SameDateCnt = 1 To 26
If Cells(i + SameDateCnt, 1).Value  Cells(i, 1).Value Then
SameDateCnt = SameDateCnt - 1
Exit For
End If
Next SameDateCnt
Set MyRange = Range(Cells(i, 1), Cells(i + SameDateCnt, 1))
If Application.CountIf(MyRange.Offset(0, 1), "0") = 0 Then
NoRevDay = NoRevDay + 1
ReDim Preserve DateArr(NoRevDay)
DateArr(NoRevDay) = Cells(i, 1).Value
i = i + SameDateCnt
Else
i = i + SameDateCnt
End If
End If
Next i
Cells(1, 5).Value = "Umsatzlose Tage:"
Cells(1, 6).Value = NoRevDay
Cells(2, 5).Value = "Kein Umsatz:"
For i = LBound(DateArr) To UBound(DateArr)
If DateArr(i)  "" Then
Cells(1 + i, 6) = DateArr(i)
End If
Next i
End Sub

Gruss
Dirk aus Dubai
Anzeige
Bingo
23.06.2011 14:21:29
Holger
Hallo Dirk,
also recht herzlichen Dank für Deine Mühe. Klappt super!
Gruß
Holger

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige