Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1104to1108
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
Inhaltsverzeichnis

Formel durch Makro in Zelle schreiben

Formel durch Makro in Zelle schreiben
Jakob
Hallo,
ich habe mit dem Makrorecorder folgenden Code aufgezeichnet um eine Formel in eine Zelle zu schreiben.
Range("G11").FormulaR1C1 = _
"=IF((IF(ISERROR(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0),"""",IF(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0,IF(VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)=0,"""",VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)))))=""luft"",""x"","""")"
~f~
Das funktioniert auch problemlos. Jetzt musste ich aber die Formel um eine "Oder"-Abfrage erweitern. Im Excel funktioniert es auch problemlos. Nur beim Schreiben der Formel mit VBA gibt es jetzt einen Laufzeitfehler. Liegt das jetzt daran, daß die Formel zu lang ist? Muß ich im VBA-Code vielleicht einen Zeilenumbruch einbauen? Wenn ja, wie müßte dann die Formel aussehen?
~f~
Range("G11").FormulaR1C1 = _
"=IF(or((IF(ISERROR(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0),"""",IF(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0,IF(VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)=0,"""",VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)))))=""luft"",(IF(ISERROR(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0),"""",IF(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0,IF(VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)=0,"""",VLOOKUP(R6C7&"".""&R17C3,VsArt,2,)))))=""lkw""),""x"",""""))"
Vielen Dank für Eure Hilfe.
Gruß,
Jakob

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Formel durch Makro in Zelle schreiben
30.09.2009 22:37:04
Daniel
Hi
ja, die Formel ist zu lang.
die .FormulaR1C1 - Funktion funktioniert nur bis max 256 Zeichen.
du musst die Formel entsprechend einkürzen.
du könntest z.B. den immer wiederkehrenden Begriff: R6C7&"".""&R17C3 als Namen festlegen und in der Formel verwenden.
weitere Kürzungsmöglichkeit:
hier ist der Fett markierte Zeil überflüssig:
ISERROR(MATCH(R6C7&"".""&R17C3,KunMat,0)>=0)

oder lässt sich so ersetzen, was auch wieder ein paar Zeichen spart.
CountIf(KunMat,R6C7&"".""&R17C3)=0
sollte die Formel immer noch zu lang sein müssten immer wiederkehrende Formelbestandteile in _ eine seperate Hilfspalte ausgelagert werden. Gruß, Daniel
Anzeige

400 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige