Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Prüfung Minuten





Frage

Hi Leute, ich habe eine Datei vorliegen mit minütlichen Messwerten eines ganzen Tages. Jetzt möchte ich gerne eine Makro schreiben, dass überprüft, ob alle Minutenwerte vorhanden sind. Wenn nicht soll es nir bei fehlenden Werten eine Leerzeile setzen. Danke schon mal für Eure Hilfe! Gruß Thomas

Antwort 1 von coros

Moin Thomas,

da Du weder schreibst, wie das Format der Zelle ist, also ob die Uhrzeit angezeigt wird oder nur die Minutenzahl, und in welcher Spalte die Zeit steht, kommt hier mal ein Makro, welches davon ausgeht, das die gesamte Zeit, also hh:mm:ss, in Spalte A ab Zeile 2 angezeigt wird. Kopiere nachfolgendes Makro in ein StanddardModul. und starte ihn über eine Befehlsschaltfläche

Sub Minutenwerte_überprüfen()
Dim Zeile As Long, Minutenwert_errechnet As Integer, _
Minutenwert As Integer, Wiederholungen As Long
Zeit = Format(Cells(2, 1), "hh:mm:ss")
Minutenwert_errechnet = Mid(Zeit, 4, 2)
For Wiederholungen = 2 To 65536
On Error GoTo Ende
Zeit = Format(Range("A" & Wiederholungen), "hh:mm:ss")
Minutenwert = Mid(Zeit, 4, 2)
If Minutenwert_errechnet = 60 Then
Minutenwert_errechnet = 0
If Minutenwert <> Minutenwert_errechnet Then
Rows(Wiederholungen).Insert Shift:=xlDown
End If
Else
If Minutenwert <> Minutenwert_errechnet Then
Rows(Wiederholungen).Insert Shift:=xlDown
End If
End If
Minutenwert_errechnet = Minutenwert_errechnet + 1
Next
Ende:
End Sub


Bei dem Makro wird zunächst einmal die Minutenzahl in Zelle A2 ermittelt. Danach wird durch eine For/Next Schleife jede Zelle ab Zelle A2 nach der Minutenzahl abgefragt. Wenn die Minutenzahl gleich einer errechneten Minutenzahl ist, dann passiert nichts. Wenn aber die Minutenzahl nicht mit der Minutenzahl, die theoretisch in der Zelle stehen müsste, übereinstimmt, wird eine Zeile über der Zelle eingefügt. Da zu der errechneten Minutenzahl am Ende der Schleife immer eine 1 dazuaddiert wird, befindet sich in der Schleife noch eine Auswertung, ob die Minutenzahl kleiner 60 ist. Wenn die Minutenzahl den Wert 60 erreicht, wird die Variable Minutenzahl_errechnet wieder auf 0 gesetzt, das es in der Uhrzeit ja keine 61, 62, 63 usw. gibt.

Ich gehe mal davon aus, da Du in Deiner Frage sofort von einem Makro gesprochen hast, dass Du weißt wie Du den Code in Deine Datei zum Laufen bekommst. Wenn nicht, dann schau mal meiner HP in der Rubrik Anleitungen und dort Anleitung zum VBA Projekt “Modul" nach. Dort gibt es eine bebilderte Anleitung, die Dir behilflich sein sollte.

Ich hoffe, Du kommst klar. bei Fragen oder Problemen melde Dich.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von coros

Hi ich noch mal,

für alle die das Ergebnis interessiert, die aber nicht erst eine Beispieldatei erstellen möchten, habe ich in der Rubrik Beispieldateien auf meiner HP eine Beispieldatei (Nr. 32) bereitgestellt, die das obige Makro beinhaltet.

MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Antwort 3 von butzemann1980

hi coros,

danke erstmal für deine schnelle hilfe, werde das makro heute mal testen, gebe dann bescheid...

gruß

thomas

Antwort 4 von butzemann1980

...makro läuft super, obwohl meine datum/zeit-spalte folgendes format hat: tt:mm:jjjj hh:mm:ss.

danke nochmal!!

habe es noch folgendermaßen leicht modifiziert, um auch eine überprüfung der stundenwerte zu erhalten:

Sub Mintutenwerte_überprüfen()
Dim Zeiley As Long, Minutenwert_errechnet As Integer, Minutenwert As Integer, Stundenwert As Integer, Stundenwert_errechnet As Integer _
, Wiederholungen As Long
zeit = Format(Cells(2, 1), "hh:mm:ss")
Minutenwert_errechnet = Mid(zeit, 4, 2)
Stundenwert_errechnet = Hour(zeit)
For Wiederholungen = 2 To 65536
On Error GoTo Ende
zeit = Format(Range("A" & Wiederholungen), "hh:mm:ss")
Minutenwert = Mid(zeit, 4, 2)
Stundenwert = Hour(zeit)
If Minutenwert_errechnet = 60 Then
Stundenwert_errechnet = Stundenwert_errechnet + 1
Minutenwert_errechnet = 0
If Minutenwert <> Minutenwert_errechnet Then
Rows(Wiederholungen).Insert Shift:=xlDown
End If
Else
If Minutenwert <> Minutenwert_errechnet Or Stundenwert <> Stundenwert_errechnet Then
Rows(Wiederholungen).Insert Shift:=xlDown
End If
End If
Minutenwert_errechnet = Minutenwert_errechnet + 1
Next
Ende:
End Sub

schön wäre jetzt noch, wenn die fehlende zeit in der eingefügten zeile erscheint.

gruß

thomas

Antwort 5 von coros

Moin Thomas,

sorry, dass ich erst heute antworte, aber ich war gestern nicht im Forum unterwegs.

Tausche nachfolgenden Code gegen den alten aus.

Sub Mintutenwerte_und_Stundenwerte_überprüfen()
Dim Zeiley As Long, Minutenwert_errechnet As Integer, _
Minutenwert As Integer, Stundenwert As Integer, _
Stundenwert_errechnet As Integer, Wiederholungen As Long
Application.ScreenUpdating = False
zeit = Format(Cells(2, 1), "hh:mm:ss")
Minutenwert_errechnet = Mid(zeit, 4, 2)
Stundenwert_errechnet = Hour(zeit)
For Wiederholungen = 2 To 65536
On Error GoTo Ende
zeit = Format(Range("A" & Wiederholungen), "hh:mm:ss")
Minutenwert = Mid(zeit, 4, 2)
Stundenwert = Hour(zeit)
If Minutenwert_errechnet = 60 Then
Stundenwert_errechnet = Stundenwert_errechnet + 1
Minutenwert_errechnet = 0
If Minutenwert <> Minutenwert_errechnet Then
Rows(Wiederholungen).Insert Shift:=xlDown
Cells(Wiederholungen, 1) = Format(Stundenwert_errechnet & ":" & _
Minutenwert_errechnet & Mid(zeit, 6, 9), "hh:mm:ss")
End If
Else
If Minutenwert <> Minutenwert_errechnet Or _
Stundenwert <> Stundenwert_errechnet Then
Rows(Wiederholungen).Insert Shift:=xlDown
Cells(Wiederholungen, 1) = Format(Stundenwert_errechnet & ":" & _
Minutenwert_errechnet & Mid(zeit, 6, 9), "hh:mm:ss")
End If
End If
Minutenwert_errechnet = Minutenwert_errechnet + 1
Next
Ende:
End Sub


Bei dem Code werden die fehlenden Uhrzeiten eingefügt.

Ich hoffe, dass ist so, wie Du es Dir vorstellst. Bei Fragen oder Problemen melde Dich.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von butzemann1980

super! läuft alles!

was würde ich nur ohne dieses forum machen?!

nochmal danke für deine hilfe!

gruß

thomas

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: