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

Forumthread: Zeilen mit bestimmten Datum kopieren

Zeilen mit bestimmten Datum kopieren
01.04.2016 02:32:55
Peter
Hallo liebe Helfer
Ich habe nachdem ich alle möglichen Foren und möglichen Vorlagen kombiniert habe es nicht geschafft mir was Funktionierendes zu konstruieren.
Ich habe in einem Tabellenblatt (owssvr) hunderte Zeilen mit Daten gefüllt.
in Spalte A2:A stehen das Datums für das aktuelle Jahr, in Spalte B2:B stehen Zahlen und in Spalte D2:D Bezeigungen.
Das heißt es gibt immer einige Zeilen gleichen Datums (z.B. 10 mal 05.02.2016)
Nun das was ich tun möchte: Ich möchte mittels VBA mit eine Inputbox ein bestimmtes Monat vorgeben, danach sollte die einzelnen Tage in eine zweite Tabelle kopiert werden. Also in Tabelle2 A1 bis Cxx den 01.02.2016 in E1 bis Gxx den 02.02.2016 usw.
Vielleicht können Sie mir helfen
Vielen Dank schon mal im Voraus Peter

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Pivottabelle ! (owT)
01.04.2016 08:27:00
EtoPHG

AW: nein, die geht hier mE nicht ...
01.04.2016 09:17:38
...
Hallo Hansueli,
... jedenfalls nicht so, wie es Peter beschrieben hat.
Es geht natürlich mit VBA. Aber es würde auch rein formeltechnisch (Monatswahl über eine Dropdownzelle oder auch Listenfeld) zu realisieren gehen.
Die Frage deshalb an Peter, willst Du es wirklich per VBA? Dann bin ich außen vor. Bei einer Formellösung könnte ich aushelfen.
Gruß Werner
.. , - ...

Anzeige
AW: nein, die geht hier mE nicht ...
01.04.2016 15:20:53
Peter
Hallo neopa C
Die Lösung von UveD hat super funktioniert, aber mich würde natürlich auch interessieren wie es mit Formeln geht. Die Daten in der Tabelle haben schon einen Filter angelegt, also könnte man sie ab Zeile 2 verwenden.
Nochmal vielen Dank für die Antwort, und schon mal Danke für die Formeln!!!
Gruß Peter

Anzeige
AW: schien unmögl., mit 1er(!)-Formel möglich ...
03.04.2016 16:02:31
...
Hallo Peter,
... bin selber etwas erstaunt, dass die Lösung Deiner vorgegebenen Aufgabenstellung wirklich nur mit einer Formel realisierbar ist. Dies schien mir selbst anfänglich unmöglich.
Allerdings stell ich diese Formel hier nur ein, weil Du einerseits darum gebeten hattest und Du andererseits ja schon ein funktionsfähiges Makro von Uwe hast, dass Du sicherlich selbst bei Notwendigkeit anpassen oder leichter anpassen lassen kannst als meine Formel.
Die Formel ist von mir nur einerseits aus "Spieltrieb" andererseits auch Interesse so wie unten stehend konstruiert, um zu erkunden, ob es denn auch eine Formellösung mit nur einer(!) Formel geben kann. Hierbei war für eine Formellösung nicht die eigentliche Aufgabenstellung das komplizierteste in der Realisierung sondern die Randbedingungen. Die Monatswahl und Wahl des maßgebenden Jahres war/ist jedoch völlig einfach mit z.B. Dropdownzellen zu lösen. Ich hab dafür owssvr!E1:F1 gewählt.
Meine Formel ist momentan noch nicht optimiert aber diese wäre schon allein dadurch geschätzt nur 2/3 so lang geworden, wenn ich anstelle in A1 mit der Lösung in B2 hätte anfangen können und ich zusätzlich nicht hätte berücksichtigen wollte, dass ich nicht nach Kopieren der Formel noch verschiedene Zellformate zuweisen wollte. Momentan hab ich mir da so geholfen, dass ich der Formel in A1 nur das Datumsformat zugewiesen habe und die Zahlenwerte im Textformat ausgebe.
Die Formel ist auch deshalb nicht zu empfehlen, weil eine evtl. notwendige Anpassung in der derzeitigen Fassung wohl selbst für formelerfahrene Nutzer schwierig zu überschauen ist. Wie bereits angedeutet, hätte ich eine zwingend notwendige Formellösung anders strukturiert aufgebaut.
Positiv an nachfolgender Formellösung ist für mich also nur die Bestätigung dessen, das man mit nur einer Formel auch relativ komplexere Probleme lösen kann. Übrigens noch interessant: die Formel als benannte Formel definiert funktioniert so nicht (würde dann einen Zirkelbezug ergeben!).
Formel A1 weit genug nach rechts und unten ziehend kopieren:
MonatsDaten

 ABCDEFGHIJKLMNOPQRSTUVWX
102.02.1624Txt_03 04.02.1626Txt_05 09.02.1627Txt_06 11.02.1631Txt_10 24.02.1633Txt_12 25.02.1634Txt_13 
202.02.1625Txt_04     09.02.1628Txt_07 11.02.1632Txt_11     25.02.1635Txt_14 
3        09.02.1629Txt_08             
4        09.02.1630Txt_09             
5                        

Formeln der Tabelle
ZelleFormel
A1=WENN(ZEILE()=1;WENNFEHLER(WENN(SPALTE()=1;INDEX(owssvr!$A:$A;AGGREGAT(15;6;ZEILE(owssvr!$A$1:$A$999)/(TEXT(owssvr!$A$1:$A$999;"MMMM")=owssvr!$E$1); 1)); WENN((REST(SPALTE(); 4)=1)*(SPALTE()>1);  INDEX(owssvr!$A:$A;AGGREGAT(15;6;ZEILE(owssvr!$A$1:$A$999)/(TEXT(owssvr!$A$1:$A$999;"MMMM")=owssvr!$E$1)/ISTNV(VERGLEICH(owssvr!$A$1:$A$999;INDEX(1:1;1):INDEX(1:1;SPALTE()-1); ))/(REST(SPALTE(); 4)=1); 1)); INDEX(owssvr!$A:$D;AGGREGAT(15;6;ZEILE(owssvr!A$1:A$999)/(owssvr!$A$1:$A$999=INDEX(1:1;KÜRZEN((3+SPALTE())/4;)*4-3)); ZEILE()); 2*(REST(SPALTE(); 4)-1))&"")); "");  WENN(INDEX(A:A;ZEILE()-1)="";"";WENN((REST(SPALTE(); 4)=1)*ZEILE()>ZÄHLENWENN(owssvr!$A$1:$A$999;INDEX(A:A;ZEILE()-1)); "";WENN(REST(SPALTE(); 4)=1;INDEX(A:A;ZEILE()-1); WENNFEHLER(INDEX(owssvr!$A:$D;AGGREGAT(15;6;ZEILE(owssvr!A$1:A$999)/(owssvr!$A$1:$A$999=INDEX(1:1;KÜRZEN((3+SPALTE())/4;)*4-3)); ZEILE()); 2*(REST(SPALTE(); 4)-1))&"";"")))))


owssvr

 ABCDEF
1DatumWert TextFebruar2016
2Fr 29.01.1622 Txt_01  
3Fr 29.01.1623 Txt_02  
4Di 02.02.1624 Txt_03  
5Di 02.02.1625 Txt_04  
6Do 04.02.1626 Txt_05  
7Di 09.02.1627 Txt_06  
8Di 09.02.1628 Txt_07  
9Di 09.02.1629 Txt_08  
10Di 09.02.1630 Txt_09  
11Do 11.02.1631 Txt_10  
12Do 11.02.1632 Txt_11  
13Mi 24.02.1633 Txt_12  
14Do 25.02.1634 Txt_13  
15Do 25.02.1635 Txt_14  
16Mi 02.03.1636 Txt_15  
17Mi 02.03.1637 Txt_16  
18Di 29.03.1638 Txt_17  
19      

Datengültigkeit der Tabelle
ZelleZulassenDatenEingabe 1Eingabe 2
E1Liste Januar;Februar;März 


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Werner
.. , - ...

Anzeige
AW: schien unmögl., mit 1er(!)-Formel möglich ...
04.04.2016 06:56:57
Peter
Hallo neopa C
Diese Formel ist der Wahnsinn!!!!
Was muss man studiert haben um sowas zu erdenken.
Höchsten Respekt, und vielen Dank.
Gruß Peter

AW: Antwort auf Deine Frage: Excel ;-) owT
04.04.2016 08:15:36
...
Gruß Werner
.. , - ...

VBA
01.04.2016 09:51:23
UweD
Hallo Peter
ich hoffe ich habe alles richtig verstanden...
Sub Peter() On Error GoTo Fehler Dim TB1, TB2, TB3, i!, Z! Dim LR1&, LC! Dim Monat!, Jahr!, Anz! Set TB1 = Sheets("owssvr") Set TB2 = Sheets("Tabelle2") Application.ScreenUpdating = False Monat = Format(InputBox("Welcher Monat", "Daten trennen", "01"), "00") If Monat > 12 Then MsgBox "Nur Monate 01 - 12 zugelassen!": Exit Sub Jahr = InputBox("Welches Jahr", "Daten trennen", "2016") With TB1 If .AutoFilterMode Then .AutoFilterMode = False ' Autofilter ausschalten LR1 = .Cells(Rows.Count, 1).End(xlUp).Row 'letzte Zeile der Spalte A .Columns("A:D").AutoFilter .Range("$A$1:$D$" & LR1).AutoFilter Field:=1, _ Criteria1:=">=" & CDbl(DateSerial(Jahr, Monat, 1)), Operator:=xlAnd, _ Criteria2:=" TB3.Cells(i, 1) Then LC = LC + 3 Z = 0 End If Z = Z + 1 Next End With Application.DisplayAlerts = False TB3.Delete Application.DisplayAlerts = True '*** Fehlerbehandlung Fehler: If Err.Number 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description Err.Clear Application.DisplayAlerts = True End Sub
Gruß UweD
Über Rückmeldungen würde ich mich freuen

Anzeige
AW: VBA
01.04.2016 15:27:48
Peter
Hallo UweD
Vielen Dank für das Skript, ich habe zwar etwa rumgeschraubt aber nur weil schon ein Filter vorhanden war der nicht so leicht zu entfernen ist. Ich muss gestehen ich hätte sowas in hundert Jahren nicht hinbekommen. Also nochmal ein Dankeschön für die schnelle Professionelle Hilfe.
Mit besten Grüßen Peter
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zeilen mit bestimmten Datum in Excel kopieren


Schritt-für-Schritt-Anleitung

Um Zeilen mit einem bestimmten Datum in Excel zu kopieren, kannst Du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel 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 DatumKopieren()
        Dim TB1 As Worksheet, TB2 As Worksheet
        Dim LR1 As Long, Monat As Integer, Jahr As Integer
        Set TB1 = Sheets("owssvr")
        Set TB2 = Sheets("Tabelle2")
    
        Monat = InputBox("Welcher Monat? (01-12)")
        Jahr = InputBox("Welches Jahr?")
    
        If Monat < 1 Or Monat > 12 Then
            MsgBox "Bitte einen gültigen Monat eingeben."
            Exit Sub
        End If
    
        LR1 = TB1.Cells(TB1.Rows.Count, 1).End(xlUp).Row
    
        For i = 2 To LR1
            If Month(TB1.Cells(i, 1).Value) = Monat And Year(TB1.Cells(i, 1).Value) = Jahr Then
                TB2.Cells(i, 1).Value = TB1.Cells(i, 1).Value
                TB2.Cells(i, 2).Value = TB1.Cells(i, 2).Value
                TB2.Cells(i, 3).Value = TB1.Cells(i, 4).Value
            End If
        Next i
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus:

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

Häufige Fehler und Lösungen

  • Fehler: "Nur Monate 01 - 12 zugelassen!"

    • Lösung: Stelle sicher, dass der eingegebene Monat zwischen 1 und 12 liegt.
  • Falsches Jahr wird kopiert

    • Lösung: Überprüfe, dass die Zellen in Spalte A das richtige Datumsformat haben.
  • Excel Datum kopieren nicht fortlaufend

    • Lösung: Achte darauf, dass Du die korrekten Zellen in den Zielbereich kopierst, insbesondere wenn Du bereits gefilterte Daten hast.

Alternative Methoden

Wenn Du keine VBA-Lösung verwenden möchtest, kannst Du auch folgende Alternativen ausprobieren:

  1. Filterfunktion:

    • Wähle die Daten in Deinem Arbeitsblatt.
    • Gehe zu Daten > Filtern.
    • Filtere die Datumswerte nach dem gewünschten Monat und Jahr und kopiere die gefilterten Zeilen manuell in die Ziel-Tabelle.
  2. Formeln:

    • Nutze die WENN-Funktion, um die gewünschten Zeilen in einer neuen Tabelle anzuzeigen. Beispiel:
    =WENN(MONAT(A2)=Monat;WENN(JAHR(A2)=Jahr;A2;"");"")

Praktische Beispiele

Angenommen, Du hast folgende Daten in owssvr:

Datum Wert Text
01.02.2016 24 Txt_01
02.02.2016 25 Txt_02
03.02.2016 26 Txt_03

Wenn Du den Monat Februar 2016 kopieren möchtest, wird nur die Zeile mit dem Datum 01.02.2016 und 02.02.2016 in Tabelle2 übertragen.


Tipps für Profis

  • Verwende Dropdown-Listen für die Monat- und Jahreingabe, um die Benutzerfreundlichkeit zu erhöhen.
  • Optimiere Dein VBA-Skript: Vermeide redundante Berechnungen durch Variablen und benutze With-Anweisungen, um den Code lesbarer zu machen.
  • Verwende Named Ranges, um die Wartung und Lesbarkeit Deiner Formeln zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass Excel das richtige Datum kopiert? Um sicherzustellen, dass Excel das richtige Datum kopiert, achte darauf, dass die Zellen im Datumsformat formatiert sind und die Eingaben im Skript korrekt validiert werden.

2. Was tun, wenn ich Daten für ein falsches Jahr kopiere? Überprüfe die Eingabewerte für Monat und Jahr in der InputBox sowie das Datumsformat der Zellen in der Quelltabelle.

3. Gibt es eine einfache Möglichkeit, Daten ohne VBA zu kopieren? Ja, Du kannst die Filter- und Kopierfunktion von Excel verwenden, um gefilterte Daten manuell zu übertragen.

4. Kann ich mehrere Monate auf einmal kopieren? Das VBA-Skript ist so konzipiert, dass es nur für einen Monat und ein Jahr funktioniert. Du müsstest es anpassen, um mehrere Monate gleichzeitig zu bearbeiten.

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