Seite 1 von 1
MTRANS() "dynamisch"?
Verfasst: Mo 17. Nov 2025, 16:03
von hylli
Ich habe eine Tabelle mit Datensätzen die in 4 Spalten aufgeteilt sind.
Feld 01 | Wert 01 | Feld 13 | Wert 13
Feld 02 | Wert 02 | Feld 14 | Wert 14
Feld 03 | Wert 03| Feld 15 | Wert 15
Feld 04 | Wert 04 | Feld 16 | Wert 16
Feld 05 | Wert 05 | Feld 17 | Wert 17
...
Feld 12 | Wert 12 | Feld 24 | Wert 24
Nun möchte ich daraus auf separatem Tabellenblatt eine sauber Tabelle erstellen mit einer Zeile pro Datensatz:
Feld 01 | Feld 02 | Feld 03 | Feld 04 | ... | Feld 24
Wert 01 | Wert 02 | Wert 03 | Wert 04 | ... | Wert 24
Im neuen Tabellenblatt steht dann als Matrixformel z.B. in
A1: ={MTRANS(Tabelle1.A2:A13)}
M1: ={MTRANS(Tabelle1.C2:C13)}
A2: ={MTRANS(Tabelle1.B2:B13)}
M2: ={MTRANS(Tabelle1.C2:C13)}
Wie bekomme ich die weiteren Zeilen dynamisch hin?
Oder gibt es eine andere Lösung, die ich aktuell nicht sehe?
VG
Hylli
Re: MTRANS() "dynamisch"?
Verfasst: Mo 17. Nov 2025, 16:44
von Mondblatt24
Hallo,
du könntest
{=MTRANS(VSTAPELN(Bereich Feld 1-12; Bereich Feld 13-24))} verwenden.
Und dementsprechend das Gleiche für die Werte.
Es sei denn, du verwendest die in deiner Signatur angegebene LO Version, dann geht das bei dir nicht.
(VSTAPELN und diverse andere neue Funktionen gibt es seit Version 25.8.)
Gruß
Peter
Re: MTRANS() "dynamisch"?
Verfasst: Mo 17. Nov 2025, 18:08
von RPP63
Ich gestatte mir, zu bemängeln, dass die neuen Spill-Formeln eben leider nicht dynamisch sind.
Einmalig eingegeben, verharren sie im Spill-Bereich.
Es bleiben halt "herkömmliche" Matrix-Formeln und haben nichts von der Funktionalität derer von Google oder Microsoft.
Sorry dafür, ist aber so …
Gruß Ralf
Re: MTRANS() "dynamisch"?
Verfasst: Mo 17. Nov 2025, 20:27
von karolus
RPP63 hat geschrieben: ↑Mo 17. Nov 2025, 18:08
Ich gestatte mir, zu bemängeln, dass die neuen Spill-Formeln eben leider
nicht dynamisch sind.
Einmalig eingegeben, verharren sie im Spill-Bereich.
Es bleiben halt "herkömmliche" Matrix-Formeln und haben nichts von der Funktionalität derer von Google oder Microsoft.
Sorry dafür, ist aber so …
Solange der|die Quellbereiche eine statische Größe haben, und der Ausgabebereich ebenfalls statisch ist, gibts damit ja keine Probleme!
Eine weitgehend generische Formel für eine
unbekannte Zahl von gefüllten Zeilen in Tabelle1:
Code: Alles auswählen
=LET(source;MTRANS(FILTERN(Tabelle1.A:D;Tabelle1.A:A<>""));HSTAPELN(INDEX(source;ZEILE(A1));INDEX(source;ZEILE(A3))))
Die Formel kann dann mit gedrückter
Strg-taste eine Zeile nach unten kopiert werden.
Und um das Problem mit dynamischen Ausgabe-bereichen zu lösen:
Code: Alles auswählen
from com.sun.star.beans import PropertyValue as pv
def resize_FormulaArrays(*_):
doc = XSCRIPTCONTEXT.getDocument()
frame = doc.CurrentController.Frame
disp = XSCRIPTCONTEXT.ctx.ServiceManager.createInstance("com.sun.star.frame.DispatchHelper")
sheet = doc.CurrentController.ActiveSheet
ranges = sheet.queryContentCells(16) #all Formula[range]
for single in ranges:
if (formula:=single.ArrayFormula): # is there a ArrayFormula?
single.clearContents(16) # clear
arg = pv( Name="ToPoint", Value= single[0,0].AbsoluteName)
disp.executeDispatch(frame, ".uno:GoToCell", "", 0, (arg,))
arg = pv( Name="Formula", Value = formula[1:-1] )
disp.executeDispatch(frame, ".uno:InsertMatrix", "", 0, (arg,))
Re: MTRANS() "dynamisch"?
Verfasst: Di 18. Nov 2025, 08:55
von hylli
Danke mal für die Antworten! Schaue ich mir mal an.
Die Tabelle hat im Übrigen insgesamt über 55.000 Zeilen, die Datensätze sind vom Aufbau her jeweils gleich (groß).
In Microsoft Excel bin ich in dem Zusammenhang auf die Funktion =ZEILENUMBRUCH()gestoßen:
https://excelhero.de/funktionen/excel-z ... -funktion/
Die kann ich in Calc aber nicht verwenden.
Hylli
Re: MTRANS() "dynamisch"?
Verfasst: Di 18. Nov 2025, 09:57
von Mondblatt24
hylli hat geschrieben: ↑Di 18. Nov 2025, 08:55
=ZEILENUMBRUCH()gestoßen:
Die kann ich in Calc aber nicht verwenden.
Wie schon gesagt, nicht mit den Versionen aus deiner Signatur (Verfügbar ab Version 25.8.).
hylli hat geschrieben: ↑Di 18. Nov 2025, 08:55
über 55.000 Zeilen,
Und die möchtest du in 16.384 Spalten transponieren??