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

Makro zum Löschen von Zeilen in Tabelle

Makro zum Löschen von Zeilen in Tabelle
11.04.2013 12:03:07
Zeilen
Meine VBA Kenntnisse sind leider sehr eingeschränkt. Deswegen folgende Frage:
Eine Excel Tabelle enthält die Artikeldaten von 40 Lieferanten. Der Lieferantenname steht in jeder Zeile für jeden Artikel jeweils in Spalte A.
Ich möchte nun aus der Gesamttabelle für jeden Lieferant eine Tabelle kreieren, in der jeweils nur die Artikel dieses Lieferanten stehen.
Grundsätzlich würde ich mir das Makro so vorstellen, dass es jede Zeile prüft, ob ein bestimmter am besten per Auswahlfeld einzugebender Lieferant in Spalte A der Zeile steht. Falls nicht, soll die Zeile gelöscht werden. Das ganze sollte auf die maximale Zeilenanzahl von 1000 Zeilen begrenzt werden.
Oder gibt es noch eine bessere Lösung. Kann mir hier jemand mit dem Code helfen?
Danke
Andreas

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

Betreff
Datum
Anwender
Anzeige
AW: Makro zum Löschen von Zeilen in Tabelle
11.04.2013 12:19:51
Zeilen
Verstännisfrage: Was spricht gegen FILTERN ?
Gruß
erwin

AW: Makro zum Löschen von Zeilen in Tabelle
11.04.2013 12:40:18
Zeilen
Momentan filtere ich und lösche die Artikel, die nicht dem Lieferant zugeordnet sind manuell.
Diesen manuellen Schritt würde ich gerne automatisieren.
Optimal wäre eigentlich ein Makro, dass mir aus einer Gesamtdatei 40 Dateien macht, wobei in jeder Datei nur die Artikel stehen, die dem Lieferant zugeordnet sind.
Wenn ich das ganze manuell mache, benötige ich dafür knapp eine Stunde.
Grüße
Andreas

AW: Makro zum Löschen von Zeilen in Tabelle
11.04.2013 12:44:07
Zeilen
Hallo,
Wenn ich das ganze manuell mache, benötige ich dafür knapp eine Stunde.
Dann wärst du jetzt fast fertig. ;-)
Gruß
Rudi

Anzeige
AW: Makro zum Löschen von Zeilen in Tabelle
11.04.2013 22:30:25
Zeilen
Hallo Rudi,
bitte gib mir Bescheid, wenn Du mal einen Lebensratgeber herausgeben solltest.
Dann kaufe ich mir auf jeden Fall eine Version :-)
Grüße
Andreas

AW: Makro zum Löschen von Zeilen in Tabelle
11.04.2013 12:46:28
Zeilen
Wenn ich das ganze manuell mache, benötige ich dafür knapp eine Stunde.
Hallo Andreas,
brauchst du das nur einmal? Dann mach es doch eben per Hand.
Wenn du das ständig brauchst, macht natürlich ein Makro Sinn.
Dabei helfe ich dir gerne. Bist du in VBA fit genug, um eine Musterlösung an deine Datei anzupassen?
Besser: lad eine Mustertabelle hoch, die genau deiner Datenstruktur entspricht.
Optimal wäre eigentlich ein Makro, dass mir aus einer Gesamtdatei 40 Dateien macht, wobei in jeder Datei nur die Artikel stehen, die dem Lieferant zugeordnet sind.
Dateien oder Tabellen innerhalbe einer Datei? Beides geht.
Grüße,
Klaus M.vdT.

Anzeige
AW: Makro zum Löschen von Zeilen in Tabelle
11.04.2013 22:24:35
Zeilen
Hallo Klaus,
danke für das Angebot.
Ich stehe monatlich vor der gleichen Aufgabe, da ich mit Hilfe der Datei Informationen von Lieferanten abfrage. Am schönsten wäre ein Makro, dass mir wirklich 40 verschiedene Dateien generiert bzw kopiert, reduziert und dann unter einem geeigneten Namen speichert.
Wenn ich einen Code habe, bin ich in VBA fit genug, den auf meine Bedürfnisse wie z.B. andere Lieferantennamen bzw. Dateinamen oder Pfade anzupassen.
Von der Grundstruktur sollte der Code in die Masterdatei gehen, diese kopieren und unter einem neuen Namen speichern und dann zwischen Zeile 4 und 1000 in jeweils in Spalte A prüfen, ob dort ein bestimmter im Code definierter Lieferantennamen steht. Falls nein sollte die Zeile entfernt werden.
Danach soll die Datei dann unter dem Namen mit Zusatz des Lieferantenamen gespeichert werden.
Dann soll das gleiche für den nächsten Lieferanten in meiner Liste bzw. im Code durchgeführt werden, bis alle 40 Lieferanten abgearbeitet sind. Die Lieferanten kann ich auf jeden Fall manuell im Code pflegen.
Die Datei ist mit Datenprüfungfunktion für verschiedene Spalten ausgestattet. Die Dropdown Listen sind in einem 2. ausgeblendeten Tabellenblatt in der Datei, das dann natürlich auch in den neuen Dateien noch vorhanden sein muss.
Anbei meine Beispiel Datei, die ich auf wenige Lieferanten reduziert habe:
https://www.herber.de/bbs/user/84834.xlsx
Für Deine Hilfe wäre ich Dir sehr dankbar. Falls Du irgend wann mal auf der Suche nach guten Gartenmöbeln sein solltest, würde ich mich auch gerne erkenntlich zeigen.
Grüße
Andreas

Anzeige
AW: Makro zum Löschen von Zeilen in Tabelle
12.04.2013 08:54:02
Zeilen
Hi,
anbei meine Lösung:
https://www.herber.de/bbs/user/84840.xlsm
ich bin mir bei einer Zeile nicht ganz sicher, ob sie auch in Excel 2007 schon funktioniert:
.EntireColumn.RemoveDuplicates Columns:=1, Header:=xlNo
Wenn nicht, melde dich kurz und ich schreib das um.
Das folgende nur, weil du es zuerst erwähnt hast
Wenn du dich wirklich erkenntlich zeigen willst: Statt MIR Geld, Kuchen oder Gartenmöbel zukommen zu lassen, überlege dir bitte einen Betrag von X Euro den dir meine Hilfe wert war und spende ihn an:
http://www.plan-deutschland.de/helfen-mit-plan/spenden/
(oder eine ähnliche Organisation deiner Wahl).
Grüße,
Klaus M.vdT.

Anzeige
Oh achso vergessen:
12.04.2013 08:59:19
Klaus
Hallo,
Das Makro ist in "Modul1". Ich hab auf deiner Mastertabelle keinen sinnigen Platz für einen Button gefunden, den (oder Tastenkürzel) musst du noch selbst einfügen.
Aber ist vielleicht eh ganz gut, wenn du einmal die Anmerkungen im Code (Pfadangabe usw) liest bevor du das Makro loslegen lässt.
Grüße,
Klaus M.vdT.

AW: Makro zum Löschen von Zeilen in Tabelle
11.04.2013 12:52:32
Zeilen
Hallo
Wo ist das Problem? Einfach den gefilterten Bereich zu kopieren
Tabelle1

 AB
1LieferantArtikelnr.
2Lieferant1781
3Lieferant248
4Lieferant3463
5Lieferant4451
6Lieferant5686
7Lieferant6379
8Lieferant1322
9Lieferant2692
10Lieferant3114
11Lieferant4865
12Lieferant5407
13Lieferant6808
14Lieferant1193
15Lieferant2784
16Lieferant3399
17Lieferant4935
18Lieferant5823
19Lieferant6569
20Lieferant7410
21Lieferant8354
22Lieferant9618


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gefiltert nach Lieferant1
Tabelle1

 AB
1LieferantArtikelnr.
2Lieferant1781
8Lieferant1322
14Lieferant1193


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Nun einfach kopieren und Einfügen wo immer Du willst ;-)
Kannst Du auch aufzeichnen MakroRekorder
Gruß Matthias

Anzeige
AW: Makro zum Löschen von Zeilen in Tabelle
11.04.2013 22:28:38
Zeilen
Hallo Matthias,
danke für Deine Hilfe.
Manuell habe ich keine Probleme 40 Dateien aus einer zu erzeugen.
Ich will das aber in Zukunft mit einem Knopfdruck erledigen, inkl. automatischer Benennung der neuen Dateien und Übernahme der Datenprüfung in der Datei, die wiederum mit einem anderen Tabellenblatt verknüpft ist.
Grüße
Andreas

wie schade ...
17.04.2013 08:06:41
Klaus
... das klang nach einer relativ wichtigen Aufgabe, bei der die Hilfe des Forums viel Zeit hätte sparen können. Eine komplette Lösung liegt vor (mein Beitrag weiter oben), aber man wird nie erfahren ob sie auch angekommen ist.
Ich werde nie verstehen, dass Leute nach Hilfe schreien, dann aber nach 24h oder so nicht mehr ins Forum schauen bzw keine Rückmeldungen geben.
frustrierte Grüße,
Klaus M.vdT.

Anzeige
AW: wie schade ...
17.04.2013 10:56:34
Andreas
Hallo Klaus,
entschuldige meine späte Antwort. Leider war ich geschäftlich unterwegs und bin heute erst wieder im Büro, kann Deine Frustration aber natürlich nachvollziehenund lerne daraus in Zukunft schneller Feedback zu geben, wenn mir jemand bei meinen Excel Problemen hilft.
Erst mal vielen Dank für Deine Mühe und Deine Lösung.
Der Code funktioniert gut. Nun ist mein Problem, dass in der Original Tabelle / Beispieltabelle für viele Spalten Datenüberprüfung eingestellt ist. Nach ausführen deines Makros, ist diese Funktion in den neuen Tabellen nicht mehr enthalten.
Gibt es hierfür auch eine Lösung?
Grüße und nochmal Entschuldigung
Andreas

Anzeige
anderer Ansatz
17.04.2013 11:58:54
Rudi
Hallo,
Code aus deiner 'Mastertabelle' heraus starten. Sub CreateFiles() Dim rngC As Range, objSuppliers As Object, objItem Dim sPath As String, sSheet As String, wkb As Workbook, wks As Worksheet Dim rngDel As Range Set objSuppliers = CreateObject("Scripting.dictionary") Set wkb = ActiveWorkbook Set wks = ActiveSheet sSheet = wks.Name sPath = wkb.Path Application.ScreenUpdating = False With wks 'Liste Hersteller For Each rngC In .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp)) objSuppliers(rngC.Value) = rngC.Value Next End With 'Kopie für jeden Hersteller For Each objItem In objSuppliers wkb.Sheets(Array(sSheet, "Dropdowns")).Copy With ActiveWorkbook With .Sheets(sSheet) 'andere Hersteller löschen For Each rngC In .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp)) If rngC objItem Then If rngDel Is Nothing Then Set rngDel = rngC Else Set rngDel = Union(rngDel, rngC) End If End If Next If Not rngDel Is Nothing Then rngDel.EntireRow.Delete End If .Name = objItem End With On Error GoTo SAVEME 'Datei speichern .SaveAs sPath & "\" & objItem, xlOpenXMLWorkbook On Error GoTo 0 .Close False End With Set rngDel = Nothing Next objItem Set wks = Nothing Set wkb = Nothing Exit Sub SAVEME: 'ungültiger Dateiname With Application.FileDialog(msoFileDialogSaveAs) .InitialFileName = sPath & "\" & objItem If .Show = -1 Then wkb.SaveAs .SelectedItems(1), xlOpenXMLWorkbook End With Resume Next End Sub
Gruß
Rudi

Anzeige
AW: anderer Ansatz
17.04.2013 13:52:42
Andreas
Hallo Rudi,
vielen Dank. Das lößt mein Problem perfekt.
Grüße
Andreas

AW: anderer Ansatz
17.04.2013 14:22:13
Klaus
Hallo Rudi,
da haben wir es wieder - Autofilter vs. Arrays :-) ich hab irgendwie ein DejaVu.
Hallo Andreas,
danke für die (späte) Rückmeldung!
Ich hätte jetzt für jedes neue Blatt die Formate kopiert & eingefügt. Rudis Version, mit sheet.copy ein Blatt zu erzeugen dass all die Formate bereits hat, ist natürlich eleganter.
Grüße,
Klaus M.vdT.

319 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige