[Calc] Lässt sich das automatisieren?

Hallo,

ich habe eine Tabelle mit vielen Einträgen (Namen) untereinander.
Auf einem anderen Tabellenblatt möchte ich gerne nur eine dieser Spalten
dargestellt haben - aber wegen der Länge aufgeteilt in drei Abschnitte.

Natürlich ist die Anzahl der Einträge insgesamt variabel. Die Formel
müsste also ermitteln, wie viele Einträge die Liste auf Blatt 1 hat, das
dritteln, sinnvoll runden, so dass auf Blatt 2 drei (fast) gleich lange
Spalten entstehen.

Bisher mache ich diesen Schritt immer von Hand, bei häufigen Änderungen
ist das leicht nervig.

Danke
Micha

Hallo,

ich habe eine Tabelle mit vielen Einträgen (Namen) untereinander.
Auf einem anderen Tabellenblatt möchte ich gerne nur eine dieser Spalten
dargestellt haben - aber wegen der Länge aufgeteilt in drei Abschnitte.

Natürlich ist die Anzahl der Einträge insgesamt variabel. Die Formel
müsste also ermitteln, wie viele Einträge die Liste auf Blatt 1 hat, das
dritteln, sinnvoll runden, so dass auf Blatt 2 drei (fast) gleich lange
Spalten entstehen.

Bisher mache ich diesen Schritt immer von Hand, bei häufigen Änderungen
ist das leicht nervig.

Am einfachsten geht das mit VERSCHIEBUNG. Und, falls sinnvoll möglich,
würde ich nicht eine blockweisen Aufteilung empfehlen, sondern eine
abwechselnde. D. h. eine Sequenz A, B, C, D, E, F, G, H, I wird nicht
spaltenweise in A, B, C / D, E, F / G, H, I aufgeteilt, sondern in A, D,
G / B, E, H / C, F, I. Blockweise Verteilung ist zwar auch möglich,
aber *deutlich* aufwendiger zu realisieren.

=WENN(VERSCHIEBUNG($A$1;ABRUNDEN((ZEILE()-1)*3)+(SPALTE()-SPALTE($B1));0))

Oder aber, damit es schöner aussieht:

=WENN(VERSCHIEBUNG($A$1;ABRUNDEN((ZEILE()-1)*3)+(SPALTE()-SPALTE($B1));0)="";
""; VERSCHIEBUNG($A$1;ABRUNDEN((ZEILE()-1)*3)+(SPALTE()-SPALTE($B1));0))

Wolfgang

Hallo Micha,

folgender Lösungsansatz - QUICK AND DIRTY ;-))

Tabelle1 Spalte A: Da stehen alle Namen, ich habe der Einfachheit fortlaufende Zahlen genommen.

Tabelle2 Spalte A

=INDIREKT("$Tabelle1.A"&ZEILE()+AUFRUNDEN(ANZAHL2($Tabelle1.$A$1:$Tabelle1.$A$1000)/3;0)*0)

Hier Faktor 0 !

Obiges runter ziehen von A1 bis beispielsweise A100

Tabelle2 Spalte B

=INDIREKT("$Tabelle1.A"&ZEILE()+AUFRUNDEN(ANZAHL2($Tabelle1.$A$1:$Tabelle1.$A$1000)/3;0)*1)

Hier Faktor 1 !

Obiges runter ziehen von B1 bis beispielsweise B100

Tabelle2 Spalte C

=INDIREKT("$Tabelle1.A"&ZEILE()+AUFRUNDEN(ANZAHL2($Tabelle1.$A$1:$Tabelle1.$A$1000)/3;0)*2)

Hier Faktor 3 !

Obiges runter ziehen von C1 bis beispielsweise C100

Tabelle 2 Zelle D1 (Nur zur Erläuterung, benötigt man später nicht !)

Hier steht die Formel, mit der die Einträge pro Spalte (A-C) berechnet werden:

AUFRUNDEN(ANZAHL2($Tabelle1.$A$1:$Tabelle1.$A$1000)/3;0)

Das vorläufige Ergebnis:

Tabelle1

[A]
01
02
03
::
11
12
13
::

Tabelle2 (führende Nullen hier nur zu besseren Darstellung - ZZ = Zeilennummer - AA = Spalte A usw - DD = berechnete Anzahl Zeilen pro Spalte - Hier 5 bei 13)

ZZ | AA BB CC DD

01 | 01 06 11 05
02 | 02 07 12
03 | 03 08 13
04 | 04 09 00
05 | 05 10 00
06 | 06 11 00
07 | 07 12 00
08 | 08 13 00
09 | 09 00 00
10 | 10 00 00
11 | 11 00 00
12 | 12 00 00
13 | 13 00 00
14 | 00 00 00
15 | 00 00 00
:: | :: :: ::

Das sieht schon mal ganz gut aus.

Was jetzt noch fehlt ist eine "Bedingte Formatierung" für beispielsweise A1:C100, welchen die Formel

=AUFRUNDEN(ANZAHL2($Tabelle1.$A$1:$Tabelle1.$A$1000)/3;0) nutzt, 1 addiert, also

=AUFRUNDEN(ANZAHL2($Tabelle1.$A$1:$Tabelle1.$A$1000)/3;0) + 1

und damit für alle Zeilen, in diesem Beispiel wäre es ab Zeile 6, die Schrift der Zellen der Spalten A,B und C auf Weiß setzt - dann würdest Du nur sehen, was Du sehen willst/sollst.

Bezüglich "Bedingte Formatierung" bin ich nicht fit genug für eine Lösung, aber da gibt es hier im Forum bestimmt jemanden, der das kann.

Die Tabelle "Micha.ods" als Dateianhang via CC: "michakuehn@habmalnefrage.de <mailto:michakuehn@habmalnefrage.de>", da kannst Du mit dem vorläufigen Ergebnis mal "spielen" und musst Dich nicht erst mit dem Aufbau der Tabelle "plagen" ...

Zusammengefasst:

Eine Formel für alle Spalten

=INDIREKT("$Tabelle1.A"&ZEILE()+AUFRUNDEN(ANZAHL2($Tabelle1.$A$1:$Tabelle1.$A$1000)/'S';0)*'F'), wobei das

mit

'S' = Anzahl der Spalten - Für alle Formeln gleich
'F' = Faktor beginnend bei 0 für Spalte A, 1 für Spalte B, 2 für Spalte C usw.

welche auch schon die Teilformel

=AUFRUNDEN(ANZAHL2($Tabelle1.$A$1:$Tabelle1.$A$1000)/3;0)+1

für die noch zu realisierende bedingte Formatierung enthält.

Und wenn Du mal 4 Spalten haben möchtest:

=INDIREKT("$Tabelle1.A"&ZEILE()+AUFRUNDEN(ANZAHL2($Tabelle1.$A$1:$Tabelle1.$A$1000)/4;0)*3)

Viele Grüße
Hans-Werner :-))

------ Originalnachricht ------

> =WENN(VERSCHIEBUNG($A$1;ABRUNDEN((ZEILE()-1)*3)+(SPALTE()-SPALTE($B1));0))

Ups, sorry; in dem Fall natürlich ohne das WENN:

=VERSCHIEBUNG($A$1;ABRUNDEN((ZEILE()-1)*3)+(SPALTE()-SPALTE($B1));0)

Wolfgang

Hallo Micha,

ANZAHL2($Tabelle1.$A$1:$Tabelle1.$A$1000)

zählt alle Zeilen in "Tabelle1", in denen etwas steht.

Die Anzahl Zeilen dividiert durch 3 und aufgerundet und addiert zur jeweils ersten Zeile (bzw. deren Nummer) der Spalten in der Tabelle2, ergibt die erste Zeilennummer, ab der in der jeweiligen Spalte (A,B,C) der Tabelle2 die Namen der Tabelle 1 angezeigt werden sollen.

Da dies für diese 3 Spalten in der Tabelle2 unterschiedliche Zeilennummern sein sollen, der zusätzliche Faktor in der Formel am Schluss Spalte A => *0, Spalte B *1, Spalte C *2).

Warum benötigst Du diese "-7"-Zeilen Korrektur ?

Beschreibe doch mal Deine Tabelle. In welcher Zeile beginnen die Namen ? Ist was über und/oder unter den Namen ?

Grüße
Hans-Werner :-))

------ Originalnachricht ------

Und wenn nicht, frag einfach nach ...

Grüße
Hans-Werner :-))

PS: Bitte an die Liste, nicht an meine private Mail-Adresse ...

------ Originalnachricht ------

OoOHWHOoO schrieb:

PS: Bitte an die Liste, nicht an meine private Mail-Adresse ...

Lieber Hans-Werner,

ich hatte dir jetzt einmal doch bewusst alleine geantwortet, weil ich
meine mitgeschickte Datei zwar ein wenig anonymisiert habe, aber eben
doch nicht so ganz. Ich mag das ungern hier so in die Welt posaunen.

Liebe Grüße
Micha

Hallo Micha,

das freut mich :-))

"[...] Die überflüssigen Zeilen werde ich wohl mit einem Wenn() löschen statt mit bedingter Formatierung. [...]

Na klar, ich wollte die Formeln für den Betrachter nicht noch zusätzlich verkomplizieren, deshalb das mit der "bedingten Formatierung".

Anhang ist gelöscht !

Viele Grüße
Hans-Werner :-))

------ Originalnachricht ------