Excel-Formel per VBA in eine Zelle schreiben?

5 Antworten

Hallo, anstatt die Formel in die Zelle zu schreiebn könntest du auch direkt das Ergebnis reinschreiben.
=ZÄHLENWENNS(F2:F1934;"=0")+ZÄHLENWENNS(F2:F1934;"=1")
Range("A1").Value = Worksheetfunction.Countifs(Worksheets("Tab1").Range("F2:F1934"),"=0")+Worksheetfunction.Countifs(Worksheets("Tab1").Range("F2:F1934"),"=1")
Vorteil. Excel muss nicht Immer wieder dieses Ergebnis rechnen=>Zeitersparnis.
Wenn die ähnliche Formel 1000 fach in dein Sheet schreibst wird es sehr langsam.   

Hast Du Dir den String mal ausgeben lassen? Z.B. mit debug.print ins Direktfenster?

Die Formel musst Du der Eigenschaft Cells(neu.2).Formula zuweisen. Ich habe mal die Erfahrung gemacht, dass man zum Einfügen der Formel die englischen Bezeichnungen der Tabellenfunktionen verwenden muss. Es gibt zwar FormulaLocal, aber dass hat damals nicht ordentlich funktioniert.

Viel Erfolg

Hannes


karlericht 
Beitragsersteller
 29.03.2020, 12:12

Hallo, Oubyi hatte denrichtigen Tipp!

0

Versuche es erstmal mit:

Cells(neu, 2).FormulaLocal = FORM01

Ansonsten hilft Dir vielleicht weiter, was ich mir hier zusammengeschrieben habe um Deinen Code auseinander nehmen zu können. DAS läuft.

Dim FORM01A As String, FORM01B As String, FORM01 As String
Dim neu As Long
neu = 3
Dim FRST_F As String, LAST_F As String
FRST_F = "E1"
LAST_F = "E10"

FORM01A = FRST_F & ":" & LAST_F & ";0"
Debug.Print FORM01A

FORM01B = FRST_F & ":" & LAST_F & ";1"
Debug.Print FORM01B

FORM01 = "=ZÄHLENWENNS(" & FORM01A & ")" & "+ZÄHLENWENNS(" & FORM01B & ")"
Debug.Print FORM01

Cells(neu, 1).EntireRow.Insert

Cells(neu, 1) = "Anzahl aktive MGL in " & xGMD

Cells(neu, 2).FormulaLocal = FORM01

Hallo Oubyi,

Super! Ich habe mich krampfhaft an die Hochkommata gehalten, da diese mir aus einem anderen Beispiel mit ZÄHLENWENNS vorgegeben wurden. Die sind auch irgendwann notwendig um anzuzeigen, dass nach einem 2. Hochkomma der String nicht zu Ende ist sondern das Hochkomma Teil des Strings ist...

Auch das Gleichheitszeichen (=) konnte man problemlos weglassen...

Speichere ich diese Formel (ZÄHLENWENNS) manuelle in einer Zelle, funktioniert sie ja mit "=" und Kochkommata?!?!?!

Was mich aber trotzdem irrritiert ist die Tatsache, dass man im Web Beiträge findet die "ZÄHLENWENNS" und solche, die "ZÄHLENWENN" beschreiben...

Nohmals herzlichen Dank und bleib gesund!

jumo


Oubyi, UserMod Light  29.03.2020, 13:01

Gern geschehen 😊.
Dir auch alles Gute.

P.S.: Wenn Du auf eine Antwort reagierst, dann am besten als Kommentar zu dieser Antwort (wie bei Hannes) und nicht als eigene Antwort auf Deine Frage wie hier.
Auf den Kommentar bekommt der Antworter automatisch einen Hinweis, auf Deine Antwort nicht.

0

Wenn ich deine Frage richtig verstanden habe, schreibst du in Makro deutsche Formel? Versuchs mal, die englische "Variante". Nötigenfalls benutze die Makroaufzeichnung und adaptiere dann entsprechend


karlericht 
Beitragsersteller
 29.03.2020, 12:11

Hallo, Oubyi hatte denrichtigen Tipp!

0