Basierend auf den letzten Blog-Eintrag, habe ich mir die Frage gestellt, ob es auch möglich ist mit einer Matrixformel die Liste um die doppelt vorkommenden Einträge zu bereinigen.

Ausgangslage ist also eine Liste (links) und Ziel ist es eine um doppelte Einträge bereinigte Liste (rechts)

Liste bereinigen mittels Matrix Formel

Unter Excelformeln.de findet man eine funktionierende Lösung mit einer Matrixformel. Diese funktioniert aber nur eingeschränkt.

Wenn die Liste nicht in der Zeile 1 anfängt, oder dergleichen, kommt es zu Fehlern, wie nachfolgender Screenshot zeigt:

So wirklich zufriedenstellend ist in meinen Augen die Lösung nicht, zumal mittels VBA recht einfach eine derartige Lösung gebastelt werden kann.

Liste bereinigen mittels VBA

Wie folgende Screenshots zeigen funktioniert das sowohl bei senkrecht als auch waagrecht ausgerichteten Ausgangsmaterial. Und auch die Ergebnisliste kann je nach Geschmack angeordnet werden.

Jetzt existieren (in meinen Augen) jedoch noch 2 Schönheitsfehler:

  • kann man die Listen nicht gleich auch sortieren
  • wie sieht es bei mehrspaltigen Listen aus.

Liste bereinigen und sortieren mittels VBA

Wie bereits angesprochen, wäre es schön die Listen nicht nur um doppelte Werte zu bereinigen, sondern auch zu sortieren. Zum Thema sortieren unter VBA gibt es folgende Anleitung: Array Sortieren.

Der adaptierte Code würde dann so aussehen:

Das funktioniert natürlich auch mit Text

Liste aufsummieren

Etwas kompizierter wird es mit mehreren Spalten, wovon nach einer Sortiert, weitere übernommen und nochmals weitere aufsummiert werden sollen. Also in etwa sowas (inklusive dessen Umsetzung als Pivot Tabelle)

Dies kann man mit der SummeWENN Funktion Lösen, wenn man die Liste (im konkreten Fall die Kontonummer) um die Duplikate bereinigt hat.

Eine schönere – und weitaus mächtigere – Lösung ist die Funktion Liste_aufsummieren. 

weiterführende Links