Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Formel mittels VBA in Zellen
#1
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
Antworten Top
#2
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.
Gruß Jonas
Antworten Top
#3
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
Antworten Top
#4
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.
Antworten Top
#5
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
Gruß Jonas
Antworten Top
#6
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)
Antworten Top
#7
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?  Huh

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)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste