Clever-Excel-Forum

Normale Version: Formel mit VBA in Zelle schreiben "Syntax-Probleme"
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Gemeinede,

ich habe folgendes Problem.

Ich schreibe mithilfe von VBA, Formeln in definierte Zellen.
Der Anwendungsfall gibt mir nun leider vor, das die gesamte Rechenlogik auf der Exceloberfläche zu liegen hat. Daher auch die Probleme bei der Umsetzung bzw. diese "riesiege" Formel...

Die Formel habe ich auf der Excel Oberfläche aufgebaut, getestet und sie funktioniert. Wink Bei der Umsetzung in VBA hakt es jetzt allerdings.

Die Formel soll mir einen Wert einer Matrix wiedergeben, welche in abhängigkeit von den drei Variablen "Ueber, Drunter, Summe_Tab & Zeile" stehen. 
Die Variablen werden für jede Zelle angepasst und im vorderen Teil der Schleife bestimmt, mein Problem liegt anscheinend in zwei Bereichen.

Zum einen übergebe ich in der Originalformel die Adresse der Matrix, welche verwendet werden soll mittels indirect an den SVERWEIS, des weiteren gebe ich der Range auch noch einen Bezug auf das entsprechende Blatt mit 'STEUERUNG'! mit.    

Zum anderen scheine ich ein Problem mit der erzeugung eben dieser Range zu haben. Einzeln lassen sich die "eckpunkte" der Range erzeugen allerdings kann ich die zusammenführung mittels : anscheinend so nicht in VBA abbilden.
Ich hab da schon die diversen Varianten " & ":" & " I ':' I ; etc. versucht, allerdings ohne erfolg. Es kommt immer der Fehler "Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler"

Cells(I, lastcolumn1 + F).Formula = "=vlookup(hlookup(" & Ueber & "," & Summen_Tab & "," & Zeile & "-4,false),indirect('Steuerung'!&address(vlookup(" & Ueber & ",'Steuerung'!$B$40:$C$57,2,false)+39,hlookup(" & Drunter & ",'Steuerung'!$D$38:$I$39,2,false)+3):address(vlookup(" & Ueber & ",'Steuerung'!$B$40:$C$57,2,false)+41,hlookup(" & Drunter & ",'Steuerung'!$D$38:$I$39,2,false)+4)),2,true)"

Habt Ihr ne Idee?
Gruß
Hunibol
Hallo,

wie sieht denn die Formel in VBA aus, wenn Du sie in der Tabellen hast (ohne jetzt die Variablen)

Im Direktfenster

PHP-Code:
?ActiveCell.Formula 

eingeben und Return drücken.
Hallo,

wie wäre es, wenn Du zumindest die Originalformel vorstellen würdest?
(09.06.2016, 11:42)BoskoBiati schrieb: [ -> ]Hallo,

wie wäre es, wenn Du zumindest die Originalformel vorstellen würdest?

Hallo BoskoBiati,

die Originalformel sieht so aus:
=WENN(Mat_Ove_Con="x";SVERWEIS(WVERWEIS(M$1;$DF$5:$DS$34;ZEILE(L11)-4;FALSCH);INDIREKT("Steuerung!"&ADRESSE(SVERWEIS(M$1;Steuerung!$B$40:$C$57;2;FALSCH)+39;WVERWEIS(M$6;Steuerung!$D$38:$I$39;2;FALSCH)+3)&":"&ADRESSE(SVERWEIS(M$1;Steuerung!$B$40:$C$57;2;FALSCH)+41;WVERWEIS(M$6;Steuerung!$D$38:$I$39;2;FALSCH)+4));2;WAHR);SVERWEIS(WVERWEIS(M$1;$DF$5:$DS$34;ZEILE(L11)-4;FALSCH);INDIREKT("Steuerung!"&ADRESSE(SVERWEIS(M$1;Steuerung!$B$40:$C$57;2;FALSCH)+39;WVERWEIS(M$6;Steuerung!$D$38:$I$39;2;FALSCH)+3)&":"&ADRESSE(SVERWEIS(M$1;Steuerung!$B$40:$C$57;2;FALSCH)+41;WVERWEIS(M$6;Steuerung!$D$38:$I$39;2;FALSCH)+4));2;WAHR))


Das Problem mit dem : hab ich schon gelöst. & "":"" & ich hatte die "&-Zeichen" vergessen und den : muss ich in doppelte Hochkommata stellen.



Gruß
Hunibol
Hallo,

was mir bei der Formel auffällt:

1. war im falschen Beitrag
2. Eine Formel mit Adresse ist für meine Begriffe fast immer falsch aufgebaut, weil man mit vernünftigen INDEX-Formeln das lösen kann.
3. Ein Konstrukt aus WVERWEIS/SVERWEIS ist genauso seltsam, wenn nicht Nonsens.
4. Sehe ich hier keine Notwendigkeit für INDIREKT.
5. Sind Dann- und Sonst-Teil identische Formeln!

In Unkenntnis der Tabelle läßt sich da allerdings nichts verbessern, nachvollziehen läßt sich dann sowieso nichts.

Als Ansatz:


Code:
=WENN(Mat_Ove_Con="x";SVERWEIS(WVERWEIS(M$1;$DF$5:$DS$34;ZEILE(A7);0);INDEX(Steuerung!$D$39:$S$123;SVERWEIS(M$1;Steuerung!$B$40:$C$57;2;0);WVERWEIS(M$6;Steuerung!$D$38:$I$39;2;0)):INDEX(Steuerung!$D$39:$S$123;SVERWEIS(M$1;Steuerung!$B$40:$C$57;2;0)+1;WVERWEIS(M$6;Steuerung!$D$38:$I$39;2;0)+2);2;1);SVERWEIS(WVERWEIS(M$1;$DF$5:$DS$34;ZEILE(A7);0);INDEX(Steuerung!$D$39:$S$123;SVERWEIS(M$1;Steuerung!$B$40:$C$57;2;0);WVERWEIS(M$6;Steuerung!$D$38:$I$39;2;0)):INDEX(Steuerung!$D$39:$S$123;SVERWEIS(M$1;Steuerung!$B$40:$C$57;2;0)+1;WVERWEIS(M$6;Steuerung!$D$38:$I$39;2;0)+2);2;1))