Stauplan_Anzahl_1.xlsm (Größe: 1,33 MB / Downloads: 9)
ich habe folgendes Problem was ich wahrscheinlich nicht ohne VBA lösen kann und schon gar nicht ohne eure Hilfe.
In Schritt eins kopiere ich aus meinem Warenausgang in SAP Materialnummern und füge sie in Excel AG10:AG39 ein. Dann kopiere ich im zweiten Schritt die geforderte Menge und füge sie in BA10:BA39 ein. In BB10:BB39 wird dann die Anzahl der Einheiten ermittelt. Das klappt bis hier hin.
Mein Wunsch wäre jetzt das in der Spalte AG, in der meine kopierte Materialnummer steht, dies um das Vielfache aus meiner Spalte BB, erweitert wird.
Also wenn z. B. in BB10 eine 2 steht, dann soll in der Spalte AG die Materialnummer, die in AG10 steht, zweimal vorkommen. Steht dort eine 3, dann dreimal, steht dort eine 1 dann nur einmal. Ich hoffe, ich konnte mich verständlich ausdrücken.
Gruß Dietmar
Damit das Mögliche entsteht, muß immer wieder das Unmögliche versucht werden.
Sub test() 'Variablendeklarationen Dim iCnt1%, iCnt2%, iCnt3% 'Startzeile festlegen iCnt1 = 1 'Schleife solange was in Spalte 1 steht Do While Cells(iCnt1, 1) <> "" 'Schleife zum Eintrag der Werte in Spalte 3 For iCnt2 = 1 To Cells(iCnt1, 2).Value 'Zielzeilenzaehler hochsetzen iCnt3 = iCnt3 + 1 'Eintrag aus Spalte 1 uebernehmen Cells(iCnt3, 3).Value = Cells(iCnt1, 1).Value 'Ende Schleife zum Eintrag der Werte in Spalte 3 Next 'Loop-Zaehler für Spalte 1 hochsetzen iCnt1 = iCnt1 + 1 'Ende Schleife solange was in Spalte 1 steht Loop End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
12.02.2023, 09:01 (Dieser Beitrag wurde zuletzt bearbeitet: 12.02.2023, 09:03 von schauan.)
Hallöchen,
also, auch wenn das nicht die schönste Programmierung ist, könnte man die Spaltenzahlen in meinem Code einfach durch die Spaltenbezeichnungen ersetzen. Variabel müssen die Spalten ja nicht sein - was einer der Vorteile der Zahlenangabe bei Cells ist.
Ok, dann muss zusätzlich noch der Startwert für iCnt3 festgelegt werden - im ursprünglichen Beispielcode wäre es nur 9, weil die Erhöhung um 1 schon vor dem Zelleintrag steht
Oder man verschiebt die Erhöhung auf nach dem Zelleintrag - wie ich es nun hier gemacht habe. Ist sicher einfacher nachvollziehbar.
Code:
Sub test() 'Variablendeklarationen Dim iCnt1%, iCnt2%, iCnt3% 'Startzeile festlegen iCnt1 = 10: iCnt3 = 10 'Schleife solange was in Spalte 1 steht Do While Cells(iCnt1, "BA") <> "" 'Schleife zum Eintrag der Werte in Spalte 3 For iCnt2 = 1 To Cells(iCnt1, "BB").Value 'Eintrag aus Spalte 1 uebernehmen Cells(iCnt3, "BC").Value = Cells(iCnt1, "BA").Value 'Zielzeilenzaehler hochsetzen iCnt3 = iCnt3 + 1 'Ende Schleife zum Eintrag der Werte in Spalte 3 Next 'Loop-Zaehler für Spalte 1 hochsetzen iCnt1 = iCnt1 + 1 'Ende Schleife solange was in Spalte 1 steht Loop End Sub
Allerdings, da z.B. Deine 45 zwei mal in Spalte BA steht, wird sie auch zweimal verarbeitet.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
dein Code funktioniert ich musste nur einen Bezug ändern, damit sich die Materialnummer vervielfältigt an statt die Blattzahl.
Um nun die richtige Anzahl der Materialnummern durch deinen Code die nach BC geschrieben werden nach AG zu bekommen, habe ich mir noch selbst ein Makro geschrieben was bestimmt stümperhaft ist, aber es funktioniert.
Deinen Code, so zu ändern habe ich nicht hinbekommen.
Code:
Private Sub CommandButton3_Click()
'Variablendeklarationen Dim iCnt1%, iCnt2%, iCnt3% 'Startzeile festlegen iCnt1 = 10: iCnt3 = 10 'Schleife solange was in Spalte 1 steht Do While Cells(iCnt1, "AG") <> "" ' auf AG geaendert 'Schleife zum Eintrag der Werte in Spalte 3 For iCnt2 = 1 To Cells(iCnt1, "BB").Value 'Eintrag aus Spalte 1 uebernehmen Cells(iCnt3, "BC").Value = Cells(iCnt1, "AG").Value ' auf AG geaendert 'Zielzeilenzaehler hochsetzen iCnt3 = iCnt3 + 1 'Ende Schleife zum Eintrag der Werte in Spalte 3 Next 'Loop-Zaehler für Spalte 1 hochsetzen iCnt1 = iCnt1 + 1 'Ende Schleife solange was in Spalte 1 steht Loop