Clever-Excel-Forum

Normale Version: Materialnummer um einen angegebenen Wert vervielfältigen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,
[attachment=46987]
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.
Hallöchen,

im Prinzip könnte das helfen:
Code:
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
Hallo Andre,

danke für deinen Code. 

Kannst du mir den helfen den auf meinen Bereich anzupassen?
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.
Hallo Andre,

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

'stümperhaft von mir erweitert

Range("BC10:BC38").Select
    Selection.Copy
    Range("AG10").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("AJ10:AJ38").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("BA10").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   
     Application.CutCopyMode = False
    Range("Af10").Select



End Sub