Datumsproblem

Bild

Betrifft: Datumsproblem
von: Timm
Geschrieben am: 21.10.2015 17:01:02

Hallo zusammen,
ich stehe vor einem nervigen und für mich nicht lösbaren Problem.
Also:
Ich habe ein Tabellenblatt (1), erste Spalte steht das Datum und Zeit im Format
TT.MM.JJJJ hh:mm
Die Datums- und Zeitangaben sind chronologisch geordnet aber in unregelmäßgien Abständen. Dann habe ich ein weiteres Tabellenblatt (2), wieder in der 1. Spalte Datum und Zeit mit selber Formatierung. Hier sind die Zeiten in 10 Minuten Abständen. Zu jedem Zeitpunkt gehören 9 Zahlenwerte, welche sich in Spalten 2-10 befinden.
Was ich nun machen möchte ist folgendes: Ich möchte jeden Zeitpunkt aus Blatt 1 in Blatt 2 finden und die dazugehörigen 9 Zahlenwerte in ein drittes Blatt oder ein Array schreiben.
Was ich bisher gemacht habe:
Ich habe aus Blatt 1 die Zeitangaben auf 10 Minuten Werte gerundet, mittels
=RUNDEN(Zelle*144;0) /144. Alles wunderbar, stehen in Spalte 2. Dann musste ich noch 10 minuten hinzuaddieren, mit =Zelle+(10/60/24) , Grund dafür ist nicht von Bedeutung. Das steht dann in Spalte 3. Alles gut soweit. Jetzt habe ich die korrigierten Datums- und Zeitangaben aus Blatt 1 in ein Array geschrieben. Die Datums-Zeit Werte aus Blatt 2, sowie die dazugehörigen Zahlenwerte in ein seperates Array.
Dann lasse ich mittels Schleife die Datums-zeit Angaben vergleichen. Wenn der passende Zeitpunkt gefunden wurde, werden die dazugehörigen Zahlenwerte in das dritte Blatt kopiert. Das funktioniert auch fast einwandfrei.
Es ergeben sich allerdings in vollkommen unregelmäßigen Abständen, leerzeilen. Und zwar um die Tausend.
Nach ewigem Fehlersuchen habe ich in Blatt 1 bei einem Datum, wo eine Leerzeile entsteht, das Datum und die Zeit manuell noch mal selber in die Zelle der dritten Spalte eingetippt. Siehe da, die Leerzeile ist beim nächsten Durchlauf verschwunden.
Was ist da los? Ich bin komplett ratlos. Das Skript funktioniert, wenn wahrscheinlich sehr ineffizient und unschön, ohne Fehlermeldung. Alle Spalten sind im richtigen Format.
Ich hoffe Ihr könnt mir helfen.
Schönen Gruß
Timm

Bild

Betrifft: AW: Datumsproblem
von: SF
Geschrieben am: 21.10.2015 17:02:55
Hola,
die VBA Experten würden bestimmt gerne das Makro sehen!
Gruß,
steve1da

Bild

Betrifft: AW: Datumsproblem
von: Timm
Geschrieben am: 21.10.2015 17:09:50


Option Explicit
Dim gueltig(1 To 6762, 1 To 7) As Variant
Dim Dir(1 To 37009, 1 To 10) As Variant
Dim z As Long
Dim s As Integer
Dim i As Long
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Sub gueltige_zeitraeume()
Sheets("gueltige_zeitraeume").Select
For z = 2 To 6763
    For s = 1 To 4
        gueltig(z - 1, s) = Cells(z, s)
    Next s
Next z
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Sheets("Direction").Select
For z = 5 To 37013
    For s = 1 To 10
        Dir(z - 4, s) = Cells(z, s)
    Next s
Next z
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Sheets("Windrichtung").Select
Range(Cells(2, 2), Cells(6763, 10)).Delete
For z = 1 To 6762
    For i = 1 To 37009
        If gueltig(z, 3) = Dir(i, 1) Then
            For s = 2 To 10
                Cells(z + 1, s) = Dir(i, s)
            Next s
        End If
    Next i
Next z
End Sub


Bild

Betrifft: Vorsicht
von: Michael
Geschrieben am: 21.10.2015 18:08:56
Hi zusammen,
zuallererst ist Dir ein Excel-Schlüsselwort, das sollte man nicht als Variablennamen benutzen.
Das Array gueltig ist mit 7 Spalten definiert, benutzt werden allerdings nur 4 - das nur am Rande.
Die ersten beiden Zuweisungen lassen sich leicht zusammenfassen:


'oben: 
Dim gueltig as Variant
Dim varDir as Variant
'in Sub:
gueltig = Sheets("gueltige_zeitraeume").Range("A2:D6763")
varDir = Sheets("Direction").Range("A5:J37013")
Ansonsten verwendest Du zum Schreiben eine zusätzliche Variable "Zeile", die Du hochzählst, also:

'oben: 
Dim Zeile as Long
' warum eigentlich alles Public?
'in Sub:
Sheets("Windrichtung").Select
Range(Cells(2, 2), Cells(6763, 10)).Delete
'warum erst ab 2,2, insbesondere ohne Spalte A?
Zeile = 2       ' oder ab wo auch immer
For z = 1 To 6762
    For i = 1 To 37009
        If gueltig(z, 3) = Dir(i, 1) Then
            For s = 1 To 10           ' 1 statt 2!
                Cells(Zeile, s) = Dir(i, s)
            Next s
            Zeile=Zeile + 1
        End If
    Next i
Next z

... wenn ich das nicht falsch interpretiere.
Denn: wenn die Datumsangaben in Spalte A sowieso stehen bleiben sollen, wieso liest Du dann nicht die ein anstelle der gültigen?
Schöne Grüße,
Michael

Bild

Betrifft: AW: Vorsicht
von: Timm
Geschrieben am: 21.10.2015 18:42:46
Hallo,
das mit Dir wusste ich nicht, danke dafür.
7 Spalten, da ich die anderen noch anderweitig benötige. Spielt hierfür aber keine Rolle.


'in Sub:
Sheets("Windrichtung").Select
Range(Cells(2, 2), Cells(6763, 10)).Delete
'warum erst ab 2,2, insbesondere ohne Spalte A?

Ab 2,2 da Zeile 1 der Header ist und Spalte 1 die Datumsangabe steht.
Verstehe nicht was mir die Variable Zeile bringt. z macht doch das gleiche.
Werde es morgen aber direkt ausprobieren :)
Sorry, dass ich nicht genau genug beschrieben habe.
Es ist auch eigentlich vollkommen egal, wo das alles steht oder hinkommen soll.
Ich verstehe nur nicht, wie es einen Unterschied machen kann, ob ich Datum/Zeit manuell eingebe bzw. die Zelle anklicke und auf Enter drücke oder das Datum durch die oben beschriebenen Rechnungen errechne. Das macht doch keinen Sinn? ^^

Bild

Betrifft: nein,
von: Michael
Geschrieben am: 21.10.2015 18:56:40
z macht nicht das Gleiche: es schreibt im Blatt "Windrichtung" in die Zeile, in der das zuvor in "gueltige_zeitraeume" gestanden hatte, also gut, eine Zeile weiter wegen z+1.
Zeile schreibt unabhängig von z und i, also Deinen Schleifenvariablen, in die jeweils nächste Zeile - dann kann keine Leerzeile entstehen.
Verbleibt das Problem, daß Du in "Windrichtung" vorhandene Datumsangaben (halt die Spalte A) nicht überschreibst - Du wertest zwei Tabellen aus, schreibst das Ergebnis aber *nicht* *vollständig* in die dritte, sondern mischt es mit dort vorhandenen Daten - das kann nicht gutgehen.
Schöne Grüße,
Michael
P.S.: ohne Deine Daten zu sehen, ist die weitere Bearbeitung relativ sinnlos: also bitte eine abgespeckte Beispieltabelle hochladen mit nachvollziehbarem Fehler.

Bild

Betrifft: AW: nein,
von: Timm
Geschrieben am: 21.10.2015 19:14:39
Genau das passt ja aber auch. Da die beiden genau um 1 Zeile verschoben sind.
Verbleibt das Problem, daß Du in "Windrichtung" vorhandene Datumsangaben (halt die Spalte A) nicht überschreibst
Die möchte ich auch nicht überschreiben. Diesen Zeitstempeln sollen ja die Zahlenwerte zugeordnet werden. Die habe ich vorher einfach in die erste Spalte per Hand kopiert.
Vielleicht habe ich mich einfach unklar ausgedrückt.
Blatt 1:
Spalte1: Datum/Zeit
Spalte2/3: korrigiert Datum/Zeit
Blatt 2:
Spalte1: Datum/Zeit
Spalte 2-10: Zahlenwerte
Ob da jetzt noch ne Header Zeile drinsteht macht ja keinen Unterschied.
Blatt 3:
Spalte 1: Datum Zeit aus Blatt 1
Spalte 2-10: Die zum jeweiligen Datum gehörenden Zahlenwerte.
Das Datum aus Blatt 1 soll in Blatt 2 gefunden werden, und die in dieser Zeile stehenden Werte zum selben Datum in Blatt 3 kopiert werden.
Das passiert eben auch alles, vor allem auch korrekt, bis auf die Leerzeilen.
Und wenn ich einen der korrigierten Datum/Zeit Werte aus Blatt l, der eine Leerzeile hervorruft, per Hand in die Selbe Zelle schreibe, verschwindet diese Leerzeile.
Das beudetet ja, dass hier irgendwas komisch ist. Aber auch nur bei ein "paar" Datum/Zeit Werten.
Und das ist doch ziemlich unlogisch.
Ich verstehe da Excel nicht^^
Herzlichen Dank schonmal für deine Bemühungen ;)

Bild

Betrifft: Ohne Datei nicht nachvollziehbar
von: Michael
Geschrieben am: 23.10.2015 15:10:58
Hi,
die Geschichte mit den "Eingaben" kann ich ohne Datei mit ein paar Zeilen, mit denen der Fehler reproduzierbar ist, nicht nachvollziehen.
Gruß,
Michael

Bild

Betrifft: AW: Ohne Datei nicht nachvollziehbar
von: Timm
Geschrieben am: 23.10.2015 16:26:17
Hallo,
ich habe es in Matlab gemacht.
Hat sich somit erledigt.
Trotzdem vielen Dank :)
Gruß
Timm

Bild

Betrifft: ok, danke für die Rückmeldung, owT
von: Michael
Geschrieben am: 23.10.2015 22:17:44


 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA zwei dropdown Fenster"