Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
852to856
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
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeit in VBA-If-Anwesiung geht nicht

Zeit in VBA-If-Anwesiung geht nicht
13.03.2007 14:21:01
Steve
Hallo!
Ich habe zwei Tabellen wo Zeiten drinstehen und er soll die vergleichen und dann Werte übertragen.
Irgendwie will er aber nicht, obwohl es sonst geht (=WENN(E8=xyz!D3;"ja";"nein")).
Tabelle A (Zeiten mit Sprüngen)
05:00
07:00
...
Tabelle B (Zeiten der Reihe nach)
00:00
01:00
02:00
03:00
...
Hier der Code:
j = 3
For i = 3 To 74 'Auslesen der Zeilen
If ActiveSheet.Cells(i, 5) = ThisWorkbook.Sheets("xyz").Cells(j, 4)) Then 'Uhrzeit auslesen
ActiveSheet.Cells(i, 6) = ThisWorkbook.Sheets("xyz").Cells(j, 5)
j = j + 1
Else
ActiveSheet.Cells(i, 7) = "xxx"
End If
Next i
Die Zellen sind als Zeit (00:00:00) formatiert.
Muß ich die Abfragen noch irgendwie umwandeln damit er sie vergleichen kann?
Steve

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeit in VBA-If-Anwesiung geht nicht
13.03.2007 15:48:50
Rudi
Hallo,
Die Zellen sind als Zeit (00:00:00) formatiert.

Schön! Aber was steht drin?
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
AW: Zeit in VBA-If-Anwesiung geht nicht
13.03.2007 15:53:00
Steve
Unformatierter weise das und zwar bei beiden:
0,208333333
0,25
0,291666667
0,333333333
0,833333333
0,875
0,916666667
0,958333333
0
AW: Zeit in VBA-If-Anwesiung geht nicht
13.03.2007 16:21:00
Erich
Hallo Steve,
dass das nicht funzt, liegt weder am Uhrzeitformat noch an der If-Anweisung,
sondern an der Steuerung der Zeilen, in denen gesucht wird.
Wenn in der aktiven Tabelle o Uhr nicht vorkommt, bleibt j auf 3 stehen,
alle Zeiten der aktiven Tabelle werden nur mit 00:00 verglichen, nichts wird gefunden.
Um zu entscheiden, wie man effektiv suchen sollte:
Sind die (über 70) Zeiten in der aktiven Tabelle sortiert?
Stehen in Tab. xyz genau die 24 Zeiten 00:00, 01:00, ..., 23:00 ?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Zeit in VBA-If-Anwesiung geht nicht
13.03.2007 16:52:38
Steve
In Tabelle A sind 12 Werte drin, weil die Zeiten zusammengefaßt werden. In Tabelle B sollen alle möglichen Zeiten drin sein (72).
Dann soll mir das Programm die Tabellen vergleichen: wenn der Eintrag 00:00 nicht in Tabelle A ist, rückt er in Tabelle B (i) eins weiter. Wenn er was findet, rückt er auch in Tabelle A (j) eins weiter und vergleicht den nächsten Wert.
Tabelle A = XYZ
Tabelle B = aktuelles Register
Demnach müßte Tabelle B dann so aussehen
00:00 - xxx
01:00 - xxx
02:00 - Wert aus TA
03:00 - xxx
...
Steve
AW: Zeit in VBA-If-Anwesiung geht nicht
13.03.2007 19:28:00
Erich
Hi Steve,
teste mal diese beiden:
Option Explicit

Sub tst2()
   Dim zLastB As Long, zLastXYZ As Long
   Sheets("TabelleB").Select

   zLastB = Cells(Rows.Count, 5).End(xlUp).Row
   zLastXYZ = Sheets("xyz").Cells(Rows.Count, 4).End(xlUp).Row

   Range(Cells(3, 6), Cells(zLastB, 6)).FormulaR1C1 = _
      "=IF(ISNA(VLOOKUP(RC[-1],xyz!R3C4:R" & zLastXYZ & "C4,1,0)),""xxx""," & _
      "VLOOKUP(RC[-1],xyz!R3C4:R" & zLastXYZ & "C5,2,0))"

'  Range(Cells(3, 6), Cells(zLastB, 6)) = Range(Cells(3, 6), Cells(zLastB, 6)).Value
End Sub

Sub tst()
   Dim zB As Long, zXYZ As Long, zLastXYZ As Long

   Sheets("TabelleB").Select
   zXYZ = 3
   With Sheets("xyz")
      zLastXYZ = .Cells(Rows.Count, 4).End(xlUp).Row
      For zB = 3 To Cells(Rows.Count, 5).End(xlUp).Row
         Select Case Cells(zB, 5)
            Case Is  .Cells(zXYZ, 4) And zXYZ 
Die erste ist viel schneller, die zweite hangelt sich so durch.
Wenn du in der ersten Prozedur die letzte Anweisung aktivierst,
stehen nicht mehr Formeln, sondern nur noch Werte in TabelleB.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Zeit in VBA-If-Anwesiung geht nicht
14.03.2007 13:11:00
Steve
Danke für den Code, aber das war nicht meine Frage.
Der Fehler liegt in den Werten
TA: 0,208333333333333
TB: 0,208333333333333
Seiht ja erstmal gleich aus, aber wenn ich beide substrahiere, dann kommt als Ergebnis nicht "0" sondern "-3,33067E-16". Darum funktioniert das ganze nicht. Warum, weiß ich immer noch nicht.
Werde da beim Import wohl was ändern müssen.
AW: Uhrzeiten vergleichen (VBA)
14.03.2007 16:18:22
Erich
Hallo Steve,
wenn die Daten für die Uhrzeiten auf unterschiedliche Weise berechnet werden,
können derartige Unterschiede in den letzten Dezimalstellen leicht entstehen.
Schau mal zur Info in
https://www.herber.de/forum/archiv/824to828/t824274.htm
Damit sollte sich das - ohne Änderung des Imports - lösen lassen:

Sub tst()
Dim zB As Long, zXYZ As Long, zLastXYZ As Long
Sheets("TabelleB").Select
zXYZ = 3
With Sheets("xyz")
zLastXYZ = .Cells(Rows.Count, 4).End(xlUp).Row
For zB = 3 To Cells(Rows.Count, 5).End(xlUp).Row
Select Case Application.Round(Cells(zB, 5) - .Cells(zXYZ, 4), 9)
Case Is  0 _
And zXYZ 
Der Code, den du gepostet hattest, läuft auch mit "richtigen" Uhrzeiten nicht ... ;-)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige