Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
400to404
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
400to404
400to404
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formel als Makro

Formel als Makro
Sebastian
Hi Leute villeicht kann mir jemand weiterhelfen.
Ich will folgende formel in ein Makro schreiben und automatisch laufen lassen.
=IF('[M610 - FinalCurrent]M610 - FinalCurrent '!$E$19>0;('3 in 1 Previous'!G139/'[M610 - FinalCurrent]M610 - FinalCurrent '!G9)-1;IF('[M610 - FinalCurrent]M610 - FinalCurrent '!$D$19;(('3 in 1 Previous'!C139+'3 in 1 Previous'!D139)/('[M610 - FinalCurrent]M610 - FinalCurrent '!C9+'[M610 - FinalCurrent]M610 - FinalCurrent '!D9))-1;('3 in 1 Previous'!C139/'[M610 - FinalCurrent]M610 - FinalCurrent '!C9)-1))
mit der formel sollen bestimmte spalten verglichen werden.
Viele Grüße Sebastian.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Formel als Makro
Knut
Was meinst du mit automatisch? Auch eine Automatik muss durch irgenwas
ausgelöst werden.
Knut
AW: Formel als Makro / Fluch der langen Namen
Uwe
Wenn die Zellen, aus dennen die Werte gezogen werden sollen, fest sind, dann erfüllt ein parameterloser Aufruf einer Funktion den Zweck, wenn man nicht prüfen will, ob bei verwendung von kürzeeren Blattnamen, das ganze auch weiterhin als Zellenformel sinnvoll bleibt.
Modul in der Arbeitsmappe anlegen:

Option Explicit
Function ProChg() As Double
Dim ws1 As worksheet, ws2 As Worksheet
Set ws1 = Worksheets("[M610 - FinalCurrent]M610 - FinalCurrent ")
Set ws2 = Worksheets("2 in 1 Previous")
'=IF ws1.$E$19>0 then ;
' (ws2.G139/ws1.G9)-1;
'else
'IF ws1.$D$19; then
' (ws2.C139+ws2.D139)/(ws1.C9+ws1.D9)-1;
'Else
'(ws2.C139/ws1.C9)-1
If ws1.Range("E19") > 0 Then
ProChg = ws2.Range("G139") / ws1.Range("G9") - 1
Else
If ws1.Range(D19) Then
ProChg = (ws2.Range("C139") + ws2.Range("D139")) / (ws1.Range("C9") + ws1.Range("D9")) - 1
Else
ProChg = ws2.Range("C139") / ws1.Range("C9") - 1
End If
End Function

und dann in dei gewünsche Zelle den Zellenbefehl: =ProChg()
Du kannst allerding auch direkt ein Makro anlegen, das Du über eine STRG-Sequenz starten kannst. (Menü Extras...Makros... oder [ALT]+[F8] : neuen Makroname eingeben ... Erstellen und den Code

Sub Makro1()
ActiveCell.FormulaR1C1 = "=VergleichsErgebnis()"
End Sub

eingeben. Wenn Du im Dialag zum Anlegen/Bearbeiten des Makros ([ALT]+[F8]) unter dem Punkt Optionen das Tastenkürzel z.B. [STRG]+[r] vorgegben hast, dann kannst Du nun das Makro starten, und das Ergebnis wird in die Zelle eingetragen, die gerade aktiv ist (Vorsicht vor Überschreibung)
Bitte die Formeln zur Berechnung des Bergleichswerts besonders noch einmal prüfen!
Insbesondere auch die Bedingungsanweisung, wo der Zelleninhalt D19 nur auf logisch WAHR oder FALSCH getestet wird {Ausschnitt aus Deiner Zellenformel: ...IF('[M610 - FinalCurrent]M610 - FinalCurrent '!$D$19;((...}
Hoffe, das kein Fehler im Code enthalten ist, da ich ihn nicht prüfen konnte.
Gruß!
Anzeige
AW: Formel als Makro / Fluch der langen Namen
Sebastian
Wow. Vielen Dank Uwe. Du hast mir sehr weitergeholfen.
Werde es gleichmal ausprobieren.
Danke.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige