Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Spalte finden anhand Überschrift
#1
Hallo,

zwei Dateien mit Stücklisten-Tabelle mit 11 - 13 Spalten sollen miteinander verglichen werden.

Tabelle1
ABCDEFGHIJK
1Stückliste
2Projekt 
3Version  
4Bearbeiter 
5Stand   
6Item #CommentDesignatorValueVoltageToleranceQuantityLeistungFootprintManufacturerManufacturer Part Number
71CapacitorC107, C108470pF2Keramik RM75_d8MurataDEBB33D471KA2B
82CapacitorC200, C201, C204, C2052,2µF4C_RM27.5H24.5B14.0L31.5EPCOSB32924C3225M
93CapacitorC202, C2031,5µF2C_RM27.5H21.0B11.0L31.5EPCOSB32924C3155M
104CapacitorC206, C207, C208, C20947nF300V20%4C_RM15.0H14.0B8.5L18.0EPCOSB32022A3473M
115CapacitorC349, C350, C351, C3521nF4Keramik RM5_d8MurataDEBB33D102KA2B
126CapacitorC3534,7nF1Keramik RM10_d16VishayVY1472M63Y5UQ63V0
137CapacitorC400, C405, C409, C4161,5µF4C_RM27.5H28.0B18.0L31.0EPCOSB32654A6155+000
148CapacitorC401, C402, C407, C408, C414, C4151,5nF6C_RM22.5H15.0B6.0L26.5WimaFKP1U011505B00
159CapacitorC500, C501, C507100nF3C_RM27.5H24.0B13.0L31.5WimaFKP1J031006D00
1610CapacitorC502, C50422nF2C_RM27.5H26.0B15.0L31.5WimaFKP1U022206F00
1711CapacitorC503, C50515nF2C_RM27.5H24.0B13.0L31.5WimaFKP1U021506D00
1812Capacitor pol.C700, C701100µF2C Panasonic HD Series  V Type  G SizePanasonicEEEHD1V101AP
1913Capacitor SMDC100, C101, C102, C10310pF50V10%4C_sm_0603

verwendete Formeln
Zelle Formel Bereich N/A
A7:A19=ZEILE(A7) - ZEILE($A$6)
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 19.08 einschl. 64 Bit


In dieser Tabelle stehen in Spalte G (7) Zahlen ("Quantity" für die Anzahl an Bauteilen) drin. Mit unterem Makro von Kuwer werden die einzelnen Zeilen überprüft auf die Zahl in Spalte G (7) und dann mit Aufsplittung des Designators entsprechend oft untereinander kopiert.

Sub WerteTrennen(oWsQ As Worksheet, oWsZ As Worksheet, rngZ As Range)  'MitFeldvariablen_Uwe() 
  Dim lngSpalte As Long, lngZeileQ As Long, lngZeileZ As Long
  Dim lngBauteile As Long, lngLetzteZeile As Long
  Dim varBauteile As Variant, varQ As Variant, varV As Variant, varZ As Variant
  Const strV As String = " | "
 
  With oWsQ
     'letzte belegte Zeile in Spalte A (1)
     lngLetzteZeile = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
     
     'Quelltabelle in Variable einlesen
     varQ = .Range("A7:K" & lngLetzteZeile).Value
  End With
 
  'Schleife für Bauteilesummierung
  For lngZeileQ = 1 To Ubound(varQ)
     If Not IsNumeric(varQ(lngZeileQ, 7)) Or varQ(lngZeileQ, 7) = "" Then
        lngBauteile = lngBauteile + 1
     Else
        lngBauteile = lngBauteile + varQ(lngZeileQ, 7)
        varQ(lngZeileQ, 7) = 1
     End If
  Next lngZeileQ
 
  'Variablen für die Rückgabe entsprechend der Bauteileanzahl dimensionieren
  Redim varV(1 To lngBauteile, 1 To 2)
  Redim varZ(1 To lngBauteile, 1 To Ubound(varQ, 2))
 
  'Schleife für das Umschaufeln der Daten
  For lngZeileQ = 1 To Ubound(varQ)
     varBauteile = Split(varQ(lngZeileQ, 3), ",")
     If Ubound(varBauteile) = -1 Then Redim varBauteile(0 To 0)  '<<<< diese Zeile kommt neu hinzu (Uwe)
     For lngBauteile = 0 To Ubound(varBauteile)
        lngZeileZ = lngZeileZ + 1
        varZ(lngZeileZ, 1) = lngZeileZ
        varZ(lngZeileZ, 2) = varQ(lngZeileQ, 2)
        varZ(lngZeileZ, 3) = Trim(varBauteile(lngBauteile))
        varV(lngZeileZ, 1) = lngZeileZ
        varV(lngZeileZ, 2) = varZ(lngZeileZ, 3)
        For lngSpalte = 4 To Ubound(varZ, 2)
           varZ(lngZeileZ, lngSpalte) = varQ(lngZeileQ, lngSpalte)
           varV(lngZeileZ, 2) = varV(lngZeileZ, 2) & strV & varZ(lngZeileZ, lngSpalte)
        Next lngSpalte
     Next lngBauteile
  Next lngZeileQ
 
  'Zurückschreiben der Zielvariable in Zieltabelle
  oWsQ.Range("B2:C5").Copy oWsZ.Range("B2")
 
  With oWsZ.Cells(7, 1).Resize(Ubound(varZ, 1), Ubound(varZ, 2))
     .Value = varZ
     .EntireColumn.AutoFit
  End With
  rngZ.Resize(Ubound(varV, 1), Ubound(varV, 2)).Value = varV
  rngZ.Resize(Ubound(varV, 1) - 1, 1).Offset(1, 2).Formula = rngZ.Offset(0, 2).Formula
End Sub

Momentan gibt es diese drei Möglichkeiten für Stücklisten:
  1. 2 Listen mit Quantity in Spalte G
  2. 1 Liste mit Quantity in Spalte G und eine in H
  3. 2 Listen mit Quantity in Spalte H

Das Makro arbeitet nur im Fall 1 ohne Fehler. Wie kann ich es verallgemeinern?
Wie kann ich prüfen, in welcher Spalte das "Quantity" steht und diese Spalte dann anstelle der Spalte 7 verwenden?
Antworten Top
#2
Hallo Ralf,

nach diesem Prinzip z.B:

Code:
Dim x
x = Application.Match("Quantity", Rows(6), 0)

Und im Code alle 7 durch "x" ersetzen.
Gruß Atilla
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste