Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1860to1864
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

Formel in Algorithmus per VBA schreiben

Formel in Algorithmus per VBA schreiben
29.12.2021 19:56:42
Robert
Hallo liebe Exelgemeinde!
Ich habe wieder mal ein Problem, bei welchen ich Eure Hilfe bräuchte.
Ich möchte die Formel =D2*G2/1000000 jetzt bis =D24*G24/1000000D24* zwei Zeilen nichts und dann =D27*G27/1000000 bis =D48*G48/1000000 dann wieder zwei Zeilen Frei und dann immer in 22 Schritten und dann zwei Frei usw. Wie kann man das per Makro schreiben? bis zur Zeile 1296 in den entsprechenden Algorithmus. Da es mir immer schwer fällt das Problem hundert Prozent bildlich darzustellen, habe ich eine Berispieldatei angehängt.
Meine Versuche sind leider gescheitert.
Für Eure Hilfe wäre ich sehr dankbar.
https://www.herber.de/bbs/user/150065.xlsx
LG Robert

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel in Algorithmus per VBA schreiben
29.12.2021 20:56:27
onur

Dim z
For z = 2 To 1296
Cells(z, 10) = ""
If (z - 1) Mod 24 > 1 Then
Cells(z, 9).FormulaR1C1Local = "=ZS4 * ZS7 / 1000000"
End If
Next z

AW: Formel in Algorithmus per VBA schreiben
29.12.2021 21:05:26
Yal
Hallo Robert,
Neben wir an, deine Formel kommt in die Spalte H rein. Bin gerade nicht am Rechner und kann weder deine Datei sehen noch testen.

For i = 2 To 1296
If ((i + 1) Mod 24) > 2 Then
Cells(i, "H").FormulaR1C1 = "=RC4 * RC7 / 1000000"
End If
Next
Es könnte sein, dass es >= 2 sein muss.
VG
Yal
AW: Formel in Algorithmus per VBA schreiben
29.12.2021 21:07:59
GerdL
Hallo Robert,
deine erste Serie geht über 23 Zellen, die weiteren Serien über 22 Zellen.

Sub Unit()
Dim X As Integer
Cells(2, 9).Resize(23).FormulaR1C1 = "=RC4*RC7/10^5"
For X = 25 To 1296 Step 24
Cells(X + 2, 9).Resize(22).FormulaR1C1 = "=RC4*RC7/10^5"
Next
'2-24!
'27-48
'51-72
End Sub
Gruß Gerd
Anzeige
Der Punkt geht an...
30.12.2021 13:49:04
Yal
... Gerd!
Schöner, leichter, nachvollziehbarer und allgemeiner als meine Lösung (oder Onurs, da sehr ähnlich).
Einzige mögliche Ergänzung (ich möchte das Wort Verbesserung nicht verwenden, da es keine ist):
Ich hätte die Start-Ausnahme auf die Zeile 2 beschränkt und die Schleife ab Zeile 3 gestartet.
(Da stellt sich die Frage, warum das erste Block 23 Zeile hat und die anderen 22...)
VG
Yal
AW: Der Punkt geht an...
30.12.2021 17:15:00
Robert
Hallo Ihr lieben Helferlein!
Ich möchte mich ganz herzlich bei Onur, Yal und Gerd bedanken. Ihr habt mir wie immer sehr geholfen. Hätte mal noch eine Frage, wie kann ich die Zellen wo die Formel reinkommt so Formatieren das es t für Tonne anzeigt und zwei Stellen hinter dem Komma anzeigt. Was ich probiert habe bis jetzt formatiert mir die Gesamte Spalte.
Danke im voraus und einen guten Rutsch Euch allen. Hier mal der Code an dem mich versucht habe.

Sub ZeileF_Fortschreiben()
Dim i As Long
Columns("F").NumberFormat = "General"
For i = 25 To Cells(Rows.Count, "A").End(xlUp).Row Step 24
Cells(i, "F").Formula = "=SUM(R[-23]C[3]:R[-1]C[3])"
Next i
Ich danke im voraus.
LG Robert
Anzeige
AW: Der Punkt geht an...
30.12.2021 18:03:54
GerdL
Hallo Robert!
Cells(i, "F").NumberFormat = "#,##0.00 t"
Gruß Gerd
AW: Der Punkt geht an...
30.12.2021 19:11:18
Robert
Hallo Gerd!
Ich danke Dir.
LG Robert
AW: Formel in Algorithmus per VBA schreiben
30.12.2021 23:24:37
Daniel
Hi
ich finde es jetzt seltsam, dass der erste Block 23 Zeilen mit Formeln umfasst und die folgenden dann nur noch 22. Ist das wirklich so oder hast du dich verzählt?
Wenn alle Blöcke die gleiche Anzahl Zeilen hätten, wirds etwas einfacher.
aber hier mal für deinen Fall

Range("I2").Resize(23).FormulaR1C1 = "=RC4*RC7/10^6"
Range("I3").Resize(24).Copy Range("I3").Resize(24*54)
für sinnvoller würde ich es aber fnden, die Formel durchgängig in alle Zellen zu schreiben und die Lücke per Formel zu erzeugen, hierfür wäre allerdings eine durchgängig gleiche Blockgröße erforderlich.
Dann würde das als Einzeiler laufen:

Range("I2:I1296").FormulaR1C1 = "=IF(Mod(Row()-2,24)>21,"";RC4-RC7/10^6)
Gruß Daniel
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige