🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Zellbezug in einer Matrix berechnen

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
peaty
Beiträge: 17
Registriert: Fr 20. Jan 2012, 09:55

[gelöst] Zellbezug in einer Matrix berechnen

Beitrag von peaty » So 12. Mär 2023, 00:03

Hallo,
ich habe eine Matrix aus mehrern Spalten und Zeilen, in der ich die n größten Werte ausgeben will - soweit so gut, ist ja mit KGRÖSSTE oder AGGREGAT kein Problem.

Wo ich nicht weiter komme, ist wie ich den Zellbezug der größten Wertes ausgeben/berechnen kann. Habe schon mit den Funktionen INDEX und VERGLEICH rumprobiert, aber VERGLEICH geht nur mit einer Spalte / einer Zeile, aber nicht mit einer Matrix.
Kann mir jemand auf die Sprünge helfen, wie ich da am besten ran gehe?

Danke und Gruß
peaty
Zuletzt geändert von peaty am So 12. Mär 2023, 22:26, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2539
Registriert: Fr 10. Dez 2010, 10:01

Re: Zellbezug in einer Matrix berechnen

Beitrag von karolus » So 12. Mär 2023, 05:00

Hallo

Code: Alles auswählen

=INDEX(2_D_BEREICH ; VERGLEICH( senkrecht ) ; VERGLEICH( wagrecht ))
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

peaty
Beiträge: 17
Registriert: Fr 20. Jan 2012, 09:55

Re: Zellbezug in einer Matrix berechnen

Beitrag von peaty » So 12. Mär 2023, 08:08

karolus hat geschrieben:
So 12. Mär 2023, 05:00

Code: Alles auswählen

=INDEX(2_D_BEREICH ; VERGLEICH( senkrecht ) ; VERGLEICH( wagrecht ))
Geanu da komme ich ja nicht weiter, da ich bei VERGLEICH nur eine einspaltige oder einzeilige Matrix angeben kann; VERGLEICH(I15;B4:M10;0) funktioniert leider nicht;
oder meinst du mit VERGLEICH( senkrecht ) bzw. VERGLEICH( wagrecht ) senkreicht was anderes?

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2539
Registriert: Fr 10. Dez 2010, 10:01

Re: Zellbezug in einer Matrix berechnen

Beitrag von karolus » So 12. Mär 2023, 10:35

Hallo
index_vergleich_vergleich.ods
(16.01 KiB) 128-mal heruntergeladen
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

peaty
Beiträge: 17
Registriert: Fr 20. Jan 2012, 09:55

Re: Zellbezug in einer Matrix berechnen

Beitrag von peaty » So 12. Mär 2023, 20:29

Hallo Karolus,
deine Beispieldatei ist nicht das was ich brauche; ich hab mal eine Datei mit meinen Daten angehängt.
Auswertung.ods
(14.37 KiB) 111-mal heruntergeladen
In den Zellen I15 bis I24 habe ich die 10 größten Werte aus der Matrix B4:M9 ausgegeben; in den Zellen H15 bis H24 soll stehen wann diese Werte aufgetreten sind (z.B. Jun 2018, ...)

Gruß
peaty

mikele
* LO-Experte *
Beiträge: 1931
Registriert: Mo 1. Aug 2011, 20:51

Re: Zellbezug in einer Matrix berechnen

Beitrag von mikele » So 12. Mär 2023, 21:33

Hallo,
das ist schon ein bisschen aufwändiger, aber mit etwas Matrizenmultiplikation machbar

Code: Alles auswählen

=DATUM(SUMME(MMULT(MTRANS($B$4:$M$9=I15);JAHR($A$4:$A$9)));SUMME(MMULT(($B$4:$M$9=I15);MTRANS(MONAT($B$3:$M$3))));1)
Dateianhänge
Auswertung.ods
(19.04 KiB) 117-mal heruntergeladen
Gruß,
mikele

peaty
Beiträge: 17
Registriert: Fr 20. Jan 2012, 09:55

Re: Zellbezug in einer Matrix berechnen

Beitrag von peaty » So 12. Mär 2023, 22:26

mikele hat geschrieben:
So 12. Mär 2023, 21:33
Hallo,
das ist schon ein bisschen aufwändiger, aber mit etwas Matrizenmultiplikation machbar
Vielen lieben Dank, da wäre ich allein nie drauf gekommen.

Deine Formel enthält mit MTRANS und MMULT gleich 2 Funktionen, die ich bisher noch nie benutzt haben und um ehrlich zu sein, so ganz verstehen tue ich die Formel auch nicht - aber sie funktioniert und dafür nochmal meinen herzlichsten Dank.

mikele
* LO-Experte *
Beiträge: 1931
Registriert: Mo 1. Aug 2011, 20:51

Re: [gelöst] Zellbezug in einer Matrix berechnen

Beitrag von mikele » Mo 13. Mär 2023, 10:52

Hallo,
ein kurzer Versuch der Erläuterung: da die Verweis()-Funktionen stets nur einen einzeiligen bzw. einspaltigen Bereich zulassen, muss eine andere Lösung her.
Zunächst liefert :

Code: Alles auswählen

$B$4:$M$9=I15
liefert eine Matrix (6 Zeilen und 12 Spalten) die praktisch nur aus Nullen besteht und an der eine Stelle eine 1 hat.
Nun muss diese noch mit dem passen Zeilen-/Spaltenindex in verbindung gebracht werden. In deinem konkreten Fall wäre es der Monat (aus Zeile 3) bzw. das Jahr (aus Spalte A). Daraus kann man dann ein Datum bauen und im Format MMM JJJJ anzeigen lassen.
Nun gibt es die so genannte Matrizenmultiplikation, mit der man eine Matrix mit einer anderen Matrix multiplizieren kann. Dazu müssen "nur" die Zeilen und Spalten zueinander passen. Dahe rmuss ich z. B. aus der Zeile B3:M3 eine Spalte machen (mathematisch: die Zeile transponieren Mtrans()). Dass Ergebnis von

Code: Alles auswählen

MMULT(($B$4:$M$9=I15);MTRANS(MONAT($B$3:$M$3)))
ist dann eine Spalte von 6 Zeilen, die aus lauter Nullen besteht und nur an einer Stelle den Monat liefert. Die Summe aller dieser Werte ist dann natürlich auch der Monat.
Praktisch das Gleiche mache ich mit dem Jahr.
Das Verfahren geht schief, wenn ein gesuchter Wert mehrmals in der Liste auftaucht!!!
Mann könnte auch folgendes machen:

Code: Alles auswählen

=($B$4:$M$9=I15)*(ZEILE($B$4:$M$9)*100+SPALTE($B$4:$M$9))
würde (als Matrixformel mit Shift+Strg+Enter abgeschlossen) eine 6x12 Matrix liefern, die überall Nullen liefert und nur dort, wo der gesuchte Wert steht eine Zahl (in dem konkreten Fall die 407) deren Hunderter die Zeile (hier 4) und der Rest die Spalte (hier 7, also G) liefert.
Per

Code: Alles auswählen

=MAX(($B$4:$M$9=I15)*(ZEILE($B$4:$M$9)*100+SPALTE($B$4:$M$9)))
würde man dann den Wert erhalten, der in der größten Zeile/Spalte steht. Daraus könnte man dann wieder Monat und Jahr extrahieren ...
In deinem Fall, wenn also zwei gleiche Werte unter den Top Ten wären, wäre das aber auch problematisch ...
Besser wäre es für diese Art von Auswertung, wenn die Daten Zeilenweise vorliegen würden:
Feb 2018 12251
Mrz 2018 186360
...
Feb 2023 139893
Daraus ließe sich dann mit erheblich weniger Aufwand eine Gesamtübersicht und Top-Ten-Liste erstellen.
Anbei mal zwei Varianten: auf Tabelle 2 Übersicht und Top-Ten per Formel und alternativ zwei Pivottabellen, um ohne Formelaufwand eine Übersicht und Sortierung zu erhalten.
Dateianhänge
Auswertung2.ods
(25.74 KiB) 104-mal heruntergeladen
Gruß,
mikele

Helmut_S
* LO-Experte *
Beiträge: 756
Registriert: Di 9. Feb 2016, 19:27

Re: [gelöst] Zellbezug in einer Matrix berechnen

Beitrag von Helmut_S » Mi 15. Mär 2023, 08:50

Hallo, ich weiß, dass ich wieder einmal spät dran bin, aber vielleicht interessiert meine Lösung doch den einen oder anderen Leser hier im Forum.
Meine Lösung setzt voraus, dass das Layout der Tabelle etwas geändert werden kann. Durch die horizontale Anordnung der Jahreszahlen kommt mein Vorschlag mit der einfachen Funktion "Vergleich()" aus. Zum Testen habe ich die Werte der 2d-Matrix durch Zufallszahlen ersetzt. Bezüge sind bei Bedarf selbstverständlich anzupassen.
Gruß Helmut
Dateianhänge
Kreuztabelle_Auswertung03.ods
(21.46 KiB) 124-mal heruntergeladen
MX-Linux KDE + Linux-Mint Cinnamon


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten