Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1532to1536
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

Fehler beim erstellen von Matrixformeln per VBA

Fehler beim erstellen von Matrixformeln per VBA
05.01.2017 14:44:19
Matrixformeln
Hallo,
ich möchte in einige Tabellen (Checklisten) Matrixformeln für eine kumulierte Auswertung einfügen. Die Formel wird mittels For/Next von Spalte zu Spalte erweitert.
In den Spalten H bis O funktioniert es einwandfrei, ab Spalte P erscheint die Fehlermeldung "Die FormulaArray-Eigenschaft der Range-Objektes kann nicht festgelegt werden".
Hat jemand eine Idee/Hinweis woran das liegen könnte?
Mein Makro:
Sub ArrayFormel() 'ArrayFormel(Spalten)
Spalten = 10
iRowX = Cells(Rows.Count, 3).End(xlUp).Row - 4
' - Formel in 1. Spalte (H) einfügen
Cells(4, 8).FormulaArray = "=SUM(1*ISTEXT(R[6]C:R[" & iRowX & "]C))"
' - Formel in Folgespalten (I...) einfügen
For iCol = 1 To Spalten
sF = ""
For iC = iCol To 1 Step -1
sF = sF & "ISBLANK(R[6]C[-" & iC & "]:R[" & iRowX & "]C[-" & iC & "])*"
Next iC
'  bei FormulaArray erscheint ab iCol = 8 (Spalte P) die Fehlermeldung
'  "Die FormulaArray-Eigenschaft der Range-Objektes kann nicht festgelegt werden"
Cells(4, iCol + 8).FormulaArray = "=SUM(" & sF & "ISTEXT(R[6]C:R[" & iRowX & "]C))"
'  mit FormulaR1C1 funktioniert alles  und
'  ich kann diese anschließend mit [Strg]+[Alt]+[Enter] in MatrixFormeln umwandeln
'Cells(4, iCol + 8).FormulaR1C1 = "=SUM(" & sF & "ISTEXT(R[6]C:R[" & iRowX & "]C))"
Next iCol
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler beim erstellen von Matrixformeln per VBA
05.01.2017 15:07:58
Matrixformeln
Hi
ich vermute mal, dass die Formel zu lang ist.
Die Längenbeschränkungen sind für VBA deutlich kleiner als bei Eingabe von Hand, und bei FormulaArray nochmal deutlich kürzer.
probiermal, ob die Formel nicht als SummenProdukt-Funktion erstellen kannst, die kannst du als normale Formel eingebn, wird aber trotzdem als Matrixformel berechnet.
desweitern würde ich dir empfehlen, in der R1C1-Schreibweise möglichst viele Zellbezüge absolut zu setzen und nur die relativ zu lassen, die unbedingt relativ sein müssen.
Das vereinfacht oft die Formel, weil die Klammern dann wegfallen und der Bezug beim Verschieben in eine andere Spalte nicht neu berechnet werden muss.
Gruß Daniel
Anzeige
AW: Fehler beim erstellen von Matrixformeln per VBA
05.01.2017 16:46:24
Matrixformeln
Hallo Daniel,
mit einer normalen Formel habe ich es bisher noch keine Lösung gefunden. Feste Zellbezüge gibt es außer die erste Zeile (10) nicht, da die Tabellen unterschiedliche Mengen an Zeilen und Spalten haben können.
Die Spalten stehen für Tage/Wochen und die Zeilen für ein Thema/Aufgabe. In den auszuwertenden Zellen steht entweder ein x oder ein o.
ZIEL: Wird bei einem Thema ein x gesetzt soll sich an diesem Tag der Zähler erhöhen. Wird bei dem gleichen Thema an weiteren Tagen ein x gesetzt soll der Zähler sich nicht erhöhen, also Zählen nur bei 1. Bearbeitung eines Themas.
Anzeige
AW: Fehler beim erstellen von Matrixformeln per VBA
05.01.2017 17:50:32
Matrixformeln
Hi
es geht da nicht um feste Zellbezüge, sondern darum ob sie relativ sein müssen oder nicht.
dieser Teil
     iRowX = Cells(Rows.Count, 3).End(xlUp).Row - 4
Cells(4, 8).FormulaArray = "=SUM(1*ISTEXT(R[6]C:R[" & iRowX & "]C))"
wird mit absoluten Zellbezügen einfach kürzer:
     iRowX = Cells(Rows.Count, 3).End(xlUp).Row
Cells(4, 8).FormulaArray = "=SUM(1*ISTEXT(R10C:R" & iRowX & "C))"
das erste R10 kann man relativ lassen, wenn man ggf vorhat, noch weitere Überschriftenzeilen einzufügen, so dass sich die ganze Tabelle nach unten verschiebt, aber das iRowX als letzte Zeile ist als absolutwert sinnvoller (denn dieser ändert sich nicht, wenn du die Tabelle verschiebst)
anosonsten müsstest du die Datei mal hochladen, damit man sich besser vorstellen kann, was du vor hast.
da du mit VBA arbeitest, könntest du auch mit Hilfsspalten oder -zeilen arbeiten, was dir ggf ermöglicht, ohne Matrixformeln auszukommen.
Wenn ich das richtig verstehe, willst du zählen, wieviele Projekte an einem Tag gestartet wurden?
Gruß Daniel
Anzeige
AW:Summenprodukt-Formel
05.01.2017 18:25:00
Daniel
Hi
ich hab mal eine Lösung mit einer Summenproduktformel gebastelt, hier für die Spalte J, mit den Vorgängerspalten H und I
=SUMMENPRODUKT((J10:J24"")*(H10:H24&I10:I24=""))
hierbei musst du für jede weitere Spalte nur die Textkette (fett) um die Vorgängerspalten erweitern.
es kommt nach meinen kurzen Tests das gleiche heraus wie bei deiner Formel, aber die Formel ist kürzter und muss nicht über FormulaRArray eingegeben werden, sondern kann als normale Formel eingegeben werden.
da sind dann Formellängen von über 1000 Zeichen möglich und mit einem Dirty-Little-Trick, welcher aber auch über VBA machbar ist, sogar bis zu 4000 (also das Maximum, was eine manuelle Formel lang sein darf)
Gruß Daniel
Anzeige
AW: AW:Summenprodukt-Formel und als Makro
05.01.2017 19:00:09
Daniel
Hier das ganze mal als Makro umgesetzt:
funktioniert auch noch mit 100 Spalten und ist deutlich einfacher:

Sub ArrayFormel() 'ArrayFormel(Spalten)
Dim Spalten
Dim iRowX, iCol, sF
Dim SpalteAb, SpalteBis
Spalten = 10
SpalteAb = 8
SpalteBis = SpalteAb + Spalten - 1
iRowX = Cells(Rows.Count, 3).End(xlUp).Row - 4
sF = ""
For iCol = SpalteAb To SpalteBis
Cells(2, iCol).FormulaR1C1 = _
"=SumProduct((R10C:R" & iRowX & "C"""")*(""""" & sF & "=""""))"
sF = sF & "&R10C" & iCol & ":R" & iRowX & "C" & iCol
Next iCol
End Sub
Gruß Daniel
Anzeige
AW: AW:Summenprodukt-Formel und als Makro
05.01.2017 19:05:01
MarioL
Hallo Daniel,
Danke für die SummenProdukt-Formel. Ich arbeite zwar sehr viel mit Excel aber auf diese Lösung wäre ich nicht so schnell gekommen. Mein Makro hatte ich bereits schon dem entsprechend angepasst. DANKE.
AW: AW:Summenprodukt-Formel und als Makro
05.01.2017 19:06:26
MarioL

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige