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

Formeln über Makro einfügen

Formeln über Makro einfügen
10.11.2021 09:48:02
Sebastian
Hi zusammen,
ich würde gerne per Makro Formeln in Zellen einfügen.
Ich hab das n Ansatz aber der funktioniert nicht wirklich so wie ich ihn brauche :)
Ich bräuchte ein Makro, welches ab Zeile 19 bis zur letzten gefüllten Zeile in G die Formel
=RUNDEN(G19;3)
in die passende Zelle in Spalte K einfügt. Allerdings so das er nach unten die Zellen-Nummern anpasst :)
Danke schon mal im Voraus :)

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formeln über Makro einfügen
10.11.2021 09:51:54
Daniel
Hi
im Prinzip so:
Range("K19:K" & Cells(Rows.Count, 7).End(xlup).Row).FormulaR1C1 = ...
wie die Formel dann aussieht, kannst du ja mit Hilfe des Recorders rausfinden.
was wäre denn dein Ansatz gewesen?
Gruß Daniel
AW: Formeln über Makro einfügen
10.11.2021 09:55:02
Sebastian
Ich muss ganz ehrlich sagen das mein Know-How über Markos, ganz mies ist :D Also mein Ansatz war halt auch nur zusammengesammeltes wissen ausm Netz, aber das konnte ich nicht anpassen. Würde denn das ganze Makro aussehen ? Wichtig wäre das er es nur bis zu letzten gefüllten Zeile in G läuft.
Dann musst Du erfahren, was Makro Rekorder ist
10.11.2021 10:00:27
Yal
Hallo Sebastian,
was noch nicht ist, kann noch werden.
Du musst zuerst in deinem Excel den Reiter Entwicklungstool sichtbar machen: Rechtsklick im Menü, "Menüband anpassen.." und im rechten Spalte "Entwicklertools" anhacken.
Dann hast Du im Menü "Entwicklertools" eine Funktion "Makro aufzeichnen". Mit ein Paar elementare Übung starten:
_ Aufzeichnung starten (Makroname wird angezeigt)
_ 3 Zellen hier kopieren
_ da einfügen
_ Aufzeichnung stoppen
_ auf "Visual Basic" anklicken (oder Alt+F11)
_ Makro anhand Name ausfindig machen (sollte nicht das Problem sein)
_ Code anschauen
Da aus wenigen Klicks viel Code erzeugt wird, lieber zuerst nur wenige Schritte machen.
Wichtig ist zu nachvollziehen, wie Excel deine Aktion im Code umgestellt hat.
VG
Yal
Anzeige
AW: Formeln über Makro einfügen
10.11.2021 10:00:46
Klaus

Sub Makro1()
Dim lRow As Long
lRow = Cells(Rows.Count, 7).End(xlUp).Row
Range("K19:K" & lRow).FormulaR1C1 = "=ROUND(RC[-4],3)"
End Sub
LG,
Klaus M.
AW: Formeln über Makro einfügen
10.11.2021 10:09:03
Sebastian
Hey Klaus :) Erst mal vielen Dank :) Das funktioniert bestens :) Allerdings wüsste ich gerne mal wie sich die Formel hier von der Original Formel unterschiedet ? Was sagt mir das RC[-4] ? Da ich noch andere Formeln eintragen wollte bzw dein Makro dann abändern wollte :D
AW: Formeln über Makro einfügen
10.11.2021 10:13:32
Klaus
Hallo Sebastian,
hier ein ganz ganz kurzer Einblick in R1C1 Notation:
RC: Row und Column wie in der Zelle
R3C7: Row 3 und Colum 7, also $G$3
R3C[-1]: Row 3 und Column 1 links von der Zelle. Wenn du es in Z7 schreibst, also Y$3 (Zeile ist fix!)
R[7]C1: Spalte A, aber 7 Zeilen weiter runter
R[7]C: aktuelle Spalte, aber 7 Zeilen weiter runter.
Wenn du R1C1 in Google eingibst, findest du Seitenweise Dokumentation drüber. Ist nur im ersten Moment ungewohnt weil wir vor VBA alle an $A$1, $Z17 usw. gewöhnt waren.
Nachtrag: Das Makro ist natürlich zu lang, das dient der Lesbarkeit. Folgendes würde reichen:

Sub Makro1()
Range("K19:K" & Cells(Rows.Count, 7).End(xlUp).Row).FormulaR1C1 = "=ROUND(RC[-4],3)"
End Sub
LG,
Klaus M.
Anzeige
AW: Formeln über Makro einfügen
10.11.2021 10:22:34
Sebastian
Okay :D Da muss ich mich in der Tat erst mal einlesen :D Hab da ne ganze menge Formeln die ich gerne per Makro eintragen lassen würde.
=WENN(F19="";"";ABS(E19-F19)))
So wie sie sind kann ich sie ja dann nicht benutzen. Müsste ich dann alle umschreiben oder ?
Sorry fürs viele Fragen :D
AW: Formeln über Makro einfügen
10.11.2021 10:28:53
Klaus
Hallo Sebastian,
1) Formel in Excel tippen
2) Makrorekorder an
3) Formelzelle anwählen, F2, Enter
4) Makrorekorder aus
5) in "Modul1" steht die Formel.

Sub Makro1()
' Makro1 Makro
ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""","""",ABS(RC[-2]-RC[-1]))"
Range("G20").Select
End Sub
LG,
Klaus M.
Anzeige
AW: Formeln über Makro einfügen
10.11.2021 10:29:51
Daniel
noch ein paar Ergänzungen zum Thema R1C1 und Formeln in VBA schreiben:
- .FormulaR1C1 ist die Variante, die der Markorecorder aufzeichnet, wenn man die Formel von Hand in die Zelle schreibt
- .FormulaR1C1 ist in der Regel die beste Variante, weil die Relative Zellbezüge auch relativ beschreiben kann. in .Formula gehts nur absolut.
- wenn man mit R1C1 formuliert, ist es hilfreich, alle Zellbezüge, die nicht zwingend relativ sein müssen, absolut zu setzen. " =ROUND(RC7,3)" ist einfacher zu lesen und zu verstehen als "=ROUND(RC[-4],3)" (da muss man immer rechnen, um zu wissen in welche Spalte der Wert geschrieben wird)
- Egal welche Formelschreibweise man in VBA verwenden will (möglich sind ja die vier Varianten: .Formula, .FormulaLocal, .FormulaR1C1, .FormulaR1C1Local):
wenn man die Formel schon funktonierend in der Zelle hat, kann man sich den für VBA erforderlichen Text einfach im Direktfenster anzeigen lassen mit dem Befehl.:
?Selection.FormulaR1C1
- enthält die Formel Anführungszeichen, müssen diese Anführungszeichen, die zur Formel gehören, immer doppelt geschrieben werden. Daran erkennt der Compiler, dass hier nicht der Teiltext zu Ende ist, sondern das Anführungszeichen teil des Textes ist.
in diesem Fall kann man sich dies auch im Direktfenster gleich anzeigen lassen
?Replace(Selection.FormulaR1C1, """", """""")
Gruß Daniel
Anzeige
AW: Formeln über Makro einfügen
10.11.2021 11:30:04
Sebastian
Wenn ich also die Formel
=WENN(H19=MEDIAN(H19;F19;E19);"gut";"schlecht"))
per Makro eintragen möchte muss ich sie umschreiben. Aber so wäre es nicht richtig oder ?
Range("I19:I" & Cells(Rows.Count, 9).End(xlUp).Row).FormulaR1C1 = "IF(RC[-1]=MEDIAN(RC[-1];RC[-3];RC[-4]);"gut";"schlecht"))
AW: Formeln über Makro einfügen
10.11.2021 12:26:47
Sebastian
Okay, vielen Dank das eine sehr Gute Erklärung :)
Habe es jetzt mal so ...

Range("I19:I" & Cells(Rows.Count, 8).End(xlUp).Row).FormulaR1C1 = "=IF(RC8=MEDIAN(RC8;RC6;RC5);""gut"";""schlecht""))"
Ich denke das Ende, also die Formel ist richtig, aber den Anfang verstehe ich nicht richtig.

Range("I19:I" & Cells(Rows.Count, 8).End(xlUp).Row) -> Also vor allem dies: ("I19:I" & Cells(Rows.Count, 8)
Wo liegt der Fehler, damit es besser verstehe ?
Anzeige
AW: Formeln über Makro einfügen
11.11.2021 14:33:39
Daniel
naja, das ist nur der Zellbereich, in den du deine Formeln einträgst.
Range("I19:I1000").FormulaR1C1
meistens ist jedoch die Anzahl der Zeilen in der Tabelle unbekannt und man muss die "1000" ermitteln, dh die Zeilennummer der letzten befüllten Zelle.
Eine möglichkeit dazu ist, man geht in einer Spalte, die Werte hat (z.B. spalte H / 8) in die allerletzte Zeile (Rows.Count ergibt die Anzahl der Zeilen auf dem Tabellenblatt) und springt von dort nach oben zur nächsten Zelle, die einen Wert enthält. Das "End(xlup)" entspricht der Tastenkombination ENDE + PFEIL_HOCH (falls du das mal von Hand ausprobieren willst).
von dieser so ermittelten Zelle lässt du dir die Zeilennummer geben (.Row) und fügst diese in deinen Adressstring ein.
Gruß Daniel
Anzeige
AW: Formeln über Makro einfügen
10.11.2021 10:20:56
Yal
HalloSebastian,
es gibt in Excel 2 Arten von Zellen-Referenzen: die absoute ("A1") und die relative ("Z1S1" oder engl. "R1C1"). Beide beziehen sich auf die Zelle A1.
Bei dem Z1S1 (siehe "Optionen", "Formel", "Bezugsart Z1S1", kannst Du ruhig ein- und ausschalten und sehen, wie es sich auf deine Formel wirkt. Es geht nichts kaputt), wird stet relativ bezogen.
Bei einer Formel, die in einer Spalte über VBA reingebracht werden soll, sich aber auf einer Zelle 4 Spalten links bezieht, und zwar je Zeilen, ist es leichter den relativen Modus zu verwenden.
Man könnte auch
Range("K19:K100").Formula = "=ROUND(K19,3)"
verwenden. Aber es würde nur für die Zeile 19 richtig sein. Alle Formeln in den anderen Zeilen würden sich auch auf K19 beziehen, was unerwünscht ist.
VG
Yal
Anzeige
AW: Das ist auch die Antowrt zu deiner anderen Frage
10.11.2021 10:34:57
Sebastian
Erst mal generell Danke für die Erklärung. Das ergibt schon mal alles Sinn :) Und bei dem FIND Thema, hab ich versucht das auf R1C1 anzupassen. Klappt aber nicht :D Bin ich einfach zu doof für :D
Anzeige
AW: Das ist auch die Antowrt zu deiner anderen Frage
10.11.2021 11:17:38
Yal
Hallo Sebastian,
es hat nicht mit doof zu tun, sondern mit Erfahrung. Wichtig ist nur, dass man mehr positive als negative Erfahrung macht.
Positive Erfahrung macht man mit dem Makro-Rekorder.
Schaue Dir es genauer an. Das ist die Eintrittskarte ins Excel-VBA. So bin ich vor 25 Jahre ins VBA eingestiegen und so mache ich -und viele Helfer hier auch- heute immer noch: wäre doof selber einzutippen, was Excel besser kann als ich.
Viel Erfolg beim gut werden
VG
Yal
AW: Das ist auch die Antowrt zu deiner anderen Frage
10.11.2021 14:15:42
Sebastian
ich habe das jetzt verstanden mit dem Recorder :) Besten Dank noch mal :)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige