Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bestimmte Zellen in ein anderes Blatt kopieren

Bestimmte Zellen in ein anderes Blatt kopieren
17.05.2019 10:10:25
Mokki
Hallo zusammen,
ich bin absolut neu im VBA und komme hier einfach nicht weiter. Ich hoffe, jemand kann mir hier weiterhelfen.
Ich habe ein Tabellenblatt „Übersicht“ mit einer Tabelle (6 Spalten und „unendlich Zeilen“).
Jetzt sollen nur Spalte A, B, C in ein neues Tabellenblatt „E&M“ kopiert werden (in Spalte A, B, C), wenn in Spalte E ein „PE“ steht. Die Spalten sollen nicht aus „Übersicht“ gelöscht werden und in „E&M“ soll nach Spalte A (laufende Nr.) sortiert werden.
Wenn in Spalte E ein „Q“ steht soll dasselbe passieren, allerdings nach Tabellenblatt „QM“.
Wenn in Spalte E ein „O“ steht soll dasselbe passieren, allerdings nach Tabellenblatt „OP“.
Ich hoffe, dass es ausreichend beschrieben ist. Vielen Dank schonmal.
VG

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Zellen in ein anderes Blatt kopieren
17.05.2019 10:50:25
Werner
Hallo,
würde ich mit dem Autofilter machen.
Sprich:
Quellblatt, Spalte E nach "PE" filtern, Filterergebnis Spalte A bis C ins Zielblatt kopieren, Zielblatt sortieren.
Das gleiche Spiel mit QM und OP.
Das lässt sich auch per Makro automatisieren.
Lad doch bitte mal eine Beispielmappe hoch.
Gruß Werner
AW: Bestimmte Zellen in ein anderes Blatt kopieren
17.05.2019 11:00:33
UweD
Hallo
so?
Code in ein normales Modul
Sub Verteilen()
    Dim TBU, TBE, TBQ, TBO, SP As Integer, Blatt, ArrE, ArrB
    
    Set TBU = Sheets("Übersicht")
    Set TBE = Sheets("E&M")
    Set TBQ = Sheets("QM")
    Set TBO = Sheets("OP")
    
    ArrE = Array("PE", "Q", "O")
    ArrB = Array(TBE.Name, TBQ.Name, TBO.Name)
    
    With TBU
        If .AutoFilterMode Then .AutoFilterMode = False ' Autofilter ausschalten 
        
        For Blatt = Lbound(ArrE) To Ubound(ArrE)
            
            'filtern 
            .Range("$A1:$E99").AutoFilter Field:=5, Criteria1:=ArrE(Blatt)
            
            'reset 
            Sheets(ArrB(Blatt)).UsedRange.ClearContents
             
             
            'gefilterte Zeilen copieren 
            Intersect(.Range("A:C"), .Cells(1, 1).CurrentRegion.SpecialCells(xlCellTypeVisible)).Copy _
                Sheets(ArrB(Blatt)).Cells(1.1)
                
            'Sortieren 
            With Sheets(ArrB(Blatt)).Sort
                .SortFields.Clear
                .SortFields.Add Key:=Range("A:A"), SortOn:=xlSortOnValues, _
                    Order:=xlAscending, DataOption:=xlSortNormal
                .SetRange Range("A:C")
                .Header = xlYes
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With

        Next
        .AutoFilterMode = False ' Autofilter ausschalten 
    End With
    
End Sub

LG UweD
Anzeige
AW: Bestimmte Zellen in ein anderes Blatt kopieren
17.05.2019 13:19:13
Mokki
Vielen Dank dafür!
Ich habe vergessen zu erwähnen, dass in E&M, QM, OP die Spalten D bis M manuell beschrieben werden sollen. Sobald das Makro ausgeführt wird, werden diese Zellen hier leider gelöscht.
VG
AW: Bestimmte Zellen in ein anderes Blatt kopieren
17.05.2019 13:35:25
UweD
Hallo
Du hattest geschrieben

"Jetzt sollen nur Spalte A, B, C in ein neues Tabellenblatt kopiert"

Was fehlt denn ?
Waren vorher Überschriften in den Zielblättern?
Musterdatei?
LG UweD
AW: Bestimmte Zellen in ein anderes Blatt kopieren
17.05.2019 14:07:49
Mokki
Ich habe eine Datei angefügt. Ich hoffe, daraus wird erkenntlich was ich vorhabe.
VG
https://www.herber.de/bbs/user/129848.xlsx
Anzeige
AW: Bestimmte Zellen in ein anderes Blatt kopieren
17.05.2019 11:26:13
Piet
Hallo
ich denke die Beispieldatei reicht aus das Problem zu lösen. Bitte zuerst die Originaldaten ins Beispiel kopieren und dort testen.
Im Beispiel kann man kein Originaldaten zerstören! Jedes Makro könnte vor dem Test noch Fehler enthalten.
Die alten Daten in ESM, OP, QM werdn immer gelöscht. Ich hoffe das ist so richtig? Sortieren braucht man nicht, weil ich denke das Spalte A schon eine fortlaufend Nummer hat! Im Makro ist dieser Befehl vorgesehen, zur Zeit aber durch das ' Zeichen nicht wirksam!
'ESM.Cells(s, 1) = s - 1 'Lauf-Nr 1-n
Wenn man das ' Zeichen entfernt wird eine fortlaufend Nummer von 1-n erzeugt, sonst steht in Spalte A die aktuelle Lauf Nummer aus der Übersicht. Ich denke das Programm ist so einfach geschrieben das man nicht viel erklaren muss.
Würde mich freuen wenn es die Aufgabe erfüllt.
https://www.herber.de/bbs/user/129839.xlsm
mfg Piet
Anzeige
AW: Bestimmte Zellen in ein anderes Blatt kopieren
17.05.2019 11:45:35
Mokki
Hallo,
vielen Dank, das klappt schon ganz gut.
In das Blatt "Übersicht" werden fortlaufend neue Zeilen eingefügt. Sobald Spalte E mit PE, O oder Q vergeben ist, sollen die Zellen A, B, C kopiert werden, ohne, dass erst der Button betätigt werden muss.
Die alten Daten in ESM, OP und QM sollen nicht gelöscht werden, sondern bestehen bleiben, bis sie manuell gelöscht werden.
AW: Bestimmte Zellen in ein anderes Blatt kopieren
17.05.2019 15:28:33
Piet
Hallo
mein Vorschlag ist, das Button Makro im Modul1 zu belassen, es stört ja nicht. Hier eine neue Version!
Sie gehört NICHT in ein Modul, sondern direkt ins Code Blatt für Tabelle "Übersicht". Einfach im VBA Editor die Tabelle anklicken, und den Code ins Blatt reinkopieren. Fertig!
Dieser Code laeuft über Target Funktion, d.h., bei jeder Eingabe in Spalte E wird geprüft ob der Wert in die anderen Tabellen kopiert werden muss. Dann wird er fortlaufend unten angehangen! Viel Spass beim Testen ...
mfg Piet
Option Explicit
Dim Sht As Worksheet, t, lz1 As Long
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
'Target nur bei Eingabe in Spalte E aktiv
If Target.Column = 5 Then
t = Target.Row  'akt. Zeile
If Target.Value = "oe" Then Target.Value = "O"
If Target.Value = "q" Then Target.Value = "Q"
If Target.Value = "pe" Then Target.Value = "PE"
If Target.Value = "PE" Then
Set Sht = Worksheets("ESM")
lz1 = Sht.Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(t, 1).Resize(1, 3).Copy Sht.Cells(lz1, 1)
'Sht.Cells(s, 1) = lz1 - 1  'Lauf-Nr 1-n
ElseIf Target.Value = "O" Then
Set Sht = Worksheets("OP")
lz1 = Sht.Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(t, 1).Resize(1, 3).Copy Sht.Cells(lz1, 1)
'Sht.Cells(s, 1) = lz1 - 1  'Lauf-Nr 1-n
ElseIf Target.Value = "Q" Then
Set Sht = Worksheets("QM")
lz1 = Sht.Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(t, 1).Resize(1, 3).Copy Sht.Cells(lz1, 1)
'Sht.Cells(s, 1) = lz1 - 1  'Lauf-Nr 1-n
End If
End If
End Sub

Anzeige
AW: Bestimmte Zellen in ein anderes Blatt kopieren
17.05.2019 11:44:52
Piet
Hallo Kollegen
ich habe eure Antworten nicht gesehen, mein PC war nicht aktualisiert! War so ins Beispiel vertieft das ich jetzt erst eure interessanten Antworten mitbekomme. Nun ja, was solls, jetzt hat er die frei Auswahl!
mfg Piet

322 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige