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

löschen, kopieren, duplikate entfernen

löschen, kopieren, duplikate entfernen
09.12.2021 10:52:31
Jenny
Hallo,
ich bitte um eure Hilfe, ich weiß ist sicherlich ein wenig Aufwand aber ihr würdet mir wirklich sehr viel Arbeit ersparen.
Meine Vorstellung ist, ich füge in Tabelle 1 in eine beliebige Spalte, jedoch auf jedenfall in die Zellen 1:136 136 Texte ein.
Nun würde ich mir wünschen, dass der 2., 6., 10., 14., 18., 22., ..... , 134. (also jeder 4. ab dem 2.) eingefügten Text nach Tabelle 2 Spalte A kopiert wird.
und der 3., 7., 11., 15., 19., 23., ..... , 135. (also jeder 4. ab dem 3.) eingefügten Text nach Tabelle 2 Spalte B kopiert wird.
Dabei sollen die bereits bestehenden Texte in Tabelle 2 nicht überschrieben werden, sondern die neuen Texte am Ende angefügt werden.
Dann sollen noch in Tabelle2 Duplikate entfernt werden mit beiden Spalten als Kriterium.
Und die komplette Spalte, in der zuvor die Texte eingefügt wurden soll gelöscht werden.
Ich wäre euch wirklich dankbar, wenn ihr mir ein Makro zur Verfügung stellt.
Liebe Grüße
Jenny
PS: nutze natürlich XL2021, nicht 22

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: löschen, kopieren, duplikate entfernen
09.12.2021 11:05:16
Herbert_Grom
Hallo Jenny,
und wie wäre es mit einer Beispiel-Arbeitsmappe?
Servus
AW: löschen, kopieren, duplikate entfernen
09.12.2021 11:09:06
Jenny
Hallo Herbert,
ich war mir einfach unsicher, wie ich die erstellen soll, weil ja am Ende des ganzen das meiste gar nicht mehr da sein soll, was zwischendurch mal vorhanden war.
Wenn du mir kurz andeutest, wie in meinem Fall eine brauchbare Mappe aussieht, erstelle ich gerne eine.
LG
Jenny
AW: löschen, kopieren, duplikate entfernen
09.12.2021 11:35:33
Daniel
Hi
eine Beispielmappe sollte immer zwei dinge zeigen:
1. wie liegen die Daten ursprünglich vor (also vor der Bearbeitung)
2. wie soll das Ergebnis aussehen, möglichst passend für die unter 1 gezeigten Daten
das könnten beispielsweise zwei Tabellenblätter sein (vorher/nachher)
oder in Spalte A die Ausgangsdaten und in Spalte C das Ergebnis, vielleicht noch mit ein paar erläuterungen von dir.
Gruß Daniel
Anzeige
AW: löschen, kopieren, duplikate entfernen
09.12.2021 11:57:39
Jenny
Hallo Daniel, hallo Herbert
ok, habe zumindest mal den Beginn in ne Beispielmappe gepackt.
https://www.herber.de/bbs/user/149710.xlsx
Ich füge die Texte in Tabelle1 Spalte A ein und daraus soll dann automatisch das gemacht werden, was in Tabelle2 steht.
Da ich das ganze beliebig oft wiederholen möchte, sollen neue Daten immer am Ende angefügt werden, anstatt bestehende Daten in Tabelle2 zu überschreiben.
Da beim wiederholen Duplikate entstehen können, sollen diese aus Tabelle2 entfernt werden.
Und da ich die Ursprungsdaten dann nicht mehr brauche, soll die Tabelle 1 Spalte A dann gelöscht werden (ganze Spalte, nicht nur der Inhalt).
Ich muss jedoch gestehen, ich hatte am Anfang einen kleinen Denkfehler, der aber das Ganze eher erleichtern als erschweren sollte. Da ich ja die Spalte A immer leere kann ich auch neue Daten immer in Spalte A schreiben, also kann man das Makro auch auf Eingabe in A1:A136 begrenzen, anstatt die Spalte offen zu lassen.
Gruß
Jenny
PS: hoffe das reicht als Beispiel, wenn nicht sagt, was ihr noch braucht.
Anzeige
AW: löschen, kopieren, duplikate entfernen
09.12.2021 14:19:41
Daniel
Hi
probier mal das.
wenn ein Duplikat entseht, wird der untere Wert entferng, der obere bleibt stehen.

Sub Übertrag()
Dim i As Long
For i = 2 To 136 Step 4
Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Zelle.Value
End With
Sheets("Tabelle2").Columns(1).RemoveDuplicates 1, xlNo
End Sub
Gruß Daniel
AW: löschen, kopieren, duplikate entfernen
09.12.2021 18:53:06
Jenny
Hallo Daniel,
erstmal danke. Aber trotzdem da fehlt ja sehr vieles. Es geht los mit der Meldung End with ohne with.
Aber was ist mit meinem Wunsch, dass das Makro automatisch auf einen Eintrag in Tabelle1 Spalte A reagiert.
Wo sind die Einträge in Tabelle2 Spalte B
Auch bei den Duplikaten sollten beide Spalten überprüft werden.
Wo wird Tabelle1 Spalte A gelöscht?
Ich bitte dich, mir ein Makro zur verfügung zu stellen, dass funktioniert und meine Wünsche alle berücksichtigt.
Gruß und danke
Jenny
Anzeige
AW: löschen, kopieren, duplikate entfernen
10.12.2021 08:57:47
Daniel
"Ich bitte dich, mir ein Makro zur verfügung zu stellen, dass funktioniert und meine Wünsche alle berücksichtigt."
Wende dich bitte an einen einen richtigen Auftragsprogrammierer, den du dann für seine Dienstleistung auch entlohnst.
Gruß Daniel
AW: löschen, kopieren, duplikate entfernen
10.12.2021 10:41:33
Klaus
Hallo Daniel,
ich bin voll bei dir, Jennys Forderung ist hier etwas hoch gegriffen für ein Gratis-Forum. Aber: Dein "end with" im Makro war auch falsch, da gehört ein "Next i" hin - vertippt?
Hallo Jenny,
probier mal das:

Sub Übertrag()
Dim i As Long
For i = 2 To 136 Step 4
Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Zelle.Value
next i
Sheets("Tabelle2").Columns(1).RemoveDuplicates 1, xlNo
End Sub
Hier im Forum sind wir alle extrem hilfsbereit, aber freiwillig. Darum wird verständlicherweise allergisch darauf reagiert, wenn Hilfe eingefordert statt erbeten wird.
LG,
Klaus M.
Anzeige
AW: löschen, kopieren, duplikate entfernen
10.12.2021 11:23:10
Daniel
ja, kann sein, vertippt.
ich helfe ja gerne jemanden beim Lernen für von VBA, aber wer nur "Fertigware" abholen will ohne sich selber in die Programmierung einarbeiten zu wollen, der ist bei einem echten Profi besser aufgehoben als in einen Forum.
Gruß Daniel
dann äußere ich mich auch mal
10.12.2021 14:57:04
Jenny
Hallo ihr beiden,
erstmal an Klaus. Zitat: Darum wird verständlicherweise allergisch darauf reagiert, wenn Hilfe eingefordert statt erbeten wird.
Zitat von mir: "Ich bitte dich, mir ein Makro zur verfügung zu stellen, dass funktioniert und meine Wünsche alle berücksichtigt."
Das ist in meinen Augen sehr wohl eine Bitte, steht sogar wörtlich da.
Zu Daniel, du hast in 2 Dingen vielleicht auch nicht ganz unrecht, sicherlich kann ein Lerneffekt auch Sinn machen, zum anderen gebe ich dir recht, dass ein Makro ab einem gewissen Aufwand besser an einen bezalten Programmierer gehört. Aber du scheinst zu verkennen, dass meine Kenntnisse nicht ausreichen, um zu beurteilen wie groß der Aufwand wirklich ist und damit ob das ganze in ein Forum oder an einen bezahlten Programmierer gehört.
Mit dem Makro dass du mir gegeben hast, kann ich wenig bis gar nichts anfangen, weil mir die Kenntnisse fehlen, wie es weitergehen könnte.
Wenn du ein Makro hättest erstellen wollen, das einen Lerneffekt hat und ich das weiterentwickeln könnte, hätte es eines gebraucht, das vom Grundgerüst her meinem Wunsch entspricht, aber noch einzelne Details fehlen. Das wäre etwas gewesen, mit dem ich mich auseinander hätte setzen können wie es funktioniert und was noch fehlen könnte und mir Gedanken machen könnte wie ich das dann anpassen könte. Das wäre etwas gewesen, wo ich dir recht gegeben hätte das ein Lerneffekt mehr Sinn macht als ei fertiges Makro.
Aber habe mich jetzt sowieso entschieden, ohne Makro zu machen und habe inzwischen auch ca. 15% der Daten bearbeitet.
Viele Grüße
Jenny
Anzeige
AW: dann äußere ich mich auch mal
10.12.2021 16:05:50
Piet
Hallo Jenny
ich würde mich freuen wenn du mein Makro einmal auspropierst. Ich denke es ist durch die Kommentare auch zum VBA lernen geeignet.
mjfg Piet
  • 
    Sub Übertrag()
    Dim i As Long, z1 As Long, Spalte As String
    Spalte = InputBox("Bitte die gewünschte Spalte angeben", , "A")
    If Spalte = vbCancel Then Exit Sub
    'zuerst die letzte Zeile in Spalte A suchen  (Tabelle2)
    z1 = Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To 136 Step 4
    z1 = z1 + 1   'z1 auf nächste Zeile setzen und einfügen
    Sheets("Tabelle2").Cells(z1, 1) = Sheets("Tabelle1").Cells(i, Spalte).Value
    Next i
    'dann die letzte Zeile in Spalte B suchen  (Tabelle2)
    z1 = Sheets("Tabelle2").Cells(Rows.Count, 2).End(xlUp).Row
    For i = 3 To 136 Step 4
    z1 = z1 + 1   'z1 auf nächste Zeile setzen und einfügen
    Sheets("Tabelle2").Cells(z1, 2) = Sheets("Tabelle1").Cells(i, Spalte).Value
    Next i
    'Duplikate in beiden spalten löschen
    Sheets("Tabelle2").Columns("A:B").RemoveDuplicates 2, xlNo
    'Daten in Spalte Tabelle1 löschen
    Sheets("Tabelle1").Columns(Spalte).ClearContents
    End Sub
    

  • Anzeige
    AW: dann äußere ich mich auch mal
    10.12.2021 17:27:52
    Jenny
    Hallo Piet,
    ok, hab immer noch nicht verstanden was der Sinn ist If Spalte = vbCancel Then Exit Sub. Warum sollte ich irgendwas canceln, wenn ich das Makro gestartet habe,
    Wie ich bereits ja erwähnt habe, habe ich angefangen die Daten zu sammeln, ohne dass sie in Tabelle2 gebracht werden, da noch kein Makro zur Verfügung stand.
    Dein Makro kann ich jetzt sehr gut zweckentfremden. Ich brauche ja nur die einzelnen Spalten die ich erstellt habe untereinander zu bringen, habe dazu das Makro
    
    Sub CopyPrim()
    Quelle = "Tabelle1"
    Ziel = "Tabelle2"
    Yziel = 1
    With Sheets(Quelle)
    'Durchlaufe alle Spalten der Quelle
    For Xquelle = 1 To .Cells.SpecialCells(xlCellTypeLastCell).Column
    'Durchlaufe alle Zeilen der Quelle
    For Yquelle = 1 To .Cells.SpecialCells(xlCellTypeLastCell).Row
    'Ist die Zelle leer?
    If Not IsEmpty(.Cells(Yquelle, Xquelle)) Then
    'Zellinhalt kopieren
    Sheets(Ziel).Cells(Yziel, 1) = .Cells(Yquelle, Xquelle)
    Yziel = Yziel + 1
    End If
    Next
    Next
    End With
    End Sub
    
    gefunden und getestet und dann dein Makro auf die neuen Ausmaße anpassen, muss ja nur die beiden zahlen 136 ändern, wenn es dann mehr als 136 Zeilen sind und habe dann im Endeffekt auch auf diesem, wenn auch anderem als ursprünglich gedanten Weg das was ich haben wollte.
    Eine Frage habe ich jedoch noch zu deinem Makro. Es fällt mir auf, dass es, wenn bei Start Tabelle2 leer ist, die erste Zeile frei lässt.
    Ich denke es liegt daran, dass
    z1 = Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row
    die erste freie Zeile sucht
    und dann bevor etwas eingefügt wird mit
    z1 = z1 + 1
    in die nächste (2.) zeile gespungen wird?
    DAnke auf jeden Fall für ein Makro in das ich mich hineinversetzen konnte, wie mein Anliegen umgesetzt werden kann
    Jenny
    Anzeige
    AW: dann äußere ich mich auch mal
    11.12.2021 16:02:10
    Piet
    Hallo Jenny
    wie ich sehe hast du das Makro inzwischen in Eingeninitiative selbst angepasst. Ich gratuliere dir ganz herylich dazu, schöne Arbeit.
    Bei deinem Makro kann man auf die InputBox verzichten. Ich fügte sie ein, weil du schriebst, jede beliebige Spalte soll übertragen werden.
    Du hast richtig erkannt das man ein Makro über die Inputbox abbrechen kann, wenn vbCancel gedrückt wird. Auch deien 2. Vermutung stimmt.
    Durch z=z + 1 kann man nicht in die 1. Zeile schreiben. Was meistens nicht stört, weil ja oft Überschriften vorhanden sind die nicht gelöscht werden dürfen.
    mfg Piet
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige