Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1212to1216
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
Inhaltsverzeichnis

Pro Sekunde genau eine Wertezeile

Pro Sekunde genau eine Wertezeile
heicumed
Hallo zusammen,
ich habe ein kleines VBA-Problem, dass ich leider mit meinen doch noch
bescheidenen VBA-Kenntnissen nicht alleine lösen kann.
Das Problem ist folgendes:
Es handelt sich um eine Tabelle, die in Spalte A eine Uhrzeit enthält,
in Spalte B bis M sind unterschiedliche Werte eingetragen.
Gelgentlich kommt es vor, dass in aufeinanderfolgenden Zeilen
Werte zur selben Uhrzeit ausgegeben werden.
Andererseits kommt es auch vor, dass zu einer bestimmten Uhrzeit gar keine Werte vorhanden sind.
Das Ziel ist, zu jeder Sekunde genau eine Wertezeile zu haben.
Dazu müssten einerseits Zeilen gelöscht werden, wenn die Uhrzeit doppelt vorkommt
(immer die erste Zeile sollte optimalerweise stehen bleiben).
Wenn allerdings zu einer Sekunde keine Werte angegeben werden, sollten die Werte der vorherigen Sekunde auch für diese Sekunde eingetragen werden.
Da mein Problem relativ schwierig zu erklären ist, habe ich eine kleine Beispieldatei generiert:
https://www.herber.de/bbs/user/74950.xlsm
Ihr würdet mir wirklich weiterhelfen, wenn ihr eine Idee für ein Makro hättet!
Vielen Dank schon einmal im Voraus für eure Mühen!

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Pro Sekunde genau eine Wertezeile
20.05.2011 21:46:35
Josef

Hallo Anja,
der Code bezieht sich auf die aktive Tabelle.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Sub anja()
  Dim vntOrg As Variant, vntVal As Variant, vntNew() As Variant
  Dim lngIndex As Long, lngC As Long, lngN As Long, lngI As Long
  Dim dblStart As Double, dblEnd As Double
  With ActiveSheet
    vntOrg = .Range("A2:A" & Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row))
    vntVal = .Range("B2:M" & Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row))
    dblStart = CDbl(vntOrg(1, 1))
    dblEnd = CDbl(vntOrg(UBound(vntOrg, 1), 1))
    lngC = (dblEnd - dblStart) * 86400 + 1
    Redim Preserve vntNew(1 To lngC, 1 To UBound(vntVal, 2) + 1)
    
    For lngIndex = 1 To UBound(vntNew, 1)
      vntNew(lngIndex, 1) = dblStart + TimeSerial(0, 0, lngIndex - 1)
    Next
    
    For lngIndex = 1 To UBound(vntNew, 1)
      lngN = Application.Match(CDbl(vntNew(lngIndex, 1)), vntOrg)
      For lngI = 2 To UBound(vntNew, 2)
        vntNew(lngIndex, lngI) = vntVal(lngN, lngI - 1)
      Next
    Next
    .Range("A2:M" & Application.Max(2, .Cells(.Rows.Count, 1).End(xlUp).Row)).ClearContents
    .Range("A2").Resize(UBound(vntNew, 1), UBound(vntNew, 2)) = vntNew
  End With
End Sub



« Gruß Sepp »

Anzeige
AW: Pro Sekunde genau eine Wertezeile
21.05.2011 09:44:46
heicumed
Perfekt! Vielen, vielen Dank, Josef!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige