Excel Matrix als Liste?

2 Antworten

Was du machen möchtest ist so ein typischer "Loop" im programmieren. Das geht in Excel nicht so einfach (zumindest nicht ohne VBA - Makroprogrammierung).

Die beste Variante wäre deine Tabelle in Bild1 umzuformatieren, so dass du es per Pivot oder Spaltensumme addieren kannst.

Dafür müsste es eben eine Spalte geben in der du nur Angriffswerte hast, eine für Verteidigung etc.

lasttobi12 
Fragesteller
 27.03.2018, 16:01

Danke erst mal für deine Antwort.

Alle gleichen "Attribute" in eine separate Spalte zu packen klappt leider nicht, ich könnte höchstens alle "Attribute" in eine Spalte packen, was vermutlich nicht sonderlich viel bringen würde und noch da zu dezent unübersichtlicher wäre.

Gibt es denn eine Funktion, die mir die Anzahl eines bestimmten Elements innerhalb einer Matrix ausgibt? Dann könnte ich die Matrix umschreiben (statt Angriff 2 dann eben 2x eine Zelle mit "Angriff), damit z.b. nach der Anzahl von "Angriff" gesucht wird.

Dann müsste ich nur noch die Problematik mit der Auflistung der verschiedenen Elementen lösen, welche ich bis jetzt mit verschachtelten WENN-Funktionen zu lösen versucht hab. Allerdings wird das ziemlich hässlich ^^"

0
lasttobi12 
Fragesteller
 27.03.2018, 16:11
@lasttobi12

Mit ZÄHLENWENNS bekomm ich das ja sogar recht einfach hin ... ^^"

Heißt ich müsste nur noch die verschiedenen Attribute meiner Matrix untereinander auflisten. Hast du dafür zufällig eine umsetzbare Idee?

0

Wenn ich das richtig sehe, geht Dein auszuwertender Datenblock von B8:M17 (andernfalls müsstest du anpassen). Dafür kann ich Dir eine halbwegs überschaubare Lösung mit 3 Hilfsspalten und 2 Ergebnisspalten anbieten.

Die Texteinträge werden in fallender Reihenfolge gelistet, bei Mehrfachnennungen der "Waffen" entstehen Lücken, bleibt aber überschaubar (hoffe ich :-)

Zunächstmal musst Du das Datenfeld zu einer Doppelspalte umformen.

Schreibe dazu in B19: =B8 und kopiere das bis M28.

Nun markierst du den Block von D18:M28 und ziehst ihn nach B29, also unter den vorhandenen. Dieses Vorgehen wiederholst Du bis alle Kopien nach B:C gebracht sind (Du also eine zweispaltige Liste hast.

Nach D19 setzt Du die Formel: =SUMMENPRODUKT((B19>$B$19:$B$78)*1)

und ziehst sie runter bis Ende der Liste.

Soweit die Hilfsspalten. nun diese Formel nach E19: =INDEX($B$19:$B$78;VERGLEICH(KGRÖSSTE($D$19:$D$78;ZEILEN(D$19:D19));$D$19:$D$78;0))

runterziehen. Diese Formel nach F19: =WENN(ZÄHLENWENN($E$19:E19;E19)=1;SUMMENPRODUKT(($B$19:$B$78=E19)*($C$19:$C$78));"-")

ebenfalls runterziehen.

Das Ergebnis sollte nun in etwa so dastehen, wie gefordert.

Man könnte sich die dritte Hilfsspalte zwar sparen, aber dann würde es sehr undurchschaubar. Auch könnte man die Leerzellen mit weiteren Formelspalten noch wegkriegen, aber das lohnt nicht die Mühe.

Hoffe, Du kommst mit dieser Anweisung zurecht!

lasttobi12 
Fragesteller
 28.03.2018, 00:38

Werde mich gleich mal dransetzen das umzusetzen. Rückmeldung gibt es dann, wenn es funktioniert oder mein Gehirn dir nicht folgen kann :)

0
lasttobi12 
Fragesteller
 28.03.2018, 00:49

Okay, das Problem ist nur, dass meine Matrix sehr dynamisch ist und sich oft verändert, daher ist das, mit dem manuellen schieben/kopieren sehr ungünstig für meinen Fall. Ich bräuchte etwas, dass meine Matrix wenn möglich ohne jegliche manuelle Umformung zu einer Liste umwandelt.

Mittlerweile bin ich zu folgendem Lösungsansatz gekommen:

Ich strukturiere meine Matrix um, dass z.b. aus "Angriff 3" 3x eine Zelle mit "Angriff" wird, was ohne großen Mehraufwand möglich ist. Dann lasse ich die Anzahl der "Angriff"-Zellen zählen. Damit komme ich zum gewünschten Ergebnis. Das einzige Problem bis jetzt liegt darin, dass ich mir 1x alle in der Matrix vorhandenen Attribute/Worte (außer "Slot 1" & "Slot 2" & "Slot 3") einmal (untereinander) ausgeben lassen muss. Das habe ich mit einer verschachtelten Wenn-Funktion probiert, allerdings wurde diese zu schnell viel zu hässlich und unübersichtlich...

Mein Problem wäre also gelöst, wenn ich es hinbekommen würde, mir jedes Wort, was in der Matrix vorkommt (siehe obige "außer-Klammer") einmal ausgeben zu lassen.

0
Iamiam  28.03.2018, 01:08

Korrektur ca Zeile 10:

Nun markierst du den Block von D19:M28

0