Excel Kreuztabelle automatisch ausfüllen lassen?

2 Antworten

Mit Index ist es schon möglich. Vergleich braucht man nicht, man kann die Mathematik nutzen. Hier ein Beispiel

Bild zum Beitrag

Den grünen Bereich habe ich händisch eingegeben wie du, im rosafarbenen sind Formeln hinterlegt, nämlich

=1-INDEX($A$1:$F$6;SPALTE();ZEILE())

Man zieht also von 1 den eingegebenen Gegenwert ab und verwendet SPALTE() für den Zeilenindex sowie ZEILE() für den Spaltenindex.

Die Tabelle ist noch nicht dynamisch bezüglich Anzahl der Spieler. Das kann man lösen, indem man die Anzahl abfrägt und mit der aktuellen Spaltennummer vergleicht. Die Tabelle wird dann nur soweit ausgefüllt, wie es Spieler in Spalte A gibt. Das wäre dann etwa so:

=WENN(ANZAHL2($A:$A)>=SPALTE();1-INDEX($A:$Z;SPALTE();ZEILE());"")

Ok, war jetzt dann doch vorgekaut :)

Im übrigen, mit Makros kann man die gleiche Zelle sowohl für Eingabe als auch Ausgabe von Werten verwenden (bezogen auf deinen ersten Satz).

 - (Microsoft Excel, Microsoft Office, Matrix)

Gipfelstuermer 
Beitragsersteller
 16.05.2020, 11:42

schon mal danke dafür, die Formel wenn ich sie mir im nachhinein so betrachte ist nicht annähernd so kompliziert wie ich gedacht habe.

Ja da mit den Makros das weiß ich, aber nicht immer ist ein Makro zielführend und bei normalem Excel denke ich halt immer noch an Formeln ;-)

1
Hannes62a  16.05.2020, 10:48

Sehr coole Lösung! DH!

1
DeeDee07  16.05.2020, 10:01

Nachtrag:

Möglicherweise ist es sinnvoller, statt die Anzahl der Spieler abzufragen, zu überprüfen, ob im hellgrünen Bereich etwas eingetragen ist, und nur dann den Wert zu berechnen, sonst leer lassen, etwa

=WENN(INDEX...<>"";1-INDEX...;"")

1
Gipfelstuermer 
Beitragsersteller
 16.05.2020, 13:38
@DeeDee07

Also ich habe das für meinen Fall nochmal etwas probiert, aber stoße da für mich auf kleine Probleme, da auf jedem Arbeitsblatt mehrere solcher Kreuztabellen untereinander kommen, ist die Auswahl über A:A wenig Hilfreich, da sonst die unteren mitgezählt werden. Außerdem habe ich über jeder Tabelle Führungszellen, welche die Tabelle kurz beschreiben, auf deine Formel angewandt musste ich die dementsprechend abändern.

=1-INDEX($A$1:$F$6;SPALTE()+2;ZEILE()-2)

das Problem ist leider nur das Zeile und Spalte ja die Zeile bezogen auf das gesamte Arbeitsblatt ermittelt, ich hätte es aber gerne, dass es sich nur auf den aktuellen Bereich bezieht, da es somit die Kopierbarkeit gewährleistet für die darunterliegenden Tabellen. die kann ich im Falle deiner Formel leider nicht erkennen oder mache ich da einen Denkfehler? Schaue mir nunmal die Lösung von @Hannes62a an

1
DeeDee07  16.05.2020, 13:44
@Gipfelstuermer

Ich wusste nicht, dass es mehrere Tabellen untereinander gibt. Du musst dann den Index-Bereich beschränken. Für ZEILE und SPALTE kannst du auch Bezüge als Argumente verwenden, also etwa ZEILE(A1).

Wenn du die Formel dann einmal für jede Tabelle anpasst, kannst du sie (mit Bezugsargumenten) in die restlichen Zellen kopieren.

1

Ich hatte eine ähnliche Idee wie DeeDee07, verwende aber die Funktion Bereich.Verschieben. Dadurch wird es egal, wie viele Spieler mitspielen. Natürlich muss die Matrix quadratisch sein. Leere Zellen werden als Null interpretiert.

Auch die Position der linken oberen Ecke ist dynamisch. Ich habe sie willkürlich auf A13 gelegt. Man kann aber auch Zeilen/Spalten einfügen oder löschen.

Der Grundgedanke ist ähnlich: 1 - der gespiegelten Zelle. Wenn die Zielzelle beispielsweise 1 Spalte rechts und drei Zeilen unterhalb der oberen linken Ecke liegt, muss sie auf die Zelle zugreifen, die 1 Zeile unterhalb und drei Spalten rechts von der oberen linken Ecke liegt.

DeeDee07's Vorschlag, mit Wenn abzufragen, ob in der Quellzelle schon etwas eingetragen ist, geht hier natürlich auch.

Spoiler Alarm:

=1-BEREICH.VERSCHIEBEN($A$13;SPALTE()-SPALTE($A$13);ZEILE()-ZEILE($A$13))

Gruß

Hannes


Gipfelstuermer 
Beitragsersteller
 16.05.2020, 13:55

Vielen Dank dafür, diese Formelvariante gefällt mir wesentlich besser als die oben genannte, aus genau dem oben kritisierten Punkt, das einzige was ich hier immer anpassen muss ist der Bezugspunkt.
Leider lässt es Excel nicht zu nicht quaderförmige Bereiche zu kopieren, sodass ich dann doch jede Formel einzeln wieder kopieren muss.

Ansonsten könnte ich den Bezugspunkt nämlich ohne die "$" schreiben und kopiere mir dann den kompletten Bereich, indem die Formel Anwendung findet in jeden anderen Bereich, der die gleiche Größe aufweist, egal wo sie auf dem Arbeitsblatt wäre und es würde ohne Anpassung des Bezugspunktes funktionieren.

Ich werde hierzu mal ein Mechanismus überlegen auch das zu dynamisieren, vielleicht komme ich auf eine Idee.

Auf jeden Fall danke für deine Anregung.

1
Hannes62a  16.05.2020, 16:25
@Gipfelstuermer

Du kannst tatsächlich per Suchen/Ersetzen alle $A$13 durch A13 ersetzen.

Dann kopierst Du die gesamte Matrix an die Stelle, an der Du sie haben willst. Den Eingabebereich kannst Du per Mehrfachauswahl bei gedrückter STRG Taste (Mac: CMD Taste) selektieren und dann löschen. Diese halbleere Matrix würde ich als Template irgendwo (z.B. andere Tabelle) abspeichern. Von dort kannst Du sie Dir dann immer per Copy/Paste der gesamten Matrix neu aufbauen. Die einzelnen Formeln brauchst Du dann nicht anzufassen.

1
DeeDee07  16.05.2020, 11:10

Ebenfalls eine gute Lösung!

1