Hallo Martina,
vielen Dank, es hat wunderbar funktioniert.
sehr schön.
Könnte man jetzt
noch die Passage: „Range(„I2“).FormulaR1C1“ durch eine
Variable ersetzten und in eine If Schleife einbetten? Ich habe
es schon mal versucht aber leider nicht hinbekommen. Dann
würde die Formel nicht in der Tabelle stehen.
In einem (großen) Zellbereich alle Zellen/zeilen einzeln mit einer Vba-Schleife abzuklappern ist sehr beträchtlich langsamer als Excelformeln zu benutzen.
Wenn es nur darum geht die Formeln „danach“ wieder zu entfernen, füge die fettgedruckte Codezeile ein.
Sub tt()
Dim Zei As Long
Zei = Cells(Rows.Count, 9).End(xlUp).Row
Range(„I2“).FormulaR1C1 = _
„=IF(ISERROR(GETPIVOTDATA(“„Lagerbestände“",‚Übersicht Lagerbestand‘!R[1]C[-8],"„Material“",TEXT(RC[-5],""#""))),0,GETPIVOTDATA("„Lagerbestände“",‚Übersicht Lagerbestand‘!R[1]C[-8],"„Material“",TEXT(RC[-5],""#"")))"
Range(„I2“).AutoFill Destination:=Range(„I2:I“ & Zei)
Range(„I2:I“ & Zei).value=Range(„I2:I“ & Zei).value
Range(„A2“).Select
End Sub
Nochmal grundsätzlich zum Code, vielleicht habe ich da einen Planungsfehler drinnen.
Nach der Codezeile
Zei = Cells(Rows.Count, 9 ).End(xlUp).Row
hat man in der Variablen Zei die Zeilennummer der untersten gefüllten Zelle in der 9-ten Spalte, also I.
Trage anstatt der „9“ ggfs. eine andere Zahl ein, 1=Spalte A, 2=Spalte B usw.
Aufgrund von „Zei“ weiß Vba bis zu welcher untersten Zeilennummer es da Berechnungen durchführen soll.
Und in der I-Spalte soll dann natürlich in den Zellen unterhalb von Zeilennummer „zei“ nichts stehen.
Das kann man so lösen:
Sub tt()
Dim Zei As Long
columns(9).clearcontents
Range(„I1“).value="Überschrift"
Zei = Cells(Rows.Count, 9).End(xlUp).Row
Range(„I2“).FormulaR1C1 = _
„=IF(ISERROR(GETPIVOTDATA(“„Lagerbestände“",‚Übersicht Lagerbestand‘!R[1]C[-8],"„Material“",TEXT(RC[-5],""#""))),0,GETPIVOTDATA("„Lagerbestände“",‚Übersicht Lagerbestand‘!R[1]C[-8],"„Material“",TEXT(RC[-5],""#"")))"
Range(„I2“).AutoFill Destination:=Range(„I2:I“ & Zei)
Range(„I2:I“ & Zei).value=Range(„I2:I“ & Zei).value
Range(„A2“).Select
End Sub
Gruß
Reinhard