Zählen in einer Matrix, ohne Skript

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Stefan HE
**
Beiträge: 25
Registriert: Sa, 28.03.2015 22:08

Zählen in einer Matrix, ohne Skript

Beitrag von Stefan HE »

Guten Abend,
ich schlage mich derzeit mit einem Männer/Frauen/Problem herum:
Eine Zahlenfolge z.B. 1100 1110 0011 steht z.B. für nebeneinandersitzende Menschen, wobei die verschiedenen Zahlen Mann bzw. Frau repräsentieren würden.
Diese Zahlen stehen zum Austesten derzeit noch jeweils einzeln untereinander und sind aus Matrixformeln hervorgegangen, am Ende soll die Formel auch nur in einer Zelle stehen.
Ich möchte nun ermittelt bekommen, wie oft die "1" hintereinander kommt. Das sind hier 3 (nicht 4, also kein Kreis).
Meine Idee ist, dass eine weitere Matrixformel eine zweite Spalte wie folgt liefert
1 1
1 2
0 0
0 0
1 1
1 2
1 3
0 0
0 0
0 0
1 1
1 2

Dann könnte ich mit {=MAX(spalte1*spalte2)} mir die 3 ausgeben lassen.
Ja, so wie es da steht, kann auch eine einfache Hilfsspalte mit Wenn-Funktion helfen, aber weil das ganze in Matrixformeln eingebettet ist, geht das nicht wegen des Selbstbezugs.

Wer kann helfen oder hat eine andere Idee?

Danke und Gruß,
Stefan

libre office 4.1.6.2
Karolus
********
Beiträge: 7431
Registriert: Mo, 02.01.2006 19:48

Re: Zählen in einer Matrix, ohne Skript

Beitrag von Karolus »

Ich würde eine Zelle mit 110011100011 per →Daten→Text in Spalten→Trennzeichen `0` [x]Trennzeichen zusammenfassen auf mehrere aufteilen und dann:

Code: Alles auswählen

=MAX(LÄNGE(A1:K1))
als Matrixformel benutzen.

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zählen in einer Matrix, ohne Skript

Beitrag von clag »

Hallo Stephan HE,

wie wäre es denn mit einer eigenen Funktion?
Ist zwar doch "skript" wird aber wie eine Formel eingesetzt.
Angenommen deine zu auszuwertende Zahlenreihe "1100 1110 0011" steht in C3,
dann ist die Anwendung dieser Funktion wie folgt

MAXSIGNINROW(C3;"1")

und das Ergebnis obiger Formel ist 3

Code: Alles auswählen

Function MAXSIGNINROW(sToCheck as string, sSign as string)
	for i = 1 to len(sToCheck)
		if mid(sToCheck,i,1) <> sSign then 
		nCnt = 0
		else
		nCnt = nCnt +1
		if nCnt > nMax then nMax = nCnt 
		end if
		next
	MAXSIGNINROW = nMax
End Function
das ist doch erheblich komfortabler als dein jetziger Ansatz finde ich jedenfalls ;)
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Zählen in einer Matrix, ohne Skript

Beitrag von F3K Total »

Hi,
angenommen deine Binärreihe steht in Zelle A1, dann versuche mal diese Matrixformel

Code: Alles auswählen

{=MAX(NICHT(ISTFEHLER(FINDEN(WIEDERHOLEN(1;ZEILE($A$1:$A$12));A1;1)))*ZEILE($A$1:$A$12))}
Gruß R
Karolus
********
Beiträge: 7431
Registriert: Mo, 02.01.2006 19:48

Re: Zählen in einer Matrix, ohne Skript

Beitrag von Karolus »

Hallo
@F3K Total:
Genial!
Ich hab noch WENNFEHLER eingebaut (verfügbar in LibreOffice

Code: Alles auswählen

=MAX( WENNFEHLER(FINDEN(WIEDERHOLEN(1;ZEILE(A1:A12)) ; A1 )>0;0) * ZEILE(A1:A12) )
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Stefan HE
**
Beiträge: 25
Registriert: Sa, 28.03.2015 22:08

Re: Zählen in einer Matrix, ohne Skript

Beitrag von Stefan HE »

Ja, ich kann mit diesem Board noch nicht richtig umgehen Entschuldigt bitte:



Guten Morgen,
vielen Dank für alle Antworten, ich benutze nun folgende Formel, sie bezieht sich auf das binäre Wort in Zelle C7:

Code: Alles auswählen

=SUMMENPRODUKT(MAX(NICHT(ISTFEHLER(FINDEN(WIEDERHOLEN(1;ZEILE($A$1:INDEX(A$1:A$1048576;LÄNGE(C7))));C7;1)))*ZEILE($A$1:INDEX(A$1:A$1048576;LÄNGE(C7)))))

Das ist die Formel von F3 Total, allerdings ist der Teil Zeile erweitert, sodass immer die Länge des Wortes berücksichtigt wird. Das macht

Code: Alles auswählen

ZEILE($A$1:INDEX(A$1:A$1048576;LÄNGE(C7)))
.

Ohne das Summenprodukt vorneweg erhält man die einspaltige Matrix mit der richtigen Maximalzahl, Summenprodukt dampft es in eine Zelle ein.

DANKE NOCHMALS!

Schöne Grüße,
Stefan
Karolus
********
Beiträge: 7431
Registriert: Mo, 02.01.2006 19:48

Re: Zählen in einer Matrix, ohne Skript

Beitrag von Karolus »

Hallo

Code: Alles auswählen

ZEILE($A$1:INDEX(A$1:A$1048576;LÄNGE(C7)))
besser vielleicht die Kirche im Dorf lassen und:

Code: Alles auswählen

ZEILE(VERSCHIEBUNG($A$1;0;0;LÄNGE(C7))
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Zählen in einer Matrix, ohne Skript

Beitrag von F3K Total »

Moinsen,
Stefan HE hat geschrieben:... Summenprodukt dampft es in eine Zelle ein.
auf das Summenprodukt kannst Du verzichten.
Wenn ich alte Matrixformelreste entferne* und in einer Zelle die folgende Formel (Danke Karolus, für die "Verschiebung") mit STRG+SHIFT+ENTER abschliesse, steht das Ergebnis in nur dieser einen Zelle.

Code: Alles auswählen

{=MAX(NICHT(ISTFEHLER(FINDEN(WIEDERHOLEN(1;ZEILE(VERSCHIEBUNG($A$1;0;0;LÄNGE(C7))));C7;1)))*ZEILE(VERSCHIEBUNG($A$1;0;0;LÄNGE(C7))))
Gruß R

Info:
Matrixformeln passen ihren, von der Ersteingabe herrührenden, Ausgabe-Zellbereich bei Änderungen nicht automatisch an.
Dieses Verhalten wird der Grund dafür sein, dass du eine einspaltige Matrix erhalten hast.
Beispiel: Gib die Formel

Code: Alles auswählen

{=ZEILE(A1:A10)}
als Matrixformel ein. Ändere sie dann auf

Code: Alles auswählen

{=ZEILE(A1:A8)}
-> du erhältst einen NV-Fehler in den Zellen 9 und 10. Ändere sie nun auf

Code: Alles auswählen

{=ZEILE(A1:A12)}
-> die Zeilen 11 und 12 fehlen
Nur Löschen und Neueingabe funktioniert.
F1 Hilfe hat geschrieben:*
Bearbeiten von Matrixformeln
1. Wählen Sie den Zellbereich oder die Matrix aus, die die Matrix enthält. Um die ganze Matrix auszuwählen, positionieren sie den Cursor innerhalb der Matrix und drücken Strg+ / , wobei / das Divisionszeichen auf der nummerischen Tastatur ist.
Nach dem Selektieren mit Strg+ / kann der ganze Matrixformelbereich gelöscht werden.
Stefan HE
**
Beiträge: 25
Registriert: Sa, 28.03.2015 22:08

Re: Zählen in einer Matrix, ohne Skript

Beitrag von Stefan HE »

Hallo,
R: Stimmt, eigentlich brauche ich das Summenprodukt nicht.
Wenn ich es jedoch weglasse und diese Formel dann in andere Zeilen weiterziehe, zeigt es während des Ziehens neben dem Mauszeiger in einem kleinen Infotext z.B. "Matrixformel 2 Z x 1 S" an. Beim Loslassen habe ich dann nur #NAME? in den einzelnen Zellen stehen.

Auch die Verschiebung klappt. Die andere Variante ist halt seit einiger Zeit in meinem "Baukasten".


Gruß,
Stefan
Dateianhänge
kaenguru.ods
(19.93 KiB) 161-mal heruntergeladen
Zuletzt geändert von Stefan HE am Mo, 30.03.2015 13:33, insgesamt 1-mal geändert.
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Zählen in einer Matrix, ohne Skript

Beitrag von F3K Total »

Stefan HE
**
Beiträge: 25
Registriert: Sa, 28.03.2015 22:08

Re: Zählen in einer Matrix, ohne Skript

Beitrag von Stefan HE »

Danke : )
Antworten