Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
672to676
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
672to676
672to676
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Fehler im VBA Code?

Fehler im VBA Code?
27.09.2005 08:08:55
Stephan
Hallo,
ich möchte per VBA eine Formel in eine Zelle schreiben, bekomme aber eine Fehlermeldung (Formula Array Eigenschaft kann nicht festgelegt werden), offensichtlich habe ich den Code nicht richtig formuliert.
Folgende Formel soll in die Zelle geschrieben werden:
=WENN(ISTFEHLER(MITTELWERT(WENN(Erfolgskredit!E5:E1000=P30;Erfolgskredit!I5:I1000)));"";(MITTELWERT(WENN(Erfolgskredit!E5:E1000=P30;Erfolgskredit!I5:I1000))))
CODE:
With Sheets("statistics").Rows(x)
.Cells(17).FormulaArray = "=WENN(ISTFEHLER(MITTELWERT(WENN(" & strName & "'!E5:E1000=P30;" & strName & "'!I5:I1000)));"";(MITTELWERT(WENN(" & strName & "'!E5:E1000=P30;" & strName & "'!I5:I1000))))"
strName ist eine Variable für Tabellenblätter.
Der Code ist in 1 Zeile geschrieben, ohne Umbruch.
Ich hoffe auf Eure Hilfe ;)
LG, Stephan

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler im VBA Code?
27.09.2005 08:16:55
Erich
Hallo Stephan,
nur ganz kurz - ohne Test (habe keine Zeit):
Probier mal
With Sheets("statistics").Rows(x)
.Cells(17).FormulaArray = "=WENN(ISTFEHLER(MITTELWERT(WENN(" & strName & "'!E5:E1000=P30;" & strName & "'!I5:I1000)));"""";(MITTELWERT(WENN(" & strName & "'!E5:E1000=P30;" & strName & "'!I5:I1000))))"
Die einzige Änderung: Gänsefüßchen innerhalb eines Strings müssen doppelt geschrieben werden. Das habe ich vor dem zweiten "MITTELWERT" getan.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Fehler im VBA Code?
27.09.2005 08:23:06
Stephan
Hallo Erich, danke für die schnelle Rückmeldung - leider bekomme ich die gleiche Fehlermeldung...
Anzeige
AW: Fehler im VBA Code?
27.09.2005 08:23:18
Stephan
Hallo Erich, danke für die schnelle Rückmeldung - leider bekomme ich die gleiche Fehlermeldung...
AW: Fehler im VBA Code?
27.09.2005 08:41:22
Luschi
Hallo Stephan,
in der Excel-Hilfe unter "FormulaArray" steht Folgendes:
Wenn Sie diese Eigenschaft zur Eingabe einer Matrixformel verwenden, müssen Sie die Z1S1-Bezugsart verwenden, nicht die A1-Bezugsart (siehe zweites Beispiel).
Beispiel
In diesem Beispiel wird die Zahl 3 als Matrixkonstante in die Zellen A1:C5 in Sheet1 eingegeben.
Worksheets("Sheet1").Range("A1:C5").FormulaArray = "=3"
In diesem Beispiel wird die Formel =SUM(Z1S1:Z3S3) in die Zellen E1:E3 in Sheet1 eingegeben.
Worksheets("Sheet1").Range("E1:E3").FormulaArray = _
"=Sum(R1C1:R3C3)"
Außerdem sieht man hier, daß die Funktionen in der englischen Schreibweise benutzt werden müssen.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Fehler im VBA Code?
27.09.2005 09:13:29
Stephan
Danke, ich habe den Corde folgendermaßen umgeschrieben, bekomme aber immer noch die Fehlermeldung...
.Cells(17).FormulaArray = "=IF(ISERROR(AVERAGE(IF(" & strName & "'!R5C5:R1000C5=R30C16;" & strName & "'!R5C9:R1000C9)));"""";(AVERAGE(IF(" & strName & "'!R5C5:R1000C5=R30C16;" & strName & "'!R5C9:R1000C9))))"
Gewünschter Zellcode:
=WENN(ISTFEHLER(MITTELWERT(WENN(Erfolgskredit!E5:E1000=P30;Erfolgskredit!I5:I1000)));"";(MITTELWERT(WENN(Erfolgskredit!E5:E1000=P30;Erfolgskredit!I5:I1000)))
AW: Fehler im VBA Code?
27.09.2005 12:17:41
GerdZ
Hallo Stephan,
zur englischen Schreibweise gehören auch Komma statt Semikolon zur Parametertrennung.
Ein weiterer Fehler ist das Hochkomma vor bzw. nach dem eingefügten Tabellennamen.
Entweder mußt Du das Hochkomma nach dem Tabellennamen entfernen oder vor dem Tabellennamen noch einfügen.
Gruß
Gerd
Anzeige
AW: Fehler im VBA Code?
27.09.2005 13:25:10
Stephan
Danke Gerd, das hat mir sehr geholfen.
Ich habe nur noch ein Problem - dieser Code setzt automatisch $ vor die Zellen, da er die Formel aber in x Zeilen schreiben soll, muss die Zelle P30 (im Code R30C16) fortlaufend sein, also nächste Zeile P31 usw.
Momentan wird in jede Zeile P30 geschrieben.
Gibt es dafür eine Lösung?
Es wäre sehr wichtig für mich.
Vielen Dank!
VBA Code
.Cells(17).FormulaArray = "=IF(ISERROR(AVERAGE(IF(" & strName & "!R5C5:R1000C5=R30C16," & strName & "!R5C9:R1000C9))),"""",(AVERAGE(IF(" & strName & "!R5C5:R1000C5=R30C16," & strName & "!R5C9:R1000C9))))"
Gewünschter Zellcode:
=WENN(ISTFEHLER(MITTELWERT(WENN(Erfolgskredit!E5:E1000=P30;Erfolgskredit!I5:I1000)));"";(MITTELWERT(WENN(Erfolgskredit!E5:E1000=P30;Erfolgskredit!I5:I1000)))
Anzeige
AW: Fehler im VBA Code?
27.09.2005 13:43:13
Uduuh
Hallo,
wenn sich die Formel auf P in der gleichen Zeile bezieht: RC16
Gruß aus’m Pott
Udo

AW: Fehler im VBA Code?
27.09.2005 13:47:54
Stephan
super - vielen dank!!
AW: Fehler im VBA Code?
27.09.2005 16:16:51
Stephan
hallo!
ich habe jetzt den richtigen code hingebracht:
.Cells(17).FormulaArray = "=IF(ISERROR(AVERAGE(IF(" & strName & "!R5C5:R1000C5=RC16," & strName & "!R5C9:R1000C9))),"""",(AVERAGE(IF(" & strName & "!R5C5:R1000C5=RC16," & strName & "!R5C9:R1000C9))))"
nur jetzt habe ich das problem, dass bei der mittelwertberechnung auch die leeren zellen in denen schon ein wert stand mitgezählt werden (0werte sind ok).
gibt es einen weg das zu verhindern? durch die komplexität des vba-codes bringe ich es einfach nicht zusammen...
danke für eure hilfe!
Anzeige
AW: Fehler im VBA Code?
28.09.2005 07:22:13
Erich
Hallo Stephan,
warum leere Zellen als Nullen mitgezählt werden - keine Ahnung!
Ich habe die Wenn-Bedingung um Formel um ISTZAHL(...) ergänzt und dann das VBA mit der Makroaufzeichnung (die setzt doppelte Gänsefüßchen und verwendet automatisch die engl. Funktionsnamen und R1C1-Bezüge) erstellt. So sollte es gehen:

Sub tst()
Dim strName$
strName = "Tabelle1"
' alt
Cells(17).FormulaArray = "=IF(ISERROR(AVERAGE(IF(" _
& strName & "!R5C5:R1000C5=RC16," _
& strName & "!R5C9:R1000C9))),"""",(AVERAGE(IF(" _
& strName & "!R5C5:R1000C5=RC16," _
& strName & "!R5C9:R1000C9))))"
' erweiterte Arrayformel:
'  =WENN(ISTFEHLER(MITTELWERT(WENN(
'     Tabelle1!$E$5:$E$1000=$P1;
'     Tabelle1!$I$5:$I$1000)));"";MITTELWERT(WENN((
'     Tabelle1!$E$5:$E$1000=$P1)*ISTZAHL(
'     Tabelle1!$I$5:$I$1000);
'     Tabelle1!$I$5:$I$1000)))
' neu
' nach Makroaufzeichnung wurde Tabelle1 ersetzt durch " & strName & "
Cells(17).FormulaArray = "=IF(ISERROR(AVERAGE(IF(" _
& strName & "!R5C5:R1000C5=RC16," _
& strName & "!R5C9:R1000C9))),"""",AVERAGE(IF((" _
& strName & "!R5C5:R1000C5=RC16)*ISNUMBER(" _
& strName & "!R5C9:R1000C9)," _
& strName & "!R5C9:R1000C9)))"
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Fehler im VBA Code?
28.09.2005 17:12:21
Stephan
Vielen Dank Erich - funktioniert!
LG

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige