Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1268to1272
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

Stücklistenpflege

Stücklistenpflege
Peter
Hallo an die Experten,
ich bin bereits mehrere Tage an einem Problem und finde keinen Lösungsansatz.
In der Tabelle habe ich mehrere Spalten, die eine Stückliste erzeugen sollen.
Spalte B gibt den Bezug an.
Alle Materialnummern aus Spalte C und F müssen im Ergebnis Überkreuzbeziehungen erzielen.
Wenn B gleich ist, dann: jede Nr. aus Spalte C muss mit jeder Nr. aus F verknüpft werden.
In der Beispieldatei lässt es sich einfacher erklären.
https://www.herber.de/bbs/user/80700.xlsx
Das ist eine richtig schwere Aufgabe - bin am verzweifeln.
Wenn jemand ein kleines Tool schreibt, ich wäre superdankbar Smile
Gruß
Peter

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Stücklistenpflege
24.06.2012 19:22:50
Erich
Hi Peter,
deine Beispielmappe wirft einige Fragen auf.
Weißt du, dass im Bereich C4:C21 Zahlen stehen, im Bereich F4:F21 hingegen Texte?
Auch in D4:D21 und H4:H21 stehen Texte.
Das kannst du z. B. mit ISTTEXT() leicht prüfen:
 BCDEFKLM
33MaterialStücklisteStückStückBezug Zahl?Text?
3440XXA4-SAR083270411,00Stck325925 WAHRFALSCH
3540XXA4-SAR083270411,00Stck325932 FALSCHWAHR
3640XXA4-SAR083270411,00Stck325933 WAHRFALSCH
3740XXA4-SAR083259251,00Stck327041 FALSCHWAHR
3840XXA4-SAR083259251,00Stck325932   

Formeln der Tabelle
ZelleFormel
L34=ISTZAHL(C9)
M34=ISTTEXT(C9)
L35=ISTZAHL(F9)
M35=ISTTEXT(F9)
L36=ISTZAHL(C35)
M36=ISTTEXT(C35)
L37=ISTZAHL(C37)
M37=ISTTEXT(C37)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gut zu unterscheiden sind Texte und Zahlen auch, wenn du alle Zellen auf Format "Standard" stellst
und die horizontale Ausrichtung Ausrichtung weder auf links- noch auf rechtsbündig, sondern auf Standard stellst.
Abschlussfrage dazu: Sollen die Werte in Sp. C (Stückliste) und F (Bezug) Texte oder Zahlen sein (bitte einheitlich!)
In deinem Beispiel hängt die Benennung ("Keil 1") einzig und allein vom Material (Spalte B) ab.
Ist das in deinen Daten generell so?
Sind in deinen Daten die Werte in den Spalten D, E, H und J so konstant wie in der Beispielmappe?
Dann brauchen diese Spalten von einer Lösung überhaupt nicht verarbeitet zu werden, sind dafür irrelevant.
Wie genau ist dein Beispielergebnis aufzufassen? Da sind einige Ungereimtheiten drin:
In F35, C41:C43 steht 325932, oben in F5 steht 325926.
Für "SARB7829" in B19:B20 gibt es drei Nummern: 327196, 325949, 325950.
Dann sollte es wohl 6 statt 2 Ausgabezeilen geben.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Stücklistenpflege
24.06.2012 21:47:48
fcs
Hallo Peter,
hier eine Datei mit Makros die den Import der Daten steuern.
Du kannst im angezeigten Dateidialog ein oder mehrere Quelldateien auswählen. Die Daten aller gewählten Dateien werden in ein Blatt importiert.
https://www.herber.de/bbs/user/80712.xlsm
Die Daten in den Quelltabellen sollten wie in Quelle-Beispiel aussehen. Wenn die Spaltentitel nicht in der 1. Zeile stehen, dann muss du diesen Wert in den Makros anpassen (Konstante "Zeile_QT").
Der von Erwin angesprochene Mischmasch von Zahlen/Zahlen als Texte ist mir auch aufgefallen, stört aber zumindest mein Makro nicht. Ich hab im Code Zeilen eingefügt, die die Text-Zahlen in Spalte F in "echte" Zahlen umwandeln.
Gruß
Franz
Anzeige
Stücklistenkombinationen
25.06.2012 16:13:48
Erich
Hi Peter,
hier noch eine VBA-Lösung: Option Explicit Public Sub Kombis_Dic() Dim wsQ As Worksheet, arQ, oDic As Object, oDiT As Object, oDiB As Object Dim strMat As String, strBen As String, zz As Long, lngAnz As Long Dim arK, arT, arB, arS, arE(), ii As Long, jj As Long, kk As Long Set wsQ = ActiveWorkbook.Worksheets("Beispiel") ' Tabellenblatt festlegen arQ = wsQ.Range("B4:G21") ' zz = Cells(Rows.Count, 2).End(xlUp).Row ' nicht im Beispiel wegen der ' arQ = wsQ.Range(Cells(4, 2), wsQ.Cells(tt, 7)) ' Daten unterhalb der Tabelle ' Sammeln der Benennung und Bezüge pro Material Set oDic = CreateObject("Scripting.dictionary") Set oDiT = CreateObject("Scripting.dictionary") Set oDiB = CreateObject("Scripting.dictionary") strMat = arQ(1, 1) strBen = arQ(1, 6) For zz = 1 To UBound(arQ) If strMat arQ(zz, 1) Then lngAnz = lngAnz + oDiT.Count * (oDiT.Count - 1) oDic(strMat) = oDiT.keys oDiB(strMat) = strBen oDiT.RemoveAll strMat = arQ(zz, 1) strBen = arQ(zz, 6) End If oDiT(1 * arQ(zz, 2)) = arQ(zz, 6) oDiT(1 * arQ(zz, 5)) = arQ(zz, 6) Next zz oDic(strMat) = oDiT.keys lngAnz = lngAnz + oDiT.Count * (oDiT.Count - 1) oDiB(strMat) = strBen arK = oDic.keys ' Ausgabe der Kombinationen in Array arT = oDic.items arB = oDiB.items ReDim arE(1 To lngAnz, 1 To 9) For zz = 0 To UBound(arK) For ii = 0 To UBound(arT(zz)) For jj = 0 To UBound(arT(zz)) If jj ii Then kk = kk + 1 arE(kk, 1) = arK(zz) arE(kk, 2) = arT(zz)(ii) arE(kk, 3) = 1 arE(kk, 4) = "Stck" arE(kk, 5) = arT(zz)(jj) arE(kk, 6) = arB(zz) arE(kk, 7) = 1 arE(kk, 9) = 0.5 End If Next jj Next ii Next zz Worksheets.Add Before:=Sheets(1) ' Ausgabe in neues Tabellenblatt Cells(1, 2).Resize(, 9) = wsQ.Cells(3, 2).Resize(, 9).Value Cells(2, 2).Resize(lngAnz, 9) = arE End Sub Und die BeiSpielMappe: https://www.herber.de/bbs/user/80721.xlsm
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige