Registriert seit: 21.11.2014
Version(en): 2013
Hallo ich bitte um Eure Hilfe
In Spalte F2 bis "F ende muß ermittelt werden" stehen Zahlen von 1 bis 12, nun müsste in der Spalte H2 bis ende folgende Formeln stehen.
Wenn in F2:F 1 dann =Monate!$A$3
Wenn in F2:F 2 dann =Monate!$E$3
Wenn in F2:F 3 dann =Monate!$I$3 Und so weiter bis 12
Ich suche eine Möglichkeit dies mit VBA zu realisieren.
Bitte um Antwort
Vielen Dank schon mal im voraus
Registriert seit: 04.04.2017
Version(en): 2013
Hallo,
zu deine aktuellen Frage: Schaue dir mal .FormulaR1C1 i.V.m. .AutoFill an.
Besser wäre es allerdings, wenn Du mal dein konkretes Anliegen erklärst. Ich denke, dass es da bessere Ansätze gibt.
Registriert seit: 21.11.2014
Version(en): 2013
Vielen Dank für Deine schnelle Antwort
Ich habe das Problem, wenn auch nicht schön, wie unten dargestellt gelöst.
Dim mZeile As Long
Range("H1").Value = "Prod.Tage"
For mZeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Range("F" & mZeile).Value = 1 Then Range("H" & mZeile).Value = "=Monate!A3"
If Range("F" & mZeile).Value = 2 Then Range("H" & mZeile).Value = "=Monate!E3"
If Range("F" & mZeile).Value = 3 Then Range("H" & mZeile).Value = "=Monate!I3"
If Range("F" & mZeile).Value = 4 Then Range("H" & mZeile).Value = "=Monate!M3"
If Range("F" & mZeile).Value = 5 Then Range("H" & mZeile).Value = "=Monate!Q3"
If Range("F" & mZeile).Value = 6 Then Range("H" & mZeile).Value = "=Monate!U3"
If Range("F" & mZeile).Value = 7 Then Range("H" & mZeile).Value = "=Monate!Y3"
If Range("F" & mZeile).Value = 8 Then Range("H" & mZeile).Value = "=Monate!AC3"
If Range("F" & mZeile).Value = 9 Then Range("H" & mZeile).Value = "=Monate!AG3"
If Range("F" & mZeile).Value = 10 Then Range("H" & mZeile).Value = "=Monate!AK3"
If Range("F" & mZeile).Value = 11 Then Range("H" & mZeile).Value = "=Monate!AO3"
If Range("F" & mZeile).Value = 12 Then Range("H" & mZeile).Value = "=Monate!AS3"
Next mZeile
MfG Peter
Registriert seit: 13.04.2014
Version(en): 365
Hi,
das geht auch einfacher:
Code:
Range("H1") = "Prod.Tage"
For mZeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Range("H" & mZeile) = sheets("Monate").cells((cells(mzeile,6)-1)*4+1,3)
next
ungetestet!
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 04.04.2017
Version(en): 2013
Alternativ, falls die Abstände mal nicht gleichbleibend, bzw. berechnebar sind (ungetestet):
Code:
For mZeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
With Range("H" & mZeile)
.Value = "=Monate!" & Choose(.Value , "A3", "E3", "I3", "M3", "Q3", "U3", "Y3", "AC3", "AG3", "AK3", "AO3", "AS3")
End With
Next mZeile
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
18.04.2017, 12:22
(Dieser Beitrag wurde zuletzt bearbeitet: 18.04.2017, 12:23 von RPP63.)
Moin!
Edit:
@Jonas: Hab Deine Antwort erst jetzt gelesen.
Und noch einfacher :19: (ohne Schleife):
Sub RPP()
With Tabelle1
With .Range("H1:H" & .Cells(.Rows.Count, 6).End(xlUp).Row)
.FormulaR1C1 = "=INDEX(Monate!R3,,Tabelle1!RC[-2]*4-3)"
.Value = .Value
End With
End With
End Sub
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
Am Rande, Peter:
Code:
Range("H1").Value = "Prod.Tage"
For mZeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Range("F" & mZeile).Value = 1 Then Range("H" & mZeile).Value = "=Monate!A3"
Erst schreibst Du Prod.Tage in H1, um es gleich wieder zu überschreiben?
Fragt sich Ralf
P.S.:
Wenn Header gewünscht, dann so:
Sub RPP()
With Tabelle1
.Range("H1") = "Prod.Tage"
With .Range("H2:H" & .Cells(.Rows.Count, "F").End(xlUp).Row)
.FormulaR1C1 = "=INDEX(Monate!R3,,Tabelle1!RC[-2]*4-3)"
.Value = .Value
End With
End With
End Sub
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)