Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
604to608
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
604to608
604to608
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

per vba den zahlenwert von datum/Uhrzeit ermitteln

per vba den zahlenwert von datum/Uhrzeit ermitteln
05.05.2005 20:30:48
datum/Uhrzeit
Hallo Wissende,
in A1 steht 01.05.2005 16:02:00 , ist auch so formatiert, B1 ist als Standard formatiert, dort steht dann als Formel: =A1 und die Anzeige ist 38473,66806, wie mache ich das in vba, also wie erhalte ich die 38473,66806 aus A1?
Dankeschön im Voraus
Gruß
Reinhard

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: per vba den zahlenwert von datum/Uhrzeit ermitteln
05.05.2005 20:33:15
datum/Uhrzeit
Hallo Reinhard,
Dim Wert as double
Wert = Cdbl(Range("A1").value
Msgbox Wert
Gruß
Sigi
AW: per vba den zahlenwert von datum/Uhrzeit ermit
05.05.2005 23:51:30
datum/Uhrzeit
Hallo Sigi,
funktioniert, danke, aber ich häng an sich an was anderem und dachte so käm ich weiter aber ich häng noch fest.
Ich wollte Wete filtern die zwischen 2 Uhrzeiten liegen, aber es wird nichts ausgewählt bei:
Sub test()
Range("a1").Select
MsgBox CDbl(CDate("01.05.2005 16:00"))
Selection.AutoFilter Field:=1, _
Criteria1:=">=" & CStr(CDbl(CDate("01.05.2005 16:00"))), Operator:=xlAnd, Criteria2:="<=" & CStr(CDbl(CDate("01.05.2005 18:00")))
End Sub
bezogen auf die Tabelle:
Tabellenblattname: Tabelle1
A                  B
1             zeiten
2  01.05.05 16:02:00   38473,6680555556
3  01.05.05 15:02:00   38473,6263888889
4  01.05.05 17:34:00   38473,7319444444
5  01.05.05 19:02:00   38473,7930555556
Benutzte Formeln:
B2:  =A2
B3:  =A3
B4:  =A4
B5:  =A5
Namen in der Tabelle:
Tabelle1!_FilterDatabase:  =Tabelle1!$A$1:$A$7
Gruß
Reinhard

Anzeige
noch offen vergessen o.w.T.
06.05.2005 00:20:57
Reinhard
AW: noch offen vergessen o.w.T.
06.05.2005 10:07:17
WernerB.
Hallo Reinhard,
mit Deinem Problem habe ich mich jetzt einige Zeit intensiv auseinander gesetzt und bin zu folgendem Ergebnis gekommen:
1. Sehr wahrscheinlich ist es so, dass der Autofilter bei Datum nur das Tagesdatum (aber keine mit dem Tagesdatum verbundene Uhrzeit) berücksichtigt; diese Angabe ist ohne Gewähr!
2. Wenn Tagesdatum und Uhrzeit in einer Zelle stehen, könnte die Formatierung dieser Zellen als "Text" Abhilfe bringen; allerdings müssen dann die Datums- und Uhrzeitwerte auch als Text eingegeben werden (mit dem Datum kann dann natürlich nicht mehr gerechnet werden).
Unter dieser Voraussetzung funktioniert bei mir dieses Makro:

Sub test()
Range("A1").Select
Selection.AutoFilter Field:=1, _
Criteria1:=">=01.05.2005 16:00", _
Operator:=xlAnd, _
Criteria2:="<=01.05.2005 18:00"
End Sub

3. Die Variante, Tagesdatum und Uhrzeit in getrennten Zellen/Spalten unterzubringen, habe ich jetzt nicht getestet.
4. Vielleicht kennt ja ein anderer Forumsteilnehmer eine bessere Lösung; deswegen habe ich den Beitragsstatus noch immer auf "offen" gesetzt.
Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
Lösung
06.05.2005 11:47:38
Reinhard
Hallo Werner,
danke dir für deine Mühen. Ich habe deine Ansätze übernommen und wollte das formatieren als Text per VBa machen, leider bekam ich das nicht hin und auch andere Ansätze mit Hilfsspalten wo nur die Uhrzeit als Text steht usw scheiterteten.
Woanders fand ich dann die geniale Lösung, wo man die Daten als Datumswerte lassen kann.
Sub test()
Range("a1").AutoFilter Field:=1, _
Criteria1:=">=" & Replace(CDbl(CDate("1.5.2005 16:00")), ",", "."), _
Operator:=xlAnd, _
Criteria2:="<=" & Replace(CDbl(CDate("1.05.2005 18:00")), ",", ".")
End Sub

Gruß
Reinhard
Anzeige
Replace ?
07.05.2005 15:19:43
WernerB.
Hallo Reinhard,
mit Deiner "Replace"-Variante dürftest du vermutlich Schiffbruch erleiden.
Da scheint mir diese Version doch wesentlich erfolgversprechender:

Sub test()
Range("A1").AutoFilter Field:=1, _
Criteria1:=">=" & WorksheetFunction.Substitute _
(CDbl(CDate("01.05.2005 16:00")), ",", "."), _
Operator:=xlAnd, _
Criteria2:="<=" & WorksheetFunction.Substitute _
(CDbl(CDate("01.05.2005 18:00")), ",", ".")
End Sub

Gruß
WernerB.
AW: Replace ?
07.05.2005 16:48:20
Reinhard
Hallo Werner,
der das dort postete gibt sich immer sehr sehr viel Mühe zu helfen (siehe Anhang) und da er wie hier mit Jeannie auch eine Beispieltabelle hinterlegte habe ich es nicht getestet.
Gruß
Reinhard
Hallo Stefan,
das Problem ist wohl, dass bei den AutoFilter-Kriterien Datum/Uhrzeit nicht in diesem
Format, sondern als Zahlenwerte vorgegeben werden müssen. (Dann kann Excel die Werte mit
den Zellwerten, die intern ja auch nur Dezimalzahlen sind, vergleichen.)
Mit ">=38473.66667" anstelle von ">=01.05.2005 16:00"
und " (also mit Dezimalpunkt statt Komma) sollte es gehen.
Wenn deine Tabelle etwa so aussieht:
_|________A________|_B__|C|_D__|________E________|_F__|________G________|
1|     Zeit        |Txt | |von | 01.05.2005 16:00|bis | 01.05.2005 18:00|
2| 01.05.2005 14:00|tx1 | |    |                 |    |                 |
3| 01.05.2005 15:00|tx2 | |    |                 |    |                 |
4| 01.05.2005 16:00|tx3 | |    |                 |    |                 |
5| 01.05.2005 17:00|tx4 | |    |                 |    |                 |
6| 01.05.2005 18:00|tx5 | |    |                 |    |                 |
7| 01.05.2005 19:00|tx6 | |    |                 |    |                 |
8| 01.05.2005 20:00|tx7 | |    |                 |    |                 |
und "AutoFilter" eingeschaltet ist, liest das folgende Makro die beiden Vorgabedaten in
E1 und G1 (als Zeichenketten), wandelt sie in Double um, ersetzt Komma durch Punkt und
stellt den Autofilter ein. Dann sollte man nur noch die Zeilen 4 bis 6 sehen.
Sub Filter_DatumZeit()
Dim kr1$, kr2$
kr1 = ">=" & Replace(CDbl([E1]), ",", ".")
kr2 = "<=" & Replace(CDbl([G1]), ",", ".")
Selection.AutoFilter Field:=1, Criteria1:=kr1, Operator:=xlAnd, Criteria2:=kr2
End Sub
Kannst du damit dein Problem lösen?
(Vermutlich gehts auch einfacher, aber so funzt es schon mal.)
Grüße aus Kamp-Lintfort
Erich

Anzeige
AW: Replace !!!
09.05.2005 12:50:11
WernerB.
Hallo Reinhard,
ich muss meine Zweifel an "Replace" relativieren.
Die "Replace"-Funktion scheint jüngeren Datums zu sein. Ich hatte das Makro mit Excel 97 getestet, da gibt es diese Funktion noch nicht (ob in Excel 2000, weiß ich nicht); in Excel XP klappt die Sache jedenfalls.
Hingegen mit Excel 97 und (vermutlich) allen jüngeren Versionen funktioniert die von mir vorgeschlagene "WorksheetFunction.Substitute"-Variante.
Übrigens: Die Erklärung von Erich zum Problem leuchtet mir ein, sie ist für mich gut nachvollziehbar.
Gruß
WernerB.
AW: Replace !!!
09.05.2005 23:28:54
Reinhard
Hallo Werner,
ja in 2000 gibt es das.
Jepp. Erich ist wirklich sehr engagiert, siehe Anhang, den er nur so als Info postete, seh ich gern sowas, kann jeder von lernen.
Gruß
Reinhard
Hallo Excelianer,
wenn man mal sehen möchte, mit welchem Zahlenwert Excel rechnet, wenn in einer Zelle ein Datum, eine Zeit oder auch das nummerische Ergebnis einer Formel steht, lässt sich das einfach durch anhängen einer leeren Zeichenkette machen.
Steht in A1 etwa das Datum 07.05.2005, zeigt die Formel =A1 & "" den Wert 38479.

Kleine Beispieltabelle:
|           A            |         B          |
1 |      Darstellung       |   Wert als Text    |
2 |             07.05.2005 | 38479              |
3 |    07.05.2005 00:00:00 | 38479              |
4 |                  09:11 | 0,382638888888889  |
5 |                  09:12 | 0,383333333333333  |
6 |       07.05.2005 09:11 | 38479,3826388889   |
7 |  07.05.2005 08:54:17,4 | 38479,3710347222   |
8 |  07.05.2005 08:54:17,6 | 38479,371037037    |
9 |  07.05.2005 08:54:18,0 | 38479,3710416667   |
10 |            0,142857143 | 0,142857142857143  |
11 |            0,666666667 | 0,666666666666667  |
Benutzte Formeln:
A10: =1/7
A11: =2/3
B2 : =A2 & ""
B3 : =A3 & ""
usw. bis
B11: =A11 & ""
In den Zeilen 7 bis 9 zeigt sich, dass auch Zehntelsekunden ordentlich verarbeitet werden können.
Bei den Zeilen 10 und 11 kann man auch schön erkennen, dass Excel mit mehr Stellen rechnet als (im Standard) dargestellt werden.
Grüße aus Kamp-Lintfort
Erich

Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige