Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Formel per vba in Zelle schreiben
#1
Hallo Forum,

ich versuche per klick auf einen Button von einer Userform aus, eine Formel in E2 auf Tabelle "Einstellungen" zu schreiben.
Die Formel soll mir dem MAX Wert aus der Tabelle Datenbank C1:C998 ermitteln.

Mit folgender Formel habe ich es bereits selbst versucht aber kein Erfolg.

Code:
With Worksheets("Einstellungen").Range("E2").Formula = "=INDEX(Datenbank_V1!C1:C998;MAX((Datenbank!C1:C998<>"")*ZEILE(Datenbank!1:998)))"

Für Tips wäre ich Dankbar
Gruß
omron2003
Antworten Top
#2
.Formula speaks english!
Try .FormulaLocal (or replace ; with , and ZEILE with ROW)

Are you a VBA-Rookie?

Regards
Ralf

Außerdem müssen alle " innerhalb der Formel verdoppelt werden.
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
#3
Die Frage ist: WARUM willst du das per VBA erledigen und nicht zu Fuss?
Antworten Top
#4
Hallo,

mit dem angepassten Code,
Code:
Worksheets("Einstellungen").Range("E2").FormulaLocal = "=INDEX(Datenbank_V1!C1:C998;MAX((Datenbank_V1!C1:C998<>"""")*ZEILE(Datenbank_V1!1:998)))"

schreibt er jetzt zwar die Formel in die Zelle E2.
Fügt aber an drei stellen der Formel das AT-Zeichen ein, und gibt in der Zelle eine 0 aus?
Code:
=@INDEX(Datenbank_V1!C1:C998;MAX((@Datenbank_V1!C1:C998<>"")*@ZEILE(Datenbank_V1!1:998)))
Antworten Top
#5
Worksheets("Einstellungen").Range("E2").FormulaLocal = "=INDEX(Datenbank_V1!C1:C998;MAX((Datenbank!C1:C998<>"")*ZEILE(Datenbank!1:998)))"
Worksheets("Einstellungen").Range("E2").FormulaArray = Worksheets("Einstellungen").Range("E2").Formula
Antworten Top
#6
Moin

Da drängen sich mir gleich vierzigmillionen Fragen auf.
Unter anderem:

Ist dir bewußt dass bei INDEX() ein anderes Blatt angsprochen wird als bei der Vergleichsoperation und bei ZEILE()?

Zitat:Die Formel soll mir dem MAX Wert aus der Tabelle Datenbank C1:C998 ermitteln.
Das soll sie vielleicht, aber sie ermittelt eine maximale Zeilennummer, zu der dann der Wert in dieser Zeile ausgegeben wird. Also den letzten nicht-leeren Wert von unten.
Das geht auch komplizierter: VERWEIS(9^9;C1:C998)

Das andere wäre: MAX(C1:C998)
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#7
Probiers mal mit

Code:
Worksheets("Einstellungen").Range("E2").FormulaLocal2 =
"=INDEX(Datenbank_V1!C1:C998;MAX((Datenbank_V1!C1:C998<>"""")*ZEILE(Datenbank_V1!1:998)))"
Gruß Dirk
---------------
100  - Wenn du nicht weißt, wo du hin willst, ist es egal, welchen Weg du einschlägst.

Antworten Top
#8
… wobei ich mir recht sicher bin, dass es .FormulaLocal2 in 2013 noch nicht gibt …
Dies wurde ja eingeführt, um Spillformeln zu kennzeichnen.
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
#9
Falls du MICH meinst (bei diesem Forum weiss man ja nie, wer gemeint ist, da keine Baumstruktur wie z.B. bei Herber, es wird alles untereinander geklatscht):
Ob seine Original-Formel überhaupt funktioniert oder nicht, ist mir egal, ich kann sie sowieso mangels Datei nicht testen - ich habe sie einfach übernommen.
ES geht eher darum, dass er sie als ARRAY-Formel eingeben muss. Mein Beispiel gilt eher für jede beliebige Formel, die per VBA als Arrayformel eingegeben werden muss.
Antworten Top
#10
Code:
[Einstellungen!E2]= [datenbank!C1:C998].specialcells(11)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


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