Autor
|
Thema: Zellen löschen, wenn Datum und Uhrzeit übereinstimmt (2156 mal gelesen)
|
FelixP Mitglied Student
Beiträge: 4 Registriert: 01.09.2015 Windows 8 Excel 2013
|
erstellt am: 01. Sep. 2015 13:42 <-- editieren / zitieren --> Unities abgeben:
Liebe Forumsmitglieder, ich als Student habe schon einige Sachen mittels VBA gelöst, aber dieser Fall sprengt meine Fähigkeiten: Ich hoffe, der Anhang reicht euch zum Testen aus. http://www.uploadagent.de/show-199951-1441107421.html Aus Labordaten bekomme ich eine TDMS und eine CSV-Datei ausgegeben. Die TDMS-Datei schreibt fortlaufend Daten. Die CSV-Datei unterbricht manchmal den Schreibprozess. So fehlen teilweise Sekunden (E2-E3; 09:10:48-09:10:50, es fehlt 09:10:49). Bei einer halben Stunde Messdaten können das bis zu 20 sec Unterschied am Ende sein. Es kommt mir nicht auf die Zehntel an (Rundungsfehler sind egal), aber 10 Sekunden Offset sind zu viel. Nun möchte ich, dass Excel, wenn Datum und Uhrzeit (A, sowie D&E) nicht übereinstimmen, die Spalten A-C löscht. Im Beispiel wäre das Zeile 3. Weiter unten im Beispeil ist aufgeführt, wie es dann aussehen soll. Ich hoffe, mich verständlich ausgedrückt zu haben und hoffe auf Hilfe. Viele Grüße Felix
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 01. Sep. 2015 15:54 <-- editieren / zitieren --> Unities abgeben: Nur für FelixP
Hallo Felix, Willkommen im Forum Zunächst einmal, wenn Du die Excelmappe zipst hättest Du diese auch hier hochladen können, aber egal. Zu Deinen Daten noch eine Nachfrage: Hätte da nicht schon früher ein Wert gelöscht werden sollen? 09:10:48,551 liegt doch näher an 9:10:49 als an 09:10:48 ... Prinzipiell kannst Du über ein Makro die Zeilen mit diesem Code löschen und die darunterliegenden hochschieben:
Code:
Range("A3:C3").Delete Shift:=xlUp
Nun müßte man nur noch die Spalte A durchlaufen und mit Spalte E vergleichen. Wie verhalten sich denn die Werte in Spalte Time nach 12:00 Uhr ? Steht dann dort PM ? Und was steht dann in Spalte Zeit? Grüße Klaus [Diese Nachricht wurde von KlaK am 01. Sep. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FelixP Mitglied Student
Beiträge: 4 Registriert: 01.09.2015 Windows 8 Excel 2013
|
erstellt am: 01. Sep. 2015 16:25 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, erstmal vielen Dank für die freundliche Begrüßung und schnelle Antwort. Nach 12 Uhr steht in Spalte Time "PM", Spalte Zeit läuft "normal" weiter, also 12:00:01 usw. Deine Frage, ob der frühere Wert gelöscht werden muss, ja ok, geb ich recht, aber wie gesagt, ob die Zeile 09:10:48,551 nun 09:10:48 oder 09:10:49 zugeordnet wird, ist mir "wurscht". Von mir aus können Datum und Zeit in Spalte A sowie D&E beliebig verändert werden, zum Schluss brauch ich nur noch einen Zeitstempel im Format: TT.MM.JJJJ hh:mm:ss Mein Problem liegt also im verwurschteln der Datum und Zeitangaben. Hoffe, dass ich alle Fragen klärend beantworten konnte. VG Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 01. Sep. 2015 16:59 <-- editieren / zitieren --> Unities abgeben: Nur für FelixP
Hallo Felix, Die Frage ist ob Dir der obige Code (zum löschen und hochschieben) und die Ausführungen dazu reichen Du schreibst ja Du hättest schon einige Sachen mit VBA gelöst, den prinzipiellen Ablauf hatte ich Dir ja auch schon beschrieben. Aber brauchst Du auch Hilfe bei der weiteren Programmierung (Durchlaufen der Spalte A und Vergleich mit Spalte E) Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FelixP Mitglied Student
Beiträge: 4 Registriert: 01.09.2015 Windows 8 Excel 2013
|
erstellt am: 01. Sep. 2015 17:32 <-- editieren / zitieren --> Unities abgeben:
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 01. Sep. 2015 18:36 <-- editieren / zitieren --> Unities abgeben: Nur für FelixP
na dann probiere es mal damit: Code:
Sub kill_Line()Dim tRow As Long ' aktuelle Zeile Dim tTime As Double ' Vergleichszeit tRow = 2 ' Beginn der Tabelle While Not IsEmpty(Cells(tRow, 1)) ' Bestimmen der Uhrzeit aus der Zeile, Wert in ganzen Sekunden tTime = Round((Cells(tRow, 1) - Int(Cells(tRow, 1))) * 86400, 0) ' 86400 = 24 * 60 * 60 = 1 ganzer Tag. ' Bei der Umrechung der Uhrzeit wird diese in Sekunden umgerechnet und mit 1/86400 multipliziert ' ergibt dann Nachkommastellen des Zeitwertes ' Vergleich mit der Uhrzeit in Spalte E (=Spalte 5) ' Probleme könnte es nur bei Uhrzeiten um 12:00 AM (Mitternacht) geben ' hier müßten noch Anpassungen gemacht werden If tTime = (Cells(tRow, 5) * 86400) Then ' ok, Wert passt nächste Zeile bearbeiten tRow = tRow + 1 Else If tTime < (Cells(tRow, 5) * 86400) Then ' Zeit aus Temperaturmessung ist kleiner wie Messwert, ' löschen und nachfolgende hochschieben Range(Cells(tRow, 1), Cells(tRow, 3)).Delete Shift:=xlUp ' gleiche Zeile wird noch einmal verglichen Else ' Hier fehlt ein Wert, Leerzeile einfügen Range(Cells(tRow, 1), Cells(tRow, 3)).Insert Shift:=xlDown ' und nächste Zeile untersuchen tRow = tRow + 1 End If End If Wend End Sub
Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 01. Sep. 2015 21:29 <-- editieren / zitieren --> Unities abgeben: Nur für FelixP
Nebenbei bemerkt hätte man das auch ganz ohne Programmierung lösen können: Dazu müssen die Zeitfelder auf gleiche Werte gebracht werden, z.B. Spalte A kopiert nach Spalte H : =TEXT(A2;"TT.MM.JJJJ hh:mm:ss") Spalte B kopiert nach I : =B2 Spalte C kopiert nach J : =C2 Spalte D und E kopiert nach K : =VERKETTEN(TEXT(D2;"TT.MM.JJJJ");" ";TEXT(E2;"hh:mm:ss")) Spalte F kopiert nach L : = F2 dann kann man einen Suchverweis machen Spalte M ergibt den Zeitwert: =SVERWEIS($K2;$H:$J;1;FALSCH) Spalte N den Timepunkt : =SVERWEIS($K2;$H:$J;2;FALSCH) Spalte O den Druck: =SVERWEIS($K2;$H:$J;3;FALSCH) Hier sieht man auch sehr schön die eingangs erwähnte Diskrepanz (für 09:10:48 Uhr gibt es keinen Temperaturwert) Excelmappe ist in beigefügtem Zip-Archiv, obige Werte in Tabelle2 [Diese Nachricht wurde von KlaK am 02. Sep. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FelixP Mitglied Student
Beiträge: 4 Registriert: 01.09.2015 Windows 8 Excel 2013
|
erstellt am: 02. Sep. 2015 09:26 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank KlaK, hab mich gestern Abend noch mit VBA ausprobiert, irgendwas hat immer nicht gestimmt, irgendwann hab ich die Lust verloren. Mal nebenbei: Gibt es ein Möglichkeit, nach Ausführen eines Makros, alles wieder zurück zu setzen? Außer schließen und nicht speichern? Hatte irgendwann 10 Kopien meiner Datei offen. Dann hab ich kapituliert. Aber ich finde die 2. Variante viel "sauberer". Das hätte ich nicht gedacht, dass dies Excel hergibt. Heute früh ausprobiert und funzte auf Anhieb. Vielen Dank. VG Felix VG Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 02. Sep. 2015 10:43 <-- editieren / zitieren --> Unities abgeben: Nur für FelixP
Hallo Felix, Ich weiß ja nicht was Du gemacht hast aber im Prinzip brauchst Du nur den obigen Code kopieren und unter vba bei dem entsprechenden Arbeitsblatt einfügen. Danach könntest Du ihn laufen lassen (F5) oder zeilenweise testen (F8). Vermutlich stimmen die Spalten bei Deiner Mappe nicht, dann müßte man das im Code natürlich ändern. Aber ohne die "echte" Tabelle ist das schwierig. Ja, Excel bietet eine ganze Reihe an Funktionen an, bin auch immer wieder überrascht was man damit machen kann. Schön dass es geholfen hat. Grüße Klaus
[Diese Nachricht wurde von KlaK am 15. Sep. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|