Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[LAMBDA] CONDENSE
#1
=CONDENSE(Bereich;[links_ohne]) schiebt gleiche Folgesätze zusammen

=LAMBDA(Bereich;[links_ohne];LET(
x;Bereich;
w;WEGLASSEN(x;;1);
y;NACHZEILE(w;LAMBDA(a;TEXTVERKETTEN("-";;a)));
b;WENN(VSTAPELN(1;--(WEGLASSEN(y;1)<>WEGLASSEN(y;-1)));SEQUENZ(ZEILEN(y)););
z;SCAN(;b;LAMBDA(c;a;WENN(a;a;c)));
a;LET(x;VSTAPELN(0;VERGLEICH(z;z));WEGLASSEN(x;1)-WEGLASSEN(x;-1));
WEGLASSEN(FILTER(HSTAPELN(a;INDEX(INDEX(x;;1);z);w);a);;links_ohne)))


benannt als CONDENSE

Funktionserläuterung:
x: Der Bereich wird übergeben
w: Die erste Spalte wird weggenommen (w ist also der zusammenzuschiebende Rest)
y: w wird zeilenweise verkettet
b: Identische Folgesätze (bezogen auf y) erhalten eine 0, sonst ihre bisherige Satznummer
z: b=0 erhält die vorangehende Satznummer (FILL)
a: Über die (DECUM)ulierung von z werden die Anzahlen pro Satz ermittelt; Wiederholer bekommen die 0.
Die nebeneinandergestellten a;z;w werden nach a<>0 gefiltert. Werden die Anzahlen nicht benötigt, werden sie mit links_ohne=1 nicht berücksichtigt, mit links_ohne=2 wird auch der Inhalt der ersten Spalte von x nicht berücksichtigt.

Szenario A1:D5:
Alpha__ 1 0 1
Beta___ 1 0 1
Gamma__ 0 1 1
Delta__ 1 0 1
Epsilon 1 1 0


Beispiele:
=CONDENSE(A1:D5)
2 Alpha__ 1 0 1
1 Gamma__ 0 1 1
1 Delta__ 1 0 1
1 Epsilon 1 1 0


=CONDENSE(A1:D5;1)
Alpha__ 1 0 1
Gamma__ 0 1 1
Delta__ 1 0 1
Epsilon 1 1 0

=CONDENSE(SORTIERENNACH(A1:D5;NACHZEILE(B1:D5;LAMBDA(a;TEXTVERKETTEN("-";;a)));-1))
1 Epsilon 1 1 0
3 Alpha__ 1 0 1
1 Gamma__ 0 1 1


Anmerkungen:
Im letzten Beispiel werden die letzten drei Spalten hierarchisch absteigend sortiert. Der vorher ERSTE übereinstimmende Begriff wird vorangestellt, wie bei den beiden vorangehenden Beispielen auch. Da das optionale Argument links_ohne ausgelassen wird, wird die Anzahl der Datensätze vorangestellt. Durch den Sort wird sinngemäß ein EINDEUTIG erreicht, aber mit mehr Information durch die zusätzlichen beiden linken Spalten. Am ersten Beispiel sieht man, dass CONDENSE die Reihenfolge beachtet, und dass sinngemäß EINDEUTIG nur lokal für jeweils benachbarte gleiche Datensätze angewendet wird. EINDEUTIG() wird nicht verwendet. CONDENSE ist UNIQUE.PARTIAL, welches viel mehr Zeilen hat, weil es damals wichtige dynamische Funktionen noch nicht gab, im Ergebnis sehr ähnlich.
Antworten Top
#2
Moin,

sehr schöne Funktion :-)

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste