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
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Grundsätzliches zur Formelerstellung in VB

Grundsätzliches zur Formelerstellung in VB
udo-d
Hallo Profis,
könnte mir schnell einer von Euch nur erklären warum mir mein Excel folgende Formel,
zwar - wenn ich sie manuell in einer entsprechenden Zeile drinne habe, rechnet Sie perfekt - OHNE Fehlermeldung, kann sie auch hochwärts kopieren usw. funktioniert dann in jeder Zeile.
Wenn ich aber nun die genau gleiche Formel in VB erstelle, bringt er mir ne Fehlermeldung und die Zeile
wo die Formel im Editor steht ist kompl. gelb markiert ?
Frage : wisst ihr gibts da seitens VB irgendwelche Beschränkungen was die Länge einer Formel angeht ,
oder sieht evt. jemand von Euch warum ...
Hab sie schon 2X kontrolliert - sollte eigentl. passen ? aber irgendwie is der Wurm drinn
Bin für jede Art von Anregung sehr dankbar , schönen gruß und Danke vorab
udo-d
hier mal die Formel wie sie zB in Zeile 15 drinne steht :
'=WENN(UND(J15="";K15="";L15="");"";WENN(ODER(K14="";K14=0);WENN(UND(J14="";K14="");WENN((K15-J15)<0;0;(K15-J15)-L15);((1-J14)+K15)-L14-L15);WENN((K15-J15)<0;0;(K15-J15)-L15)))
~f~
und die identische Formel in VB sieht so aus - geht dann aber nicht ?
~f~
FormulaR1C1 _
= "=IF(AND(RC[-4]="""",RC[-3]="""",RC[-2]=""""),"""",IF(OR(R[-1]C[-3]="""",R[-1]C[-3]=0),IF(AND(R[-1]C[-4]="""",R[-1]C[-3]=""""),IF((RC[-3]-RC[-4]<0,0,(RC[-3]-RC[-4])-RC[-2],(1-R[-1]C[-4])+RC[-3])-R[-1]C[-2]-RC[-2]),IF((RC[-3]-RC[-4])<0,0,(RC[-3]-RC[-4])-RC[-2])))"
AW: Grundsätzliches zur Formelerstellung in VB
07.10.2009 15:46:04
Rudi
Hallo,
imho darf die Formel max. 255 Zeichen lang sein.
Gruß
Rudi
Vielen Dank Rudi - wusste ich nicht ... habs mit
07.10.2009 15:50:43
udo-d
folgendem Einklicker mal notdürftig gelöst .
praktisch die Stelle wo eigentl. die Formel stand ( im VB Editor ) mit obere Zelle kopieren und unten drunter dann einfügen - gelöst
sieht so aus :
Cells(R, 14).Select
Selection.Copy
Cells(R + 1, 14).Select
ActiveSheet.Paste
Application.CutCopyMode = False
geht als Anweisung bestimmt noch kürzer ... wenn mann wüsste wie ;-)
Dank dir trotzdem schon mal für deinen Hinweis - Lieben Dank
Schöne Grüße
udo
Anzeige
hier hab ich grad mal noch eine kürzere Anweisung
07.10.2009 15:57:09
udo-d
für jene besagte Stelle ...
Cells(R + 1, 14).FormulaR1C1 = Cells(R - 1, 14).FormulaR1C1
AW: Vielen Dank Rudi - wusste ich nicht ... habs mit
07.10.2009 16:09:17
Rudi
Hallo,
die ganze Formel kannst du um einiges kürzen.
z.B
AND(RC[-4]="""",RC[-3]="""",RC[-2]="""")
zu
COUNTA(RC[-4]:RC[-2])=0
WENN(ODER(K14="";K14=0);
zu
WENN(K14=0;
da eine leere Zelle auch als 0 interpretiert wird.
Außerdem hast du viele überflüssige Klammern drin.
Sollte das gleiche Erg. bringen:
=WENN(ANZAHL2(J18:L18)=0;"";WENN(K17=0;WENN(UND(J17="";K17="");WENN(K18<J18;0;K18-J18-L18); 1-J17+K18-L17-L18);WENN(K18<J18;0;K18-J18-L18)))
Tipp:
Wenn du die Formel nicht aufzeichnen kannst, kannst du sie auch nicht mit .FormulaR1C1= ... einfügen.
Gruß
Rudi
Anzeige
Mensch Rudi - lieben Dank - werd ich gleich ...
07.10.2009 16:18:17
udo-d
mal ausprobieren ...
Hab an meinen weiteren Ansätzen die ich da noch hatte auch schon schwächen entdeckt gehabt gerade ...
Meld mich nachher nochmals zurück
Danke dir schon mal vielmals
udo
Rudi was soll ich sagen - perfekt deine Formel !!!
07.10.2009 16:35:28
udo-d
Tausend Dank nochmals , auch für den Tipp bzgl. der Länge, war mir nicht bekannt.
Schöne Grüße aus dem Süden der Republik
udo-d
Sorry, aber du solltest
07.10.2009 16:46:29
Rudi
mal über deine Levelangabe nachdenken.
Für einen Excel-Profi sieht die Formel ziemlich zusammengeschustert aus.
Da geht bestimmt noch was.
Gruß
Rudi
da hast recht ;-) hehe (oT)
07.10.2009 17:12:03
udo-d
...
AW: da hast recht ;-) hehe mT
07.10.2009 17:23:02
Rudi
von 175 auf 129 Zeichen:
=WENN(ANZAHL2(J18:L18)=0;"";WENN(K17={0.""};WENN(J17={0.""};(K18>J18)*(K18-J18-L18); 1-J17+K18-L17-L18);(K18>J18)*(K18-J18-L18)))
Gruß
Rudi
Anzeige
Du bist echt der Knaller - saustark - Hut ab
07.10.2009 20:05:30
udo-d
hmm hmm , mir fehlen die Worte ! Ich dachte wirklich dass ich Excel ziemlich gut - sehr gut kenne, aber
du zeigst mir deutlich meine Grenzen. Find ich stark! Kann ich aber auch gut verstehen - Excel ist schon ein gewaltiges Tool das oft und all zu sehr unterschätzt wird ...
Wirklich, großen Dank für deine sehr wertvollen Tipps und die Formeln ...
Hoff ich hab dich nicht zu sehr mit meiner Problematik beansprucht.
Danke nochmals
udo-d
AW: Du bist echt der Knaller - saustark - Hut ab
07.10.2009 21:08:46
Rudi
Hallo,
Hoff ich hab dich nicht zu sehr mit meiner Problematik beansprucht.

ne, macht schon mal Spaß, zu zeigen wo der Hammer hängt. ;-)
Gruß
Rudi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige