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

lassen sich meine Arbeitsschritte vereinfachen?

lassen sich meine Arbeitsschritte vereinfachen?
28.08.2019 18:31:41
Jenny
Hallo,
wollte mal fragen ob sich sowas auch vereinfachen oder gar automatisieren lässt.
Ich füge am Ende von Tabelle2 Spalte A 179 aus dem Internet kopierte Texte untereinander ein. Lösche dann alle soeben eingefügten, die ich nicht brauche und entferne dann in der kompletten Spalte A die Duplikate.
Ich benötige die immer die 3. 9. 15. 21. usw. Zeile also jede 6.
und lösche demnach die 1. 2. 4. 5. 6. 7. 8. 10. 11. usw.
Lässt sich das irgendwie vereinfachen / automatisieren? Ist immer mühsam 100 Zeilen auszuwählen zum löschen, die nicht aufeinander folgen.
Und wie gesagt zeilen Löschen tue ich immer nur in dem Bereich, den ich gerade zuvor eingefügt habe, Duplikate entfernen tue ich immer in der kompletten Spalte A.
Danke für eure Hilfe
Jenny

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das kann man natürlich automatisieren...
28.08.2019 18:38:43
{Boris}
Hi,
...das ist ein kleiner VBA-Code. Mehr dazu, wenn Du uns Deine Mustermappe zeigst.
VG, Boris
AW: Das kann man natürlich automatisieren...
28.08.2019 18:55:23
Jenny
Hallo Boris,
sorry ich habe keine Ahnung was ich da zeigen könnte, das Makro soll ja auf einen gerade eingefügten Text reagieren. Wenn du mir sagst, was diese Beispielmappe sinnvollerweise enthalten soll, mache ich natürlich eine. Ein Blatt mit 179 willkürlichen Texten, kein Problem:
sagen wir einfach, der blaue Bereich war vorher schon da, der rote Bereich sind die 179 Texte die ich gerade eingefügt habe, dann stelle ich mir vor, dass das Makro alles im roten bereich außer Text3, Text9, Text15 usw. löscht und im Anschluss in der kompletten Spalte A Duplikate entfernt.
So dass am Schluss das da stehen sollte, was ich in Spalte C stehen habe.
Was auch noch toll wäre, ich habs auch schon in Spalte C berücksichtigt, wenn die Texte, die aus dem roten Bereich nüch übrig bleiben, vertauscht werden.
https://www.herber.de/bbs/user/131695.xlsm
Gruß
Jenny
Anzeige
mir fällt grad auf
28.08.2019 19:00:20
Jenny
in der Bsp. Mappe ist es Tabelle1, im Original aber Tabelle2
AW: mir fällt grad auf
28.08.2019 20:46:13
Matthias
Code im Post darunter
VG
AW: Das kann man natürlich automatisieren...
28.08.2019 20:45:39
Matthias
Moin!
Hier mal ein Versuch. Packe dir einen Button in das Blatt und weise dem den folgenden Code zu. Der Code sucht sich die letzte Zeile in Spalte A. Startet dann und nimmt die letzten 179 Werte. Die ersten 2 werden gelöscht und dann immer der 6. Wert stehen gelassen. Dann werden Duplikate entfernt und die leere Zeile noch geöscht.
Einfach mal an verschiedenen Daten testen, ob das gewünschte Ergebnis rauskommt.
Private Sub CommandButton1_Click()
Dim ende As Long, start As Long
Dim blatt
Set blatt = Tabelle2
ende = blatt.Cells(blatt.Rows.Count, 1).End(xlUp).Row
If ende 

Anzeige
AW: Das kann man natürlich automatisieren...
28.08.2019 21:24:20
Jenny
Hallo Matthias,
das hat das Problem erwische ich beim Kopieren nicht alle Zeilen werden bestehende Zeilen gelöscht.
Aber da alle bestehenden Zeilen Inhalt in Splalte C haben und alle neuen nicht, ist es doch sicher möglich zu prüfen ob in Spalte A 179 Einträge mehr als in Spalte C stehen oder?
Außerdem muss ich gestehen, ich hab noch nie so einen Button erstellt. Wie geht das?
Aber mir wäre sowieso ein Makro dass direkt aufs Einfügen reagiert lieber als eins das ich händig starten muss.
Gruß
Jenny
nee das macht auch keinen Sinn
28.08.2019 21:25:58
Jenny
in den 179 Zeilen können auch Leerzeilen sein, also prüfen ob zwischen der letzten Zeile in Spalte A und der letzten Zeile in Spalte C 179 Zeilen liegen.
Anzeige
AW: nee das macht auch keinen Sinn
29.08.2019 11:04:32
Matthias
Moin!
Also nochmal zum Verständnis. Du hast in Spalte C die alten Werten, die schon da sind. Die selben DAten stehen auch schon in Spalte A. Dort fügst du nun deine kopierten Werte ein. Das können aber auch mal weniger sein (geht auch mehr?) und dazu können Leerzeilen dabei sein. Sind die Leerzeilen gewollt oder sind die fehlerhaft?
Um das ganze einfacher zu gestalten.
Hast du auf dem Blatt eine leere Spalte die man nutzen kann? Dann würde ich vorschlagen wir kopieren die Daten dorthin. Schauen ob es 179 gefüllte Zellen sind (oder gelten die Leerzellen auch?). Sind es weniger (was bei mehr?) kommt eine Meldung und nichts weiter. Sind es genau 179 wird nach deinem Schema gelöscht und die verbleibenden kommen und deine schon existenten Werte und die Doppelten werden entfernt.
Das wäre glaube ich einfacher. Müsstest halt nur zu den Fragen was sagen (wo leere Spalte, was mit Leerzellen, was bei weniger / mehr als 179 Werten ).
VG
Anzeige
AW: nee das macht auch keinen Sinn
29.08.2019 20:07:31
Jenny
Hallo Matthias,
ich glaube hier jetzt auf alles einzugehen was du geschrieben hast, wird dann erst recht zu unübersichtlich, ich habe aufbauend auf dem was du geschrieben hast, eine andere Idee wie wir das ganz lösen.
Ich füge die Texte in Tabelle3!A1:A179 ein und alle Zeilen außer 3. 9. 15. 21. usw. werden gelöscht, die Reihenfolge umgedreht und dann die Texte ausgeschnitten und ans Ende von Tabelle2 Spalte A eingefügt.
Und dann noch in Tabelle2 Spalte A Duplikate entfernt.
Ist es so nachvollziehbar?
Und wenn eine andere Zeilenzahl als 179 kopiert wurde, soll das Makro nicht starten.
Eins noch zu den Leerzellen, es ist immer jede zweite, sprich 2. 4. 6. 8. Zelle bei den kopierten Texten leer. Aber dachte mir wenn die Zeile ja sowieso gelöscht wird, ist es egal ob da vorher was drinstand oder nicht. Daher fand das bislang keine Erwähnung.
Gruß
Jenny
Anzeige
AW: nee das macht auch keinen Sinn
29.08.2019 22:27:07
Matthias
Moin!
Kein Problem. Können wir auch so machen. Das mit den Leerzeichen ging mir nur drum, dass die nicht am Ende vorkommen. Das würde dann ja die Zahl der Einträge beim Zählen verändern. Hier nun eine Variante ohne Button. Den Code so einfach in das Codefenster vom Blatt 3 kopieren. Beim Eintragen werden die Einträge in Spalte A gezählt sind es 179 werden wie gewünscht nur bestimmte Einträge (3,9,15 usw) übernommen und umgedreht an den Inhalt in Tabelle2 eingefügt. Dann kommt noch ein Duplikate entfernen darüber. Habe das mal so im Code gemacht, dass du da an den Daten in Tabelle3 keine Änderungen siehst. Da ist nix gelöscht. Kann man zudem auch nochmal vergleichen.
Wie immer bitte mal testen.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ende As Long, zeile As Long, eintrag As Long
Dim blatt, daten, ergebnis(1 To 30, 1 To 1)
Set blatt = Tabelle3
ende = blatt.Cells(blatt.Rows.Count, 1).End(xlUp).Row
If ende  179 Then
MsgBox "Es wurden nicht 179 Zeilen eingefügt! Bitte überprüfen. Das Makro stoppt jetzt!", ,  _
"Eingabefehler"
Exit Sub
End If
daten = blatt.Cells(1, 1).Resize(179, 1)
eintrag = 30
For zeile = 3 To ende Step 6
ergebnis(eintrag, 1) = daten(zeile, 1)
eintrag = eintrag - 1
Next
ende = Tabelle2.Cells(blatt.Rows.Count, 1).End(xlUp).Row
Tabelle2.Cells(ende + 1, 1).Resize(30, 1) = ergebnis
Tabelle2.Columns(1).RemoveDuplicates Columns:=1, Header:=xlNo
MsgBox "fertig"
End Sub

VG
Anzeige
AW: nee das macht auch keinen Sinn
29.08.2019 22:40:11
Jenny
Hallo Matthias,
werde mich dann gleich ans Testen machen.
Eins an deinem Text macht mich noch stutzig
Was ist wenn ich nicht 179 sondern doch 180 Zeile kopiere und Zeile 180 einfach nur leer ist?
Reicht es dann, einfach die 179 in deinem Makro in 180 zu ändern?
Gruß
Jenny
AW: nee das macht auch keinen Sinn
29.08.2019 22:47:07
Jenny
Hallo Matthias,
werde mich dann gleich ans Testen machen.
Eins an deinem Text macht mich noch stutzig
Was ist wenn ich nicht 179 sondern doch 180 Zeile kopiere und Zeile 180 einfach nur leer ist?
Reicht es dann, einfach die 179 in deinem Makro in 180 zu ändern?
Gruß
Jenny
Anzeige
Testergebnis
29.08.2019 23:00:39
Jenny
Hallo Matthias,
hmmm jetzt versteh ich nichts mehr.
Ich habs zwar am Laufen, habe aber die Tabellennamen ändern müssen, obwohl ich dir die Blattnamen genannt habe, wie sie in der Mappe heißen, aber plötzlich hießen sie im VBA Editor anders und der eigentliche Blattname stand in Klammern dahinter.
Naja nachdem ich das angepasst habe, hat es funktioniert.
Wenn jetzt noch der Text den ich einfüge in Tabelle3 auch wieder gelöscht wird, wär alles super, weil wenn ich es von Hand lösche kommt die Meldung ich hätte keine 179 Zeilen eingefügt.
Gruß
Jenny
AW: Testergebnis
29.08.2019 23:49:53
Matthias
Moin!
Da war ich mir nicht sicher, ob ich es einfach rauslöschen sollte. Hier ist es jetzt mit dabei. Bzgl. der Leerzeilen. Wenn du 180 Zeilen reinkopierst und die 180ste ist leer, ist das kein Problem. Der Code sucht ja die letzte belegte Zelle und das wäre dann wieder die in Zeile 179. Falls in der Zelle in 180 aber irgendwelche Zeichen sind (die nur nicht angezeit werden) kommt wieder die Meldung. Wenn so was vorkommt, könnte man den Code aber noch anpassen.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ende As Long, zeile As Long, eintrag As Long
Dim blatt, daten, ergebnis(1 To 30, 1 To 1)
Dim zustand
Set blatt = Tabelle3
ende = blatt.Cells(blatt.Rows.Count, 1).End(xlUp).Row
If ende  179 Then
MsgBox "Es wurden nicht 179 Zeilen eingefügt! Bitte überprüfen. Das Makro stoppt jetzt!", ,  _
"Eingabefehler"
Exit Sub
End If
daten = blatt.Cells(1, 1).Resize(179, 1)
eintrag = 30
For zeile = 3 To ende Step 6
ergebnis(eintrag, 1) = daten(zeile, 1)
eintrag = eintrag - 1
Next
zustand = Application.EnableEvents
Application.EnableEvents = False
blatt.Columns(1).ClearContents
Application.EnableEvents = zustand
ende = Tabelle2.Cells(blatt.Rows.Count, 1).End(xlUp).Row
Tabelle2.Cells(ende + 1, 1).Resize(30, 1) = ergebnis
Tabelle2.Columns(1).RemoveDuplicates Columns:=1, Header:=xlNo
MsgBox "fertig"
End Sub

VG
Anzeige
AW: Testergebnis
30.08.2019 13:00:25
Jenny
Hallo Matthias,
so klappt es, danke.
Gruß
Jenny

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige