Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zelle mit Datum und Zeit suchen und Kopieren

Zelle mit Datum und Zeit suchen und Kopieren
16.12.2015 15:38:42
Thomas
Hallo zusammen,
ich bin auf der Suche nach einem Makro welches in Tabelle1 in der Spalte A ab Zeile 7 nach einer Zelle mit Datum und Zeit z.B. 15.12.2015 23:45:00 sucht und dann die gefundene Zelle mit der Zelle in Spalte C gleiche Zeile kopiert. Den Kopierinhalt auf Tabelle2 in Spalte A in die erste freie Zeile wieder einfügt. Dann der nächste Tag mit gleicher Zeit usw.. Tabelle1 Spalte A ist mit viertelstunden Schritten gefüllt, Spalte B mit viertelstunden Werten und in Spalte C wird eben um die gesuchte Zeit ein Tagesmittelwert gebildet. Der Zeitraum in Tabelle1 Spalte A geht über ein halbes Jahr und kann variieren. Wie muss eine solche Schleife aussehen? Mit Zeilen zählen oder einem Step von 96 Viertelstunden komme ich nicht zurecht. Durch die Sommer- Winterzeitumstellung ändert sich das ja immer wieder.
Tabelle1 ist wie folgt
In Zelle A7 steht z.B. 15.12.2015 23:30:00
In Zelle A8 steht z.B. 15.12.2015 23:45:00
usw.
In Zelle B7 steht ein 1/4stunden-Wert
In Zelle B8 steht ein 1/4stunden-Wert
usw.
In Spalte C wird immer um 23:45:00 ein Tagesmittelwert gebildet

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle mit Datum und Zeit suchen und Kopieren
16.12.2015 21:11:55
Sepp
Hallo Thomas,
so?
Sub copyValues()
Dim rng As Range, rngC As Range
Dim strFirst As String

With Sheets("Suchen&Kopieren")
  With .Range("A:A")
    Set rng = .Find(What:="* 23:45:00", After:=.Cells(1, 1), LookIn:=xlValues, LookAt:=xlPart, _
      SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
    If Not rng Is Nothing Then
      strFirst = rng.Address
      Do
        If rngC Is Nothing Then
          Set rngC = rng.Offset(0, 2)
        Else
          Set rngC = Union(rngC, rng.Offset(0, 2))
        End If
        Set rng = .FindNext(rng)
      Loop While Not rng Is Nothing And strFirst <> rng.Address
    End If
  End With
End With

If Not rngC Is Nothing Then
  With Sheets("Ziel")
    rngC.Copy .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1)
  End With
End If

Set rng = Nothing
Set rngC = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Zelle mit Datum und Zeit suchen und Kopieren
16.12.2015 21:44:42
Daniel
Hi
mal ne Frage, bei den ersten Zeilen ist ist in Spalte C nur der Tagesmittelwert beim letzten Eintrag des Tages vorhanden und die Zellen dazwischen sind leer.
im unteren Teil sind dann in Spalte C alle Zellen gefüllt...
Was entspricht jetzt deinem Tabellenaufbau?
wenns so ist wie in den ersten Zeilen dass nur der Tagesmittelwert vorhanden ist und die restlichen Zeilen leer sind, dann könntest du einfach in Spalte C nach nichtleer filtern und die Werte nach Tabelle2 kopieren. Es werden nur die sichtbaren Zeilen kopiert.
per Formel liesse sich das auch lösen.
1. Schreibe in Tabelle 2 in die erste Zelle den Wert des ersten Datums
2. schreibe dann in die zweite Zeile die Formel =A1+1 und ziehe die Formel soweit runter, bis alle benötigten Tage angezeigt werden.
3. Schreibe dann in die Spalte daneben folgende Formel um den Tagesmittelwert für jedes Datum auszulesen:
=SVerweis(A1+0,99;Suchen&kopieren!A7:A9999;3;wahr)
und ziehe die Formel soweit nach unten wie benötigt.
Gruß Daniel

Anzeige
AW: Zelle mit Datum und Zeit suchen und Kopieren
17.12.2015 11:42:58
Thomas
Hallo Daniel,
danke für Deine Antwort, ich werde das mal ausprobieren.
Der untere Teil meiner Tabelle ist belanglos, den habe ich nur vergessen zu löschen.
Aber eigentlich suche ich nach einer Lösung mit VBA falls sich was in Tabelle1 an den Zeilen was ändert.
Gruß Thomas

Anzeige
AW: Zelle mit Datum und Zeit suchen und Kopieren
17.12.2015 11:15:19
Thomas
Hallo Sepp,
danke für die schnelle Antwort.
Leider funktioniert dein Makro bei mir nicht so wie ich mir das vorstelle.
Wenn in Tabelle1 Spalte A z.B. 15.12.2015 23:45:00 steht, (so ist das Format was ich dafür brauche)
dann macht es gar nichts. Wenn ich es aber mit Text in Tabelle1 Spalte A probiere dann kopiert er mir
zumindest schon mal die Zelle aus der Spalte C. Es sollen aber beide Zellen, also die gefundene und die in Spalte C (gleiche Zeile) kopiert werden. Danach das gleiche vom 16.12.2015 23:45:00 usw. immer einen Tag darauf bis ans Ende der Einträge in Tabelle1 Spalte A.
Vielleicht fällt Dir noch was ein. Danke.

Anzeige
AW: Zelle mit Datum und Zeit suchen und Kopieren
17.12.2015 18:50:12
Sepp
Hallo Thomas,
dann diesen Code.
' **********************************************************************
' Modul: Modul2 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub copyValues()
Dim rng As Range, rngC As Range
Dim strFirst As String

With Sheets("Suchen&Kopieren")
  With .Range("A:A")
    Set rng = .Find(What:="* 23:45:00", After:=.Cells(1, 1), LookIn:=xlValues, LookAt:=xlPart, _
      SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
    If Not rng Is Nothing Then
      strFirst = rng.Address
      Do
        If rngC Is Nothing Then
          Set rngC = Union(rng, rng.Offset(0, 2))
        Else
          Set rngC = Union(rngC, Union(rng, rng.Offset(0, 2)))
        End If
        Set rng = .FindNext(rng)
      Loop While Not rng Is Nothing And strFirst <> rng.Address
    End If
  End With
End With

If Not rngC Is Nothing Then
  With Sheets("Ziel")
    rngC.Copy .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1)
  End With
End If

Set rng = Nothing
Set rngC = Nothing
End Sub

So sieht bei mir das Ergebnis des Codes in deiner Beispieldatei aus.
Ziel

 ABC
1   
213.12.2015 23:45:00TM-Wert 
314.12.2015 23:45:00TM-Wert 
413.12.2015 23:45:00Test96 
514.12.2015 23:45:00Test192 
615.12.2015 23:45:00Test288 
716.12.2015 23:45:00Test384 
817.12.2015 23:45:00Test480 
918.12.2015 23:45:00Test576 
10   


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Gruß Sepp

Anzeige
AW: Zelle mit Datum und Zeit suchen und Kopieren
18.12.2015 11:23:38
Thomas
Hallo Sepp,
vielen Dank für das neue Makro, genauso habe ich mir das vorgestellt.
Ist heut schon Weihnachten?
Schöne Feiertage
Thomas
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zelle mit Datum und Zeit suchen und kopieren in Excel


Schritt-für-Schritt-Anleitung

Um eine Zelle mit Datum und Zeit in Excel zu suchen und den Wert in eine andere Tabelle zu kopieren, kannst Du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne das Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul.
  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub copyValues()
       Dim rng As Range, rngC As Range
       Dim strFirst As String
    
       With Sheets("Suchen&Kopieren")
           With .Range("A:A")
               Set rng = .Find(What:="* 23:45:00", After:=.Cells(1, 1), LookIn:=xlValues, LookAt:=xlPart, _
                               SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
               If Not rng Is Nothing Then
                   strFirst = rng.Address
                   Do
                       If rngC Is Nothing Then
                           Set rngC = Union(rng, rng.Offset(0, 2))
                       Else
                           Set rngC = Union(rngC, Union(rng, rng.Offset(0, 2)))
                       End If
                       Set rng = .FindNext(rng)
                   Loop While Not rng Is Nothing And strFirst <> rng.Address
               End If
           End With
       End With
    
       If Not rngC Is Nothing Then
           With Sheets("Ziel")
               rngC.Copy .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1)
           End With
       End If
    
       Set rng = Nothing
       Set rngC = Nothing
    End Sub
  4. Speichere das Makro und schließe den VBA-Editor.

  5. Führe das Makro aus:

    • Drücke ALT + F8, wähle copyValues aus und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: Das Makro kopiert nicht die gewünschte Zelle.

    • Lösung: Stelle sicher, dass die Formatierung in Spalte A korrekt ist und das Datum sowie die Uhrzeit im richtigen Format vorliegen (z.B. 15.12.2015 23:45:00).
  • Fehler: Der Zielbereich ist nicht korrekt.

    • Lösung: Überprüfe, ob das Zielblatt mit dem Namen "Ziel" existiert und dass dort genügend Platz für die kopierten Werte ist.

Alternative Methoden

Falls Du keine VBA-Makros verwenden möchtest, kannst Du auch folgende Alternative in Excel ausprobieren:

  1. Filter verwenden:

    • Filtere Spalte C nach nicht-leeren Zellen und kopiere die sichtbaren Werte nach Tabelle2.
  2. Formel zur Auslesung der Werte:

    • In Tabelle2, schreibe in die erste Zelle den Wert des ersten Datums.
    • In die zweite Zeile schreibe die Formel =A1+1 und ziehe diese nach unten.
    • Schreibe dann in die Spalte daneben die Formel:
      =SVERWEIS(A1+0,99;Suchen&Kopieren!A7:A9999;3;WAHR)
    • Ziehe die Formel nach unten, um die Tagesmittelwerte zu erhalten.

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie die Excel-Daten strukturiert sein sollten:

A B C
15.12.2015 23:30:00 1/4 Stunden TM-Wert
15.12.2015 23:45:00 1/4 Stunden TM-Wert
16.12.2015 23:30:00 1/4 Stunden TM-Wert
16.12.2015 23:45:00 1/4 Stunden TM-Wert

In diesem Beispiel wird das Makro die Zellen mit den Zeitstempeln 23:45:00 finden und die entsprechenden Werte aus Spalte C in Tabelle2 kopieren.


Tipps für Profis

  • Debugging: Nutze die F8-Taste im VBA-Editor, um das Makro Zeile für Zeile auszuführen und Fehler einfacher zu identifizieren.
  • Automatisierung: Du kannst das Makro so einstellen, dass es automatisch bei Änderungen in Tabelle1 ausgeführt wird, indem Du es mit einem Worksheet-Event verknüpfst.
  • Datensicherung: Erstelle regelmäßig Sicherungskopien Deiner Excel-Datei, bevor Du umfangreiche Änderungen vornimmst.

FAQ: Häufige Fragen

1. Kann ich das Makro für andere Zeitstempel anpassen? Ja, Du kannst die Zeit, nach der gesucht wird, im VBA-Code ändern. Ersetze * 23:45:00 mit dem gewünschten Zeitstempel.

2. Funktioniert das Makro in allen Excel-Versionen? Das Makro sollte in den meisten modernen Excel-Versionen (2010 und höher) funktionieren, solange die VBA-Funktionalität verfügbar ist.

3. Was mache ich, wenn ich keine Fehler im Makro finde? Überprüfe die Formatierung der Zellen und stelle sicher, dass die Daten in Spalte A als Datum und Uhrzeit formatiert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige