Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Stücklisten auf mehreren Ebenen

Forumthread: Stücklisten auf mehreren Ebenen

Stücklisten auf mehreren Ebenen
29.05.2013 17:14:29
stef26
Hallo liebe Excelgemeinde,
ich hab da mal ein kniffliges Problem, das ich nicht auf die reihe bekomme.
Ich habe eine Mehrstufige Stückliste, die ich mir aus einem System in excel einlade.
(Stufe 1: alle direkt verbauten Bauteile,Stufe 2: Bauteile die in einer der Bauteile der Stufe 1 verbaut werden usw....)
In der Spalte K steht die Stufe (1,2,3,4)
Ich möchte 2 Abfragen generieren, die von K2 bis K500 von oben nach unten durchlaufen soll.
a) Abfrage 1: wechselt die Stufe 1 auf Stufe 2 ist die Materialnummer (Spalte C)
abzufragen, ob die Unterstückliste gelöscht werden soll.
Bei ja dann lösche den Bereich ab der Erhöhung zur Stufe 2 bis zur nächsten Stufe 1
Weiter suchen, ob es noch Erhöhungen von Stufe 1 auf 2 gibt
b) Abfrage 2: wechsel der Stufe 2 auf 3
hier soll ebenfalls die Materialnnummer (Spalte C) abgefragt werden, ob deren Stückliste gelöscht werden soll. bei ja löschen bis Stufe von 3 auf 2 oder von 3 auf 1 zurück springt.
leider kannm man aktuell keine xls hochladen, sonst hätte ich mal es euch anhand eines Beispieles mal zeigen können.
Vieleicht gibt es ja jemanden, der das trotzdem verstanden hat wo mein Problem ist
Wäre für jede art von kreativer Rückmeldung dankbar, die mich hier einen Schritt weiter bringt...
:-)
liebe Grüße
Stef26

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
eider kannm man aktuell keine xls hochladen,
29.05.2013 18:00:13
robert
Hi,
wie kommst Du darauf?
Siehe Zum File-Upload.....
Gruß
robert

jetzt mit Anhang
29.05.2013 21:52:44
stef26
Hallo,
habs nun geschafft die Datei hochzuladen...
https://www.herber.de/bbs/user/85578.zip
Wie schon erwähnt such ich nach der Möglichkeit in einer Mehrstufigen Stückliste
Untergeordnete Stücklisten nach Bedarf zu löschen.
Wer Ideen hat wie man das angehen kann, bitte meldet euch
Besten Dank schonmal
Stef26

Anzeige
AW: jetzt mit Anhang
30.05.2013 10:33:38
fcs
Hallo Stef,
willst du bei jedem Stufenwechsel von 1 nach 2 bzw. 2 nach 3 gefragt werden, ob die nachfolgenden Zeilen gelöscht werden sollen oder soll die gesamte Liste ohne Zwischenabfragen abgearbeitet werden?
Wenn die gesamte Liste in einem Rutsch abgearbeitet werden soll, dann kann man mit dem Autofilter arbeiten. Den Filter auf die zu löschenden Stufen setzen. Dann die Stufen in den angezeigten Zeilen löschen. Dann in der Spalte Inhalte suchen (Leere Zellen) und Zellen löschen (Abfrage nach ganze Zeilen mit ok beantworten).
Gruß
Franz

Anzeige
AW: jetzt mit Anhang
30.05.2013 11:41:56
stef26
Hallo Franz,
schön dass du dich meiner angenommen hast.
Ich bräucht bei jedem Wechsel eine Abfrage, da nicht jede Unterstruktur gelöscht werden soll.
Da es ja vorkommen kann, dass eine Stufe 2 gelöscht werden soll, die auch noch unterstufen besitzt,
ist das ganze nicht so einfach. Ich vermute mal (bin mir aber selbst nicht sicher), dass man wie
ich ganz am Anfang geschrieben habe auf Zwei Schritte Abfragen müsste. Zuerst den wechsel von Stufe 1 auf 2. Danach erst die Stufen 2 auf 3...
Es ist verflixt kompliziert...
Gruß
Stefsn

Anzeige
AW: jetzt mit Anhang
31.05.2013 10:44:35
fcs
Hallo Stefan,
hier mal ein erster Ansatz für ein Makro zur Löschung von Zeilen.
Je nachdem für welche "Do Until" - Zeile entscheidest ist das Löschverhalten etwas anders.
Bitte Makro in einer Kopie des Tabellenblattes testen, da die Löschungen nicht rückgängig gemacht werden können außer durch Schliessen der Datei ohne zu speichern.
Gruß
Franz
'Code in einem allgemeinen Modul
Sub Loeschen_Stufe_2()
Call Loeschen_Stufe(StufeNr:=2)
End Sub
Sub Loeschen_Stufe_3()
Call Loeschen_Stufe(StufeNr:=3)
End Sub
Sub Loeschen_Stufe(StufeNr As Integer)
Dim wks As Worksheet
Dim Zeile As Long, Zeile_Letzte As Long, Auswahl As Long
Dim bolGeloescht As Boolean
Set wks = ActiveSheet
With wks
Zeile_Letzte = .Cells(.Rows.Count, 11).End(xlUp).Row
For Zeile = 2 To .Cells(.Rows.Count, 11).End(xlUp).Row
If .Cells(Zeile + 1, 11).Value > .Cells(Zeile, 11).Value And .Cells(Zeile, 11).Value =  _
StufeNr - 1 Then
.Cells(Zeile, 3).Select
Auswahl = MsgBox(StufeNr & ". Ebene löschen?" & vbLf _
& "Komponenten-Nr. " & .Cells(Zeile, 3).Value & vbLf _
& "Objektkurztext: " & .Cells(Zeile, 4).Value & vbLf, _
vbYesNoCancel + vbDefaultButton2, "Löschen von Teilen der Stufe " & StufeNr)
Select Case Auswahl
Case vbYes
'            Do Until .Cells(Zeile + 1, 11).Value   _
StufeNr 'Löscht Zeilen _
der Stufe bis Stufe mit Unterstufen beginnt
Do Until .Cells(Zeile + 1, 11).Value 

Anzeige
AW: jetzt mit Anhang
31.05.2013 12:18:19
stef26
Hallo Franz,
jaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa !!!!!!!!!!!!!
Super das ist genau das was ich gesucht habe.
Vielen herzlichen Dank, dass du dir hier so viel Zeit für mich genommen hast.
Besten Dank. Habs zwei mal getestet, funktioniert einfach klasse.
Werde mal versuchen den Code zu lesen um nachzuvollziehen zu können wie du das
hin bekommen hast.
Ich finds einfach nur klasse.
NOCHMAL DANKE DANKE DANKE
Du bist der BESTE !
1000x :-)
Stef26
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Stücklisten auf mehreren Ebenen bearbeiten in Excel


Schritt-für-Schritt-Anleitung

  1. Daten vorbereiten: Stelle sicher, dass Deine Stückliste in Excel gut strukturiert ist. Die Stufen sollten in einer Spalte (z.B. Spalte K) klar gekennzeichnet sein.

  2. Makro erstellen: Öffne den VBA-Editor mit ALT + F11. Erstelle ein neues Modul und füge den folgenden Code ein:

    Sub Loeschen_Stufe_2()
       Call Loeschen_Stufe(StufeNr:=2)
    End Sub
    
    Sub Loeschen_Stufe_3()
       Call Loeschen_Stufe(StufeNr:=3)
    End Sub
    
    Sub Loeschen_Stufe(StufeNr As Integer)
       Dim wks As Worksheet
       Dim Zeile As Long, Zeile_Letzte As Long
       Dim Auswahl As Long
       Set wks = ActiveSheet
       Zeile_Letzte = wks.Cells(wks.Rows.Count, 11).End(xlUp).Row
    
       For Zeile = 2 To Zeile_Letzte
           If wks.Cells(Zeile + 1, 11).Value > wks.Cells(Zeile, 11).Value And wks.Cells(Zeile, 11).Value = StufeNr - 1 Then
               wks.Cells(Zeile, 3).Select
               Auswahl = MsgBox(StufeNr & ". Ebene löschen?" & vbLf & "Komponenten-Nr. " & wks.Cells(Zeile, 3).Value, vbYesNoCancel, "Löschen von Teilen der Stufe " & StufeNr)
               If Auswahl = vbYes Then
                   ' Hier den Löschvorgang implementieren
               End If
           End If
       Next Zeile
    End Sub
  3. Makro ausführen: Kehre zu Excel zurück und führe das Makro über Entwicklertools > Makros aus.

  4. Abfragen erstellen: Achte darauf, dass das Makro bei jedem Stufenwechsel eine Abfrage anzeigt, um zu entscheiden, ob die Unterstückliste gelöscht werden soll.


Häufige Fehler und Lösungen

  • Fehler: Makro funktioniert nicht
    Lösung: Überprüfe, ob das Makro korrekt in einem allgemeinen Modul eingefügt wurde. Stelle sicher, dass die Stufen in Spalte K korrekt eingegeben sind.

  • Fehler: Abfrage wird nicht angezeigt
    Lösung: Vergewissere Dich, dass die Bedingungen im If-Befehl des Makros korrekt gesetzt sind.


Alternative Methoden

  • Autofilter nutzen: Du kannst auch den Autofilter verwenden, um nur die relevanten Stufen anzuzeigen und manuell zu löschen. Setze den Filter auf die Stufen, die Du entfernen möchtest, und lösche die angezeigten Zeilen.

  • Pivot-Tabellen: Wenn Du eine Übersicht über die Stücklisten benötigst, kannst Du eine Pivot-Tabelle erstellen, um die Daten nach Stufen zu gruppieren.


Praktische Beispiele

  1. Beispiel einer Stückliste:

    • Stufe 1: Bauteil A
    • Stufe 2: Bauteil B (unter Bauteil A)
    • Stufe 3: Bauteil C (unter Bauteil B)
  2. Anwendung des Makros:

    • Wenn Du das Makro für die Löschung von Stufe 2 anwendest, wird die Abfrage angezeigt, und Du kannst entscheiden, ob Bauteil B (und alle darunter liegenden Bauteile) gelöscht werden sollen.

Tipps für Profis

  • Makros anpassen: Passe den Code an Deine spezifischen Bedürfnisse an, z.B. indem Du zusätzliche Abfragen oder Bedingungen hinzufügst.

  • Backup erstellen: Vor dem Ausführen des Makros solltest Du immer ein Backup der Datei erstellen, um Datenverluste zu vermeiden.

  • Testlauf: Führe das Makro zuerst an einer Testdatei aus, um sicherzugehen, dass es wie gewünscht funktioniert.


FAQ: Häufige Fragen

1. Wie viele Stufen kann ich in einer Stückliste haben?
In Excel kannst Du theoretisch beliebig viele Stufen anlegen. Achte jedoch darauf, dass die Übersichtlichkeit gewahrt bleibt.

2. Was mache ich, wenn ich die Abfragen nicht möchte?
Du kannst das Makro so anpassen, dass es die Löschungen ohne Abfragen durchführt. Entferne dazu die MsgBox-Befehle im Code.

3. Kann ich das Makro auch in älteren Excel-Versionen nutzen?
Das Makro sollte in den meisten aktuellen Excel-Versionen funktionieren. Bei älteren Versionen kann es zu Einschränkungen kommen, insbesondere bei VBA-Funktionen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige