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

Matrix-Formeln

Matrix-Formeln
11.03.2008 14:59:16
Born
Hallo Forum,
ich habe eine Tabelle mit hunderten von Matrix-Formeln, die jeweils eine Zeile mit 12 Spalten umfassen. Die Formeln sollen jetzt so geändert werden, dass ein Arry aus 16 Spalten besteht, indem rechts 4 weitere Spalten hinzugefügt werden.
Gibt es eine Möglichkeit, die Formeln automatisiert zu ändern, ohne sie jeweils manuell anfassen zu müssen?
Vielen Dank im voraus,
M. Born

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Matrix-Formeln
11.03.2008 15:11:00
shaka
Hi,
warum schreibst du die Formeln nicht einfach neu rein? Weil wie ich verstehe sind die alle in selber Spalte, d.h. du kannst eine neu schreiben und dann runter kopieren.
Gruß
shaka

AW: Matrix-Formeln
11.03.2008 15:17:04
Born
Hallo Shaka,
Matrix-Formeln kann man nicht einfach so kopieren. Erschwerend kommt hinzu, dass absolute Bezüge verwendet werden müssen, die in jeder Zeile auf eine andere Quelle verweisen und dass zwischen den Matrix-Formeln noch weitere Zellen sind, die andere Formeln beinhalten.
Viele Grüße,
M. Born

AW: Matrix-Formeln
11.03.2008 15:41:00
shaka
Hi,
ich dachte du hast überall die gleichen Formeln.
Schwer ohne einen Beispiel, aber da du immer auf eine Zeile und mehrere Spalten die Formeln beziehst kann es schon sich nicht um Array-Matrix-Formeln handeln.
Wenn in den Spalten keine Formeln sind dann, wenn es möglich ist, füge deine 4 Spalten nicht am Ende, sondern um 1 nach links verschoben. Die letzte Spalte kopier einfach dann nach vorne (so werden deine absolute Bezüge um 4 Spalten automatisch erweitert).
Sonst schätze ich, musst du die Formeln alle neu schreiben!
Gruß
shaka

Anzeige
AW: Matrix-Formeln
11.03.2008 16:13:00
Born
Hallo Shaka,
eine Matrix kann auch nur aus einer Zeile und mehreren Spalten bestehen. Deinem Vorschlag mir dem Einfügen von Spalten kann ich nicht so recht folgen. Man kann keine Spalten kopieren, wenn diese ein Array enthalten. Oder wie ist das Ganze gemeint?
Viele Grüße,
M. Born

AW: Matrix-Formeln
11.03.2008 15:26:00
Jan
Hi,
wie sieht die Formel aus?
mfg Jan

AW: Matrix-Formeln
11.03.2008 15:36:00
Born
Hallo Jan,
z.B. wie folgt: {=StemGetResults(StemModel;$C$6;$C19;B22)}, wobei StemGetResults eine benutzerdefinierte Funktion und StemModel eine Variable sind. Das Array umfaßt hier die Zellen C22 bis M22 und soll bis R22 gehen.
Normalerweise würde ich das Array markieren, F2, die Formel kopieren, ESC, die Formel löschen, zusätzliche Spalten mit markieren, F2, die Formel reinkopieren, Strg+Enter.
Bei knapp 1000 Zeilen macht das jedoch nicht wirklich Spaß. Gibt es einen schnelleren Weg?
Viele Grüße,
M. Born

Anzeige
Excel kennt 3 Arten von Matrix-Formeln,...
11.03.2008 18:23:17
Matrix-Formeln,...
...M. & shaka!
2 davon sind immer 2-dimensional, wobei 1 Dimension auch 1 sein kann (nur 1 Zeile bzw Spalte). Die andere ist ein wirklich 1dimensionales Feld (idR Zeilenvektor als Matrixkonstante).
Eine MxFormel kann auch (ein-)kopiert wdn (auch in unzusammenhängende Bereiche), sie passt sich bei relativen Bezügen automatisch an. Allerdings wird dadurch nicht automatisch auch ihr Gültigkeits-=Auswahlbereich erweitert. Auch MxFormeln mit 1zelligem Bezug können so kopiert und auch mit dem entsprechenden Befehl geändert wdn. Bei letzterem achtet xl darauf, dass der Gültigkeitsbereich der Fml 1zellig bleibt, bei ersterem muss man selber darauf achten, falls die Neuberechnung nicht automatisch erfolgt.
Da es sich bei der von dir, M., verwendeten Fkt um eine UDF handelt, kann ich natürlich über ihr Matrixverhalten keinerlei Aussagen treffen. Das musst du schon selber wissen, falls du sie auch selber pgmt hast (VBAgut lässt das möglich erscheinen!).
Wenn dir die Änderungen manuell zu aufwendig sind, bleibt dir wohl nur, in die UDF-Pgmrg einzugreifen und sie "selbsterweiternd" zu gestalten. Dafür gibt es verschiedene Ansätze je nachdem, in welche Richtung die Erweiterung erfolgen soll. Auf jeden Fall müssen die Zellen/Zeilen/Spalten des adressierten Bezugsfeldes (Array) gezählt wdn. Das setzt aber natürlich voraus, dass dessen Größe und Form mit dem Gültigkeitsbereich der Fml übereinstimmt, sonst wird das so nix! Die ermittelte Anzahl nebst Richtung muss an eine Globalvariable übergeben wdn, auf die dann eine von einer Ereignisprozedur (Worksheet_Change) aufgerufene Subroutine zur (Gültigkeits-=)Auswahlbereichserweiterung zugreifen kann. Wenn du keine Fehler machst und sich die Aufrufe nicht miteinander "verknoten", sollte das auch bei einer größeren Anzahl von Formeln fkt.
Allerdings sehe ich an deiner Formel, dass keine Bereiche übergeben wdn, so dass du die Zellen des ursprünglich markierten Arrays zählen musst (was noch einfacher ist). Oder aber, was hier wahrscheinlich am sinnvollsten ist... Kein Eingriff in die UDF, aber in eine Zelle die gewünschte Länge des MxFml-Gültigkeitsbereiches eintragen, diesen Wert mit der von der Ereignisprozedur aufgerufenen Subroutine abfragen und den aktuellen Auswahlbereich jeweils entsprechend erweitern. Nach dieser Arbeit können die Hilfspgmm deaktiviert wdn, damit es nicht evtl doch noch zu Problemen kommt.
Gruß Luc :-?

Anzeige
Natürlich 3 Arten von Feldern (Arrays)! ;-) owT
11.03.2008 18:26:25
Feldern
:-?

AW: Excel kennt 3 Arten von Matrix-Formeln,...
11.03.2008 18:36:00
Matrix-Formeln,...
Hallo Luc,
danke für die Antwort. Die UDF wurde nicht von mir programmiert. Stattdessen könnte sicher auch eine beliebige andere Funktion stehen. Ich habe mal ein einfaches Beispiel angehängt, wo statt der UDF eine einfache Summenformel benutzt wird. Dort kann ich auch keine Spalte einfügen.
Was ich benötige ist eine Möglichkeit, den Bereich der Matrixformel von B2:E3 auf z.B. B2:G3 zu erweitern, ohne die Formel manuell anzufassen, z.B. durch Ziehen, Spalte einfügen o.ä.
Geht sowas und wenn ja wie?
Viele Grüße,
Marco

Anzeige
AW: Matrix-Formeln
11.03.2008 18:26:00
ingUR
Hallo, Born,
obwohl ich Deine Bezugsangaben nicht richtig nachvollziehen kann, hier eine Gedankengamg umgesetzt, wie eine Array-Formal per VBA verändert wird:
Option Explicit Sub MatrixformelAendern() Dim z As Long, s As Integer, rng As Range, strF As String, zH As Integer Dim p As Long For s = 1 To 5 For z = 1 To 30 'Range("A1:F15") Set rng = Cells(z, s) If InStr$(rng.FormulaArray, "AV") > 0 Then strF = rng.FormulaArray While strF = rng.Offset(zH, 0).Formula: zH = zH + 1: Wend z = z + zH strF = Left$(strF, Len(strF) - 1) p = 1 While Val(Right$(strF, p)) > 0: p = p + 1: Wend rng.FormulaArray = Left$(strF, Len$(strF) - p + 1) & Val(Right$(strF, p - 1)) + _ 3 & ")" End If Next z Next s End Sub


Die Tabelle und Matrixformeln dazu:

 ABCDEF
169     
27     
339   60 
474 55,8 60 
564 55,8 60 
631 55,8 60 
775 55,8 60 
845 55,8   
971 55,8   
1017 55,8   
1170 55,8   
1272 55,8   
1391     
1411     
1561     

Formeln der Tabelle
ZelleFormel
E3{=MITTELWERT(A4:A9)}
C4{=MITTELWERT(A3:A12)}
E4{=MITTELWERT(A4:A9)}
C5{=MITTELWERT(A3:A12)}
E5{=MITTELWERT(A4:A9)}
C6{=MITTELWERT(A3:A12)}
E6{=MITTELWERT(A4:A9)}
C7{=MITTELWERT(A3:A12)}
E7{=MITTELWERT(A4:A9)}
C8{=MITTELWERT(A3:A12)}
C9{=MITTELWERT(A3:A12)}
C10{=MITTELWERT(A3:A12)}
C11{=MITTELWERT(A3:A12)}
C12{=MITTELWERT(A3:A12)}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Nach einmaliger Ausführung, werden die Matrixformeln der Spalte C dem Bereich von A12 auf A15 erweitert enthalten und die der Spalte D von A9 auf A12 erweitert sein.
Vielleicht bringt Dich die Anregung auf Deinen Lösungsweg.
Gruß,
Uwe

Anzeige
AW: Matrix-Formeln
11.03.2008 18:39:00
Born
Hallo ingUR,
vielen Dank für den Code. Ich werde das morgen mal testen und mich dann hier melden. Viele Dank schonmal vorab.
M. Born

AW: Achtung: zH=0 einfügen...
11.03.2008 19:02:00
i
... vor der Anweisungszeile
While strF = rng.Offset(zH, 0).Formula: zH = zH + 1: Wend
ist die Zuweisung zH = 0 einzufügen. Mit zH wird die Höhe des Bereichs der eindimensionalen(!) Zellenformel ermittelt, sobald eine Matrixformel angetroffen wird.
Gruß,
Uwe

AW: Matrix-Formeln
12.03.2008 10:57:21
Born
Hallo ingUR,
Dein kleines Makro war der entscheidende Tipp. Ich mußte es zwar etwas anpassen, aber nun macht es genau das, was ich benötige.
Nochmals vielen Dank an alle,
M. Born
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige