Excel Matrix als Liste?
Tag zusammen,
folgende Ausgangsstellung:
Ich habe eine Matrix vorliegen, in welcher mit Hilfe von INDEX und VERGLEICH Werte aus einer "Datenbank" gesucht und ausgegeben werden. (siehe Anhang: Bild1)
Nun soll die Matrix noch einmal als Liste ausgegeben werden, sodass die Daten untereinander aufgelistet werden und die Summe rechts daneben ausgegeben wird. (siehe Anhang: Bild2)
Gedanke meinerseits: Es soll also die Matrix durchgegangen werden und schauen, ob das Wort schon vorhanden ist und falls ja, dann soll es in der Liste rechts neben diesem, den Wert, der in der Matrix rechts neben dem gefunden Wert steht addieren. Falls das Wort noch nicht in der Liste vorhanden ist, dann soll es neu hinzugefügt werden und der Wert der in der Liste rechts daneben steht, rechts neben diesen geschrieben werden.
Anmerkung:
Die Worte/Zellen "Slot 1"/"Slot 2"/"Slot 3" sollen nicht als Werte in die Liste übernommen werden, müssten also aus der Matrix ausgeschlossen werden.
Mein Wissen in Excel reicht leider nicht aus, damit ich selbst auf einen Gedanken komme, der zielführend wäre. Um ehrlich zu sein bin ich mir nicht einmal sicher, ob das so umsetzbar ist, auch wenn ich das hoffe ^^"
Ich wäre über jeden Lösungsvorschlag oder auch gerne Ansätze/Anregungen zu solch einem sehr dankbar :)
Mit freundlichen Grüßen,
Tobi
Bild1:
Bild2:
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.
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?
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!
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.
Werde mich gleich mal dransetzen das umzusetzen. Rückmeldung gibt es dann, wenn es funktioniert oder mein Gehirn dir nicht folgen kann :)
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 ^^"