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

Bezug ArrayFormel auf wechselnde Arbeitsblätter

Bezug ArrayFormel auf wechselnde Arbeitsblätter
josef.muellner@gmail.com
Hallo,
Ich habe folgendes Problem: ich möchte dass Excel über eine Array Formel mit Summe und 3 Wenn Kriterien einen Wert zieht (was eigentlich eh unproblematisch ist). Da es sich aber um viele Tabellenblätter handelt und dies laufend aktualiesiert werden muss (der Rechner aber nicht sehr stark ist und daher ewig zum Berechnen der Arrays braucht) wollte ich ein Makro schreiben, welches immer den Wert kopiert wenn neue Daten eingegeben wurden.
Von dem Verweis auf andere Arbeitsmappen weiß ich dass ich ["&Name&"]Arbeitsmappe! zum verweisen verwenden kann (wo Name as string und Arbeitsmappe ist eine schon eingegebene Bezeichnung derselben (daher nur Name variabel).
Wenn ich nun den Bezug auf "&Name&"! wo Name as string und Name=Bezeichnung des Arbeitsblattes meldet Excel dass es das Zeilenende erwartet, wenn ich nur Name! verwende kann Array Eigenschaft für Range-Objekt nicht festgelegt werden.
Das Programm sieht so aus:
wobei J, M für eine Zahl stehen, l für einen Numeraire

Sub Tage()
Dim l As Single, J As String, M As String
Dim blatt As String
Worksheets("elT").Activate
l = 1
Do Until l + 1 > 85
If Cells(l + 1, 1).Value Selection.FormulaArray = "=SUM(IF((TEXT(A2;0)=Blatt!4:4)*(TEXT(B2;0)=Blatt!3:3)*(1=Blatt!106: _
106);Blatt!2:2))"
Cells(1 + l, 3).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Loop
End Sub

AW: Bezug ArrayFormel auf wechselnde Arbeitsblätter
20.07.2010 14:03:06
IngGi
Hallo Josef,
der Name der Arbeitsmappe kommt ohne Anführungszeichen in die Formel. Der Fehler liegt darin, dass Matrixformeln keine kompletten Spalten verarbeiten können. Schränke den Zellbezug etwas ein, dann sollte die Formel funktionieren.
Gruß Ingolf
AW: Bezug ArrayFormel auf wechselnde Arbeitsblätter
20.07.2010 14:30:05
JoeRichi
Danke für die rasche Antwort, leider funktioniert es noch immer nicht.
Der Befehl Worksheets(Blatt).activate funktioniert jedoch. Wenn ich auf Debuggen klicke und dann den Wert Blatt markiere gibt er in einem kleinen Feld "1. HJ 2009" aus wie er sollte halt nur mit Anführungszeichen. Könnte dass das Problem sein? Hab auch schon probiert eine Verlinkung zur Arbeitsmappe selbst einzufügen also [Arbeitsmappe.xls]Blatt! usw, hat auch nix geholfen: Fehlernummer ist und bleibt '1004'. Mit verändertem Bezug sieht Formel nun so aus. Wenn ich anstatt Blatt, '1. HJ 2009' eingebe funktionierts:
Selection.FormulaArray = "=SUM(IF(Blatt!R4C1:R4C200=(TEXT(A2;0))*(Blatt!R3C1:R3C200=TEXT(B2;0))*(Blatt!R106C1:R106C200=1);Blatt!R2C1:R2C200))"
Anzeige
AW: Bezug ArrayFormel auf wechselnde Arbeitsblätter
20.07.2010 14:45:04
IngGi
Hallo Josef,
"Blatt" ist demnach eine Variable, das war mir bislang nicht klar. Dann müsste die Codezeile so aussehen:
Selection.FormulaArray = "=SUM(IF('" & Blatt & "'!R4C1:R4C200=(TEXT(A2;0))*('" & Blatt & _
"'!R3C1:R3C200=TEXT(B2;0))*('" & Blatt & "'!R106C1:R106C200=1);'" & Blatt & "'!R2C1:R2C200))"
Der entscheidende Fehler war dann wohl, dass du die &-Zeichen nicht mit Leerzeichen abgetrennt hast. Und du hast auch die in diesem Fall wichtigen einfachen Anführungszeichen an Anfang und Ende des Tabellenblattnamens vergessen. Die sind unbedingt erforderlich, sobald ein Tabellenblattname Leerzeichen enthält.
Gruß Ingolf
Anzeige
AW: Bezug ArrayFormel auf wechselnde Arbeitsblätter
20.07.2010 15:30:23
JoeRichi
Wieder Danke für die rasche Antwort, aber:
Das funktioniert ebenfalls nicht.
Ich bin aber durch einiges Herumprobieren draufgekommen dass es wohl an der IF Funktion liegt, denn wenn ich eingebe: selection.formular1c1= "=sum('" & blatt & "'!R1c1:r10c10)" dann bekommen ich keine fehlermeldung und er rechnet richtig. Jedoch meint er bei der IF Funktion dass das Objekt diese Methode/Eigenschaft nicht unterstützt (Fehler 438). zB: selection.formular1c1= "=if('" & blatt & "'!r1c1=1;true;false)" funktioniert nicht.
Mfg Josef
AW: Bezug ArrayFormel auf wechselnde Arbeitsblätter
20.07.2010 15:48:38
IngGi
Hallo Josef,
da hätte ich mal lieber gleich genau hinschauen sollen, anstatt beim ersten, bzw. zweiten gefundenen Fehler gleich eine Antwort zu schreiben. Da sind nämlich mehrere Dinge im Argen.
1. Innerhalb der TEXT()-Funktionen verwendest du mehrfach die A1-Schreibweise. Das ist nicht zulässig. Verwende auch hier die Z1S1-Schreibweise (bzw. R1C1, da hier auch englisch zwingend vorgeschrieben ist). Also statt A2 --> R2C1 !
2. Wie bereits unter 1. gesagt, ist in VBA (zumindest für Arrayformeln) englisch zwingend vorgeschrieben. Das betrifft auch Dezimaltrennzeichen, Parametertrennzeichen, usw. Daher musst du an Stelle von Semikolons in der Formel Kommas verwenden.
3. Du kannst die Formel immer nur einer Zelle gleichzeitig zuweisen. Sind bei der Zuweisungen gerade mehrere Zellen markiert, geht die Zuweisung mit "Selection.FormulaArray" schief. Verwende statt dessen "ActiveCell.FormulaArray".
So, jetzt bin ich mal gespannt, ob ich noch etwas übersehen habe.
Gruß Ingolf
Anzeige
AW: Bezug ArrayFormel auf wechselnde Arbeitsblätter
20.07.2010 16:08:03
JoeRichi
Es klappt! Vielen Dank
Mfg Josef

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige