Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
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

Kopieren von Bereich nach

Kopieren von Bereich nach
04.08.2023 20:33:27
mablu
Hallo
ich habe ein Problem wie ich die Daten aus den Bereichen

Register Programm
Datum: D2
Daten Bereich A6:A21, A23:A38, A40:A55, A57:A68

per Button in das Register Anzahl Spalte A Datum nur 1 mal, und die Angaben in Spalte B als Liste anhängen kann ohne Zwischenräume (leerzellen ignorieren, damit ich die Anzahl ermitteln kann.
Ich denke per Formel kann ich das nicht lösen, darum ein Makro aber wie?
Die Makro Programmierung behersche ich leider nicht ich kanns nur zusammenkopieren etc.

Die Bereiche wie oben beschrieben möchte ich aus dem Register Programm auslesen und in die erste leere Zelle in Register Anzahl einfügen wie macht man sowas?

Für eure Hilfe bin ichsehr dankabar

siehe Beispieldatei

https://www.herber.de/bbs/user/162187.xlsm

Lieber Gruss mablu

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

Betreff
Datum
Anwender
Anzeige
AW: Kopieren von Bereich nach
04.08.2023 21:02:41
Piet
Hallo

das kleine Makro sollte die Aufgabe erfüllen. Mit Vorprüfung ob das Datum schon kopiert wurde. Bitte testen.

mfg Piet


Dim lzAnz As Long, lzPrg As Long
Dim Anz As Worksheet, j, ze As Long
Set Anz = Worksheets("Anzahl")
lzAnz = Anz.Cells(Rows.Count, 1).End(xlUp).Row + 1
'Datum Vorprüfung ob Datensatz bereits kopiert wurde
If Anz.Cells(lzAnz, 1) = .Range("D2") Then _
MsgBox "Dieser Datensatz wurde bereits kopiert!": Exit Sub

With Worksheets("Programm")
lzPrg = .Cells(Rows.Count, 1).End(xlUp).Row
lzAnz = Anz.Cells(Rows.Count, 2).End(xlUp).Row + 1
Anz.Cells(lzAnz, 1) = CDate(.Range("D2"))
For j = 6 To lzPrg 'ab Zeile 6 kopieren
If .Cells(j, 1) > "" Then
Anz.Cells(lzAnz, 2) = .Cells(j, 1)
lzAnz = lzAnz + 1
End If
Next j
End With
End Sub
Anzeige
AW: Kopieren von Bereich nach
04.08.2023 21:09:57
mablu
ich habs in ein Modul und im Arbeitsblatt kopiert es sucht das Makro und macht nichts?

Gruss mablu
AW: Kopieren von Bereich nach
04.08.2023 22:17:52
Piet
Hallo

ich habe einen Fehler im Code korrigiert. Und die Beispieldatei hochgeladen. (Leider eine Excel 2003 Datei). Bitte noch mal testen.
https://www.herber.de/bbs/user/162188.xls

mfg Piet

  • Sub Daten_übertragen()
    Dim lzAnz As Long, lzPrg As Long
    Dim Anz As Worksheet, j, ze As Long
    Set Anz = Worksheets("Anzahl")
    lzAnz = Anz.Cells(Rows.Count, 1).End(xlUp).Row
    'Datum Vorprüfung ob Datensatz bereits kopiert wurde
    If Anz.Cells(lzAnz, 1) = Worksheets("Programm").Range("D2") Then _
    MsgBox "Dieser Datensatz wurde bereits kopiert!", vbInformation: Exit Sub

    With Worksheets("Programm")
    lzPrg = .Cells(Rows.Count, 1).End(xlUp).Row
    lzAnz = Anz.Cells(Rows.Count, 2).End(xlUp).Row + 1
    Anz.Cells(lzAnz, 1) = CDate(.Range("D2"))
    For j = 6 To lzPrg 'ab Zeile 6 kopieren
    If .Cells(j, 1) > "" Then
    Anz.Cells(lzAnz, 2) = .Cells(j, 1)
    lzAnz = lzAnz + 1
    End If
    Next j
    End With
    End Sub
  • Anzeige
    AW: Kopieren von Bereich nach
    04.08.2023 23:15:45
    mablu
    Hallo Piet

    das Funktioniert jetzt, er solte aber die Zellen A22,A39,A56 nicht berücksichtigen da dort Titel stehen und er so unnötige Daten in die Tabelle schreibt was diese unnötig verlängern würde.
    ------
    Mein Wunsch war ja:
    Register Programm
    Datum: D2
    Daten Bereich A6:A21, A23:A38, A40:A55, A57:A68

    -------
    Mit dem Datum habe ich eine überlegungsfehler gemacht so kann ich es nicht ausfiltern, kann man am Schluss vom Makro das Datum auffüllen bis zur letzten Beschriebenen Zeile!

    zB.
    05.08.2023 Angabe 1
    05.08.2023 Angabe 2
    05.08.2023 Angabe 3
    usw.

    Danke für die Geduld und das Helfen

    Gruss Martin
    Anzeige
    AW: Kopieren von Bereich nach
    05.08.2023 00:02:55
    Piet
    Hallo

    Sorry, die Info hatte ich übersehen, wie du am geänderten Code siehtst kein grosses Problem das zu ändern.
    Nur diesen Teil der With Klammer ändern. Dann sollte es korrekt laufen. Würde mich freuen.

    mfg Piet

  • With Worksheets("Programm")
    lzPrg = .Cells(Rows.Count, 1).End(xlUp).Row
    lzAnz = Anz.Cells(Rows.Count, 2).End(xlUp).Row + 1
    'Schleife um Programmdaten zu kopieren
    For j = 6 To lzPrg 'ab Zeile 6 kopieren
    If j = 22 Or j = 39 Or j = 56 Then
    ElseIf .Cells(j, 1) > "" Then
    .Range("D2").Copy Anz.Cells(lzAnz, 1)
    Anz.Cells(lzAnz, 2) = .Cells(j, 1)
    lzAnz = lzAnz + 1
    End If
    Next j
    End With
    End Sub
  • Anzeige
    AW: Kopieren von Bereich nach
    05.08.2023 00:48:35
    mablu
    Hallo Piet

    es macht alles richtig bloss das Datum macht er sehr gross und Fett?
    Kann man das Format noch mit eingeben?

    Gruss Martin
    AW: Kopieren von Bereich nach
    05.08.2023 13:48:03
    Piet
    Hallo

    freut mich dass das Makro soweit gut funktioniert. Drehe bitte diesen Befehl einfach mal um:
    .Range("D2").Copy Anz.Cells(lzAnz, 1) - ersetzen durch - Anz.Cells(lzAnz, 1) = CDate(.Range("D2"))

    mfg Piet
    AW: Kopieren von Bereich nach gelöst
    05.08.2023 14:42:54
    mablu
    Hallo Piet

    jetzt passts zu 100%

    viel Dank für die Hilfe

    Gruss Martin und schönes Wochenende

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige