Registriert seit: 20.11.2017
Version(en): Excel2013
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
05.12.2024, 15:12
(Dieser Beitrag wurde zuletzt bearbeitet: 05.12.2024, 15:18 von RPP63.)
.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)
Registriert seit: 04.04.2017
Version(en): Excel365
Die Frage ist: WARUM willst du das per VBA erledigen und nicht zu Fuss?
Registriert seit: 20.11.2017
Version(en): Excel2013
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)))
Registriert seit: 04.04.2017
Version(en): Excel365
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
Registriert seit: 12.04.2014
Version(en): Office 365
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.
Registriert seit: 11.12.2022
Version(en): 365 / 2021
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
---------------
- Wenn du nicht weißt, wo du hin willst, ist es egal, welchen Weg du einschlägst.
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
06.12.2024, 17:20
(Dieser Beitrag wurde zuletzt bearbeitet: 06.12.2024, 17:21 von RPP63.)
… 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)
Registriert seit: 04.04.2017
Version(en): Excel365
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.
Registriert seit: 29.09.2015
Version(en): 2030,5
Code:
[Einstellungen!E2]= [datenbank!C1:C998].specialcells(11)