Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1688to1692
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

Multiplizieren VBA

Multiplizieren VBA
29.04.2019 10:09:53
Kollerstar
Hallo zusammen,
ich habe mal eine Frage...
Ich habe eine feste Spalte ("B4:?")... Diese soll mit anderen Spalten multipliziert werden aber nur bis zum letzten gefüllten Zelle... Die anderen Spalten sind dann C D ...
Also einfach erstmal Alle Werte aus Spalte B mit allen Werten auf gleich höher C
Dann Spalte B mit allen aus Spalte D usw. bis die nächste leere Spalte kommt...
Für eine Spalte habe ich das leider kriege ich aber auch die Abbruchbedinung nicht mit rein... kann mir da jemand helfen?
Sub Multi()
Dim lz, ly As Variant
Dim i As Long
lz = Sheets("Tabelle1").Range("B4:B150")
ly = Sheets("Tabelle2").Range("D4:D150")
For i = LBound(lz) To UBound(lz)
lz(i, 1) = lz(i, 1) * ly(i, 1)
Next i
Sheets("Tabellen").Range("E4:E150") = lz
End Sub
Danke!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Multiplizieren VBA
29.04.2019 10:43:32
Werner
Hallo,
hier mal dein Code bis zur letzten belegten Zeile in Spalte B:
Sub Multi()
Dim lz As Variant, ly As Variant
Dim i As Long, loLetzte As Long
With Worksheets("Tabelle1")
loLetzte = .Cells(.Rows.Count, "B").End(xlUp).Row
lz = .Range("B4:B" & loLetzte).Value
With Worksheets("Tabelle2")
ly = .Range("D4:D" & loLetzte).Value
End With
End With
For i = LBound(lz) To UBound(lz)
lz(i, 1) = lz(i, 1) * ly(i, 1)
Next i
Sheets("Tabellen").Range("E4:E" & loLetzte) = lz
End Sub
Was dann noch mit was multipliziert werden soll und wo ausgegeben, habe ich ehrlich gesagt nicht verstanden.
Gruß Werner
Anzeige
AW: Multiplizieren VBA
29.04.2019 11:12:07
Kollerstar
Hi Werner!
Vielen Dank zunächst... das klappt soweit aufjedenfall. Ich muss mich leider für mein schlechtes Deutsch oben entschuldigen... Keine Ahnung was da passiert ist...
Eigentlich sieht das ganze so aus: In der Spalte B4:B stehen Werte in den Spalten rechts davon stehen auf gleicher Höhe auch Werte... Also C4:C, D4:D, E4:E, usw.. Bis wohin die Spalten nach rechts genau befüllt sind ist nicht immer gleich dadurch bräuchte ich da eine Abfrage.
Gerechnet soll dann werden:
Spalte B * Spalte C (jeweiligen Werte auf gleicher Höhe), die Ausgabe soll idealerweise dann in die nächste freie Spalte auf gleicher Höhe erfolgen....
Anzeige
lad doch einfach ...
29.04.2019 11:15:46
UweD
eine Musterdatei hoch, in der du die Istsituation und dein Wunschergabnis (händisch eingetragen) darstellst.
LG UweD
AW: lad doch einfach ...
29.04.2019 11:27:58
Kollerstar
Stimmt hast recht!
https://www.herber.de/bbs/user/129467.xlsx
Grün ist die fixe Spalte die sich nur in der Länge verändern kann... Gelb ist Optional wodurch sich auch die Ergebnisfelder verschieben würden...
AW: lad doch einfach ...
29.04.2019 11:56:56
UweD
Hallo
ohne Schleife...
Sub Multi()
    Dim TB, Spalten As Integer
    Dim Sp As Integer, ZE As Integer, LR As Long, LC As Integer
    
    Set TB = Sheets("Tabelle1")
    Sp = 2 ' ab Spalte B 
    ZE = 3 'Ab Zeile... 
    
    LR = TB.Cells(TB.Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte B 
    LC = TB.Cells.SpecialCells(xlCellTypeLastCell).Column 'Letzte Spalte des gesamten Blattes 

    Spalten = LC - Sp
    TB.Cells(ZE, LC + 1).Resize(LR - ZE + 1, Spalten).FormulaR1C1 = "=RC2*RC[-" & Spalten & "]"
End Sub

LG UweD
Anzeige
AW: lad doch einfach ...
29.04.2019 13:05:27
Kollerstar
Vielen Dank! Das hat wunderbar funktioniert!!!
Eine Frage hätte ich doch noch.... wie müsste ich den Code erweitern, wenn ich jetzt von den berechneten Spalten die jeweilige Summe gebildet haben will. Das muss ja auch flexibel sein, weil sich ja die Anzahl immer ändern kann. Die Summe soll dann einfach untendrunter hinzugefügt werden
AW: lad doch einfach ...
29.04.2019 13:20:49
UweD
Hi
Sub Multi()
    Dim TB, Spalten As Integer
    Dim Sp As Integer, ZE As Integer, LR As Long, LC As Integer
    
    Set TB = Sheets("Tabelle1")
    Sp = 2 ' ab Spalte B 
    ZE = 3 'Ab Zeile... 
    
    LR = TB.Cells(TB.Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte B 
    LC = TB.Cells.SpecialCells(xlCellTypeLastCell).Column 'Letzte Spalte des gesamten Blattes 

    Spalten = LC - Sp
    TB.Cells(ZE, LC + 1).Resize(LR - ZE + 1, Spalten).FormulaR1C1 = "=RC2*RC[-" & Spalten & "]"
    
    TB.Cells(LR + 1, LC + 1).Resize(1, Spalten).FormulaR1C1 = "=SUM(R" & ZE & "C:R[-1]C)"
    
End Sub

LG UweD
Anzeige
AW: lad doch einfach ...
29.04.2019 14:30:33
Kollerstar
Danke! Auch das klappt!
Prima! Danke für die Rückmeldung. owT
29.04.2019 14:34:28
UweD

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige