Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Zellen löschen, wenn Datum und Uhrzeit übereinstimmt

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Zellen löschen, wenn Datum und Uhrzeit übereinstimmt (2156 mal gelesen)
FelixP
Mitglied
Student

Sehen Sie sich das Profil von FelixP an!   Senden Sie eine Private Message an FelixP  Schreiben Sie einen Gästebucheintrag für FelixP

Beiträge: 4
Registriert: 01.09.2015

Windows 8
Excel 2013

erstellt am: 01. Sep. 2015 13:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 01. Sep. 2015 15:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für FelixP 10 Unities + Antwort hilfreich

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

Sehen Sie sich das Profil von FelixP an!   Senden Sie eine Private Message an FelixP  Schreiben Sie einen Gästebucheintrag für FelixP

Beiträge: 4
Registriert: 01.09.2015

Windows 8
Excel 2013

erstellt am: 01. Sep. 2015 16:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 01. Sep. 2015 16:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für FelixP 10 Unities + Antwort hilfreich

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

Sehen Sie sich das Profil von FelixP an!   Senden Sie eine Private Message an FelixP  Schreiben Sie einen Gästebucheintrag für FelixP

Beiträge: 4
Registriert: 01.09.2015

Windows 8
Excel 2013

erstellt am: 01. Sep. 2015 17:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Kurz gesagt: "Ja, ich brauche Hilfe"

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 01. Sep. 2015 18:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für FelixP 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 01. Sep. 2015 21:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für FelixP 10 Unities + Antwort hilfreich


zeilenbeifehlenderzeitloeschen.zip

 
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

Sehen Sie sich das Profil von FelixP an!   Senden Sie eine Private Message an FelixP  Schreiben Sie einen Gästebucheintrag für FelixP

Beiträge: 4
Registriert: 01.09.2015

Windows 8
Excel 2013

erstellt am: 02. Sep. 2015 09:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 02. Sep. 2015 10:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für FelixP 10 Unities + Antwort hilfreich

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz