Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Merkwürdiges Verhalten bei dynamischem Array

Forumthread: Merkwürdiges Verhalten bei dynamischem Array

Merkwürdiges Verhalten bei dynamischem Array
23.06.2024 09:47:00
{Boris}
Hallo zusammen,

Auslöser für die Frage ist ein Thread im MS-Office-Forum: https://www.ms-office-forum.net/forum/showthread.php?t=389513

Bezogen auf meine Beispieldatei: https://www.herber.de/bbs/user/170409.xlsx

In Spalte A - ab A2 - stehen Werte (sortiert). Jeder Wert kann öfter vorkommen. Es soll zeilenweise gezählt werden.
Mit Hilfsspalte also:

=ZÄHLENWENN(A$2:A2;A2)

und runterkopieren.

Jetzt soll das Ganze aber als Spill erfolgen - also ohne Hilfsspalte.

Dazu hatte ich folgende Lösung:

=ZÄHLENWENN(INDIREKT("A2:A"&ZEILE(2:16));INDIREKT("A"&ZEILE(2:16)))
bzw.
=ZÄHLENWENN(INDIREKT("A2:A"&SEQUENZ(15;;2));INDIREKT("A"&SEQUENZ(15;;2)))

Wie sich aber herausstellt, zeigt diese Formel nicht in allen Excelversionen das gewünschte Ergebnis. Auch der Versuch, das Array mit den Suchwerten mit N() bzw. T() "zum Leben zu erwecken", scheint nicht (oder nur bedingt) zu funktionieren - es wird nur ein Array mit Nullen erzeugt.

Bei mir sieht das so aus - wie ist es bei Euch? Habt ihr korrekte Ergebnisse oder seht ihr Nullen?

Userbild

Woran liegt das? Und diesmal auch die Frage nach einer alternativen Spill-Lösung :-)

Danke vorab und viele Grüße

Boris
Anzeige

58
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachtrag
23.06.2024 10:03:06
{Boris}
Hallo zusammen,

im Web-Browser werden nur Nullen angezeigt - und so sieht das bei anderen wohl auch in der App-Version aus:

Userbild

VG, Boris
AW: Nachtrag
23.06.2024 13:14:58
Onur
Bei mir auch.
Und wo nicht?
AW: Nachtrag
23.06.2024 13:40:20
{Boris}
Z. B. bei mir stimmt das Ergebnis - siehe Screenshot im Eingangsthread.

VG Boris
Anzeige
AW: Nachtrag
23.06.2024 14:06:54
Onur
Welche Version hast du?
AW: Nachtrag
23.06.2024 14:10:32
{Boris}
Meine Version steht sowohl in der Datei als auch auf den Screenshots 😉
AW: Nachtrag
23.06.2024 14:11:51
Onur
Ich meinte die genaue Versions-Nummer. Dass du 365 hast, weiss ich doch. :)
Anzeige
AW: Nachtrag
23.06.2024 14:13:57
{Boris}
Die steht da doch exakt…?!
AW: Nachtrag
23.06.2024 14:17:11
Onur
Wer lesen kann......
Wieso hast du 2407 und ich nur 2404 ??????
Laut MS bin ich auf dem neuesten Stand!
AW: Nachtrag
23.06.2024 14:20:28
{Boris}
Ich hab keine Ahnung 😉 Aber bei Dir läuft es ja auch. Aber im verlinkten Thread bei MS-Office-Forum ging es bei fast allen nicht - die haben dann auch ihre Versionsnummern gepostet.

VG Boris
Anzeige
AW: Nachtrag
23.06.2024 14:22:34
Onur
Bei mir läuft es ja NICHT.
Ich musste eine kleinen Trick anwenden, damit res läuft.
Bist du denn im Abo-Programm oder gekauft ?
AW: Nachtrag
23.06.2024 15:13:43
BoskoBiati2
Hi,

bei mir funktioniert es, wie Onur schon geschrieben hat, auch als Array-Formel:
https://www.herber.de/bbs/user/170414.xlsx

Gruß

Edgar
Anzeige
Danke Dir für`s Testen
23.06.2024 17:07:51
{Boris}
Hi Edgar,

...gestatte noch die abschließende Frage:

Funktioniert bei Dir (als "normale" Formel)

=ZÄHLENWENN(INDIREKT("A2:A"&ZEILE(2:16));N(INDIREKT("A"&ZEILE(2:16))))

Voraussetzung: In Spate A stehen nur Zahlen (also nicht die x und y - denn dafür müsste man T() verwenden)

?

VG, Boris
Anzeige
AW: Danke Dir für`s Testen
23.06.2024 18:20:32
BoskoBiati2
Hallo Boris,

es funktioniert und das hier:

=ZÄHLENWENN(INDIREKT("A2:A"&ZEILE(2:16));WENN(ISTZAHL(A2:A16);N(INDIREKT("A"&ZEILE(2:16)));T(INDIREKT("A"&ZEILE(2:16)))))


funktioniert auch problemlos.

Gruß

Edgar
Klasse!
23.06.2024 18:30:22
{Boris}
Hi Edgar,

vielen Dank für`s nochmalige Testen bzw. Bestätigen!
Mit N() bzw. T() kann man das Array (der Suchwerte) anscheinende auch (in älteren Versionen) zum Leben erwecken. Das war auch mein bisheriger Kenntnisstand.

Zwischenzeitlich hatte ich noch ne andere Lösung entwickelt. Wenn Du magst, kannst Du gerne mal draufschauen, ob ich mich da nicht eventuell "verrannt" habe ;-)

=LET(e;EINDEUTIG(A2:A16);x;ZÄHLENWENN(A2:A16;e);y;MTRANS(TEXTTEILEN(TEXTKETTE(MAP(x;LAMBDA(a;TEXTVERKETTEN(";";;SEQUENZ(a;;1))&";")));";"));FILTER(y;y>""))

VG, Boris
Anzeige
Funktioniert einwandfrei, habe drüben schon geantwortet.
23.06.2024 18:58:14
BoskoBiati2
Gruß

Edgar
Alles klar - vielen Dank! :-) oT
23.06.2024 19:03:36
{Boris}
VG, Boris
AW: Nachtrag
23.06.2024 14:33:16
{Boris}
Ach so - hatte ich falsch verstanden. Ich hab das Abo.
Was war denn „Dein Trick“? Funktion N() bzw. T()? Oder…?
Anzeige
AW: Nachtrag
23.06.2024 14:34:29
Onur
Nö, einfach als Arrayformel abschließen.
AW: Nachtrag
23.06.2024 14:40:08
Onur
Jetzt blicke ich gar nicht mehr durch:

Userbild
Problem gelöst bzw Mysterium geklärt !
23.06.2024 16:05:54
Onur
Es gibt im Insider-Kanal ZWEI Level (Channel) - "Preview" und "Beta".
Die User mit Preview-Level bekommen die Updates zwar vor den Standard-Usern, aber erst, wenn die Neuerungen zu Tode gestestet sind und freigegeben wurden.
Die User mit Beta-Level bekommen sie schon, wenn die Neuerungen einigermaßen stabil laufen.
Wer im Preview-Channel ist, hat Version 2404 und die im Beta-Channel Version 2407.
Anscheinend hat Excel das Problem mit Zählenwenn usw in Kombination mit Arrays statt Bereiche als Bezug endlich erkannt und behoben.
Und di im Beta-Channel können davon profitieren.
Guckst du hier:

Userbild


Anzeige
Abschließende Frage
23.06.2024 17:06:01
{Boris}
Hi Onur,

erstmal vielen Dank für Deine Recherche!

Anscheinend hat Excel das Problem mit Zählenwenn usw in Kombination mit Arrays statt Bereiche als Bezug endlich erkannt und behoben.

Bitte um einen letzten Test:

Funktioniert bei Dir aktuell (nicht mit ARRAYformelabschluss):

=ZÄHLENWENN(INDIREKT("A2:A"&ZEILE(2:16));N(INDIREKT("A"&ZEILE(2:16))))

Voraussetzung: In Spalte A stehen nur Zahlen (also nicht die x und y - denn dafür müsste man dann T() verwenden)?

VG, Boris
Anzeige
AW: Abschließende Frage
23.06.2024 17:10:00
Onur
Nein - Es funktioniert nur, wenn du N() einfach weglässt.
Also:
=ZÄHLENWENN(INDIREKT("A2:A"&ZEILE(2:16));INDIREKT("A"&ZEILE(2:16)))
OK - aber dann nur...
23.06.2024 17:12:33
{Boris}
Hi Onur,

...als ZUSAMMENHÄNGENDE Matrixformel - wie von Edgar hochgeladen - korrekt?

VG, Boris
Anzeige
Also dann ging es bei Dir schon die ganze Zeit...
23.06.2024 17:42:57
{Boris}
Hi Onur,

...das habe ich dann falsch verstanden ;-)

Aber jetzt such ich ja eine Alternativlösung für alle, bei denen es nicht funktioniert - und habe soeben auch etwas gebastelt.

=LET(e;EINDEUTIG(A2:A16);x;ZÄHLENWENN(A2:A16;e);y;MTRANS(TEXTTEILEN(TEXTKETTE(MAP(x;LAMBDA(a;TEXTVERKETTEN(";";;SEQUENZ(a;;1))&";")));";"));FILTER(y;y>""))

Ist das "des Pudels Kern" oder hab ich mich hier (unnötig) verrannt? ;-)

VG, Boris
Anzeige
AW: Also dann ging es bei Dir schon die ganze Zeit...
23.06.2024 17:47:50
Onur
"Also dann ging es bei Dir schon die ganze Zeit..." - NEIN. Erst, nachdem ich von "Insider" auf "Beta" umgestellt habe und jetzt auch Version 2407 habe. :)
"Ist das "des Pudels Kern" oder hab ich mich hier (unnötig) verrannt? ;-) " NEIN, des Pudels Kern wäre, die Zählenwenn-Formel einfach als Arrayformel abzuschliessen.
Anzeige
AW: Also dann ging es bei Dir schon die ganze Zeit...
23.06.2024 18:35:09
BoskoBiati2
Hi,

funktioniert auch.

Gruß

Edgar
Super - danke für die Bestätigung! :-) oT
23.06.2024 18:39:06
{Boris}
VG, Boris
Jetzt hat`s "Klick" gemacht ;-)
23.06.2024 17:56:32
{Boris}
Hi Onur,

NEIN, des Pudels Kern wäre, die Zählenwenn-Formel einfach als Arrayformel abzuschliessen.

Und genau das geht nicht, da dieses Array (in der Originalanfrage) als Bestandteil einer LET-Formel am Ende mit HSTAPELN (mit 2 weiteren Arrays) ausgegeben wird.

VG, Boris
Anzeige
AW: Jetzt hat`s "Klick" gemacht ;-)
23.06.2024 18:09:51
Onur
Welche Originalanfrage denn?
Ich kenne NUR deine Originalanfrage und weiss nicht, was und wo die Formel mit LET berechnen soll.
Wenn du die Anfrage bei MS-Office-Forum meinst, dann musst du mir schon die Originaldatei aus MS-Office-Forum posten, da ich keinen Zugriff darauf habe.
Ja, ich meinte die MS-OFFICE-Anfrage...
23.06.2024 18:15:10
{Boris}
Hi Onur,

...aber pack einfach die Werte aus Spalte A und das Ergebnisarray mit HSTAPELN nebeneinander (in Deiner zuletzt hochgeladenen Beispieldatei), also:

=HSTAPELN(A2:A16;ZÄHLENWENN(INDIREKT("A2:A"&ZEILE(2:16));INDIREKT("A"&ZEILE(2:16))))

bzw.

=LET(e;EINDEUTIG(A2:A16);x;ZÄHLENWENN(A2:A16;e);y;MTRANS(TEXTTEILEN(TEXTKETTE(MAP(x;LAMBDA(a;TEXTVERKETTEN(";";;SEQUENZ(a;;1))&";")));";"));HSTAPELN(A2:A16;FILTER(y;y>"")))

Im Prinzip ist das die Aufgabe aus der Originalanfrage.

VG, Boris
Anzeige
AW: Ja, ich meinte die MS-OFFICE-Anfrage...
23.06.2024 18:38:51
Onur
"*1" reicht in der Regel ebenso:
Teste mal:
=HSTAPELN(A2:A16;1*ZÄHLENWENN(INDIREKT("A2:A"&ZEILE(2:16));INDIREKT("A"&ZEILE(2:16))))

Als ARRAYFORMEL abschliessen.


Ich kann das ja gar nicht testen...
23.06.2024 18:42:32
{Boris}
Hi Onur,

...da in meiner Version ja alles funktioniert.
Mein bisheriger Kenntnisstand war, dass man das Array aus Suchwerten in diesem Fall mit N() (für Zahlen) bzw. T() (für Texte) zum Leben erwecken kann bzw. muss.
Edgar hat dies auch bestätigt (läuft ja bei ihm mit N bzw. T).

VG, Boris
Anzeige
AW: Ich kann das ja gar nicht testen...
23.06.2024 18:47:03
Onur
Dann kann er vielleicht auch mal meine Version testen.
AW: Ich kann das ja gar nicht testen...
23.06.2024 18:48:24
Onur
Aber wie konntest du dann überhaupt wissen, ob deine Formel überhaupt funktionieren KANN ?
AW: Ich kann das ja gar nicht testen...
23.06.2024 18:49:29
{Boris}
Aber wie konntest du dann überhaupt wissen, ob deine Formel überhaupt funktionieren KANN ?

Ich hab halt einfach "formuliert" - und in meiner Version ging es ja ;-)

VG, Boris
Anzeige
AW: Ich kann das ja gar nicht testen...
23.06.2024 18:50:51
Onur
Aber in deiner Version hätte es doch auch ohne N() funktioniert - oder ? :)
Na klar...
23.06.2024 18:56:59
{Boris}
...es hat ja auch ohne N bzw. T funktioniert.
Erst als "Gegenwind" kam, hab ich dann noch dieses Varianten ins Spiel gebracht ;-)
AW: Na klar...
23.06.2024 18:58:16
Onur
Also "ein Schuss ins Blaue" ohne Testmöglichkeit. ;)
Anzeige
Bin halt irgendwie davon ausgegangen...
23.06.2024 19:02:19
{Boris}
...dass MS das inzwischen "gefixed" hat ;-)
Aber ja - Trial and error - ist doch eine legitime Variante ;-)
AW: Bin halt irgendwie davon ausgegangen...
23.06.2024 19:20:30
Onur
Diese kleine Formel funktioniert aber auch ohne "Beta"-Level:
=HSTAPELN($A$2:$A$16;ZÄHLENWENN($A$2:$A$16;$A$2:$A$16))

Habe extra wieder auf "Preview" umgestellt, um zu testen.
Anzeige
Nein...
23.06.2024 19:26:33
{Boris}
...den "Fehler" hattest Du zu Beginn (irgendwo) schon mal.
Bitte weiter Testen ;-)
AW: Nein...
23.06.2024 19:45:04
Onur
Welchen Fehler?
Siehe hier:

Userbild
Spalte E soll doch durchnummeriert werden..
23.06.2024 19:49:18
{Boris}
...mit

1
2
1
2
3
1
1
2
3
usw.

;-)
Anzeige
AW: Spalte E soll doch durchnummeriert werden..
23.06.2024 19:53:57
Onur
Die IST durchnumeriert - bei mir war nur eine Spalte gelöscht:

Userbild
Mensch Onur... ;-)
23.06.2024 19:58:26
{Boris}
...gewünscht ist

Userbild

;-) ;-)

VG, Boris
Anzeige
AW: Mensch Onur... ;-)
23.06.2024 20:05:27
Onur
Jetzt weiss ich, was du meinst.
Wäre aber DAS nicht sinnvoller?

Userbild
Das ist aber doch nur ein Teil...
23.06.2024 20:10:11
{Boris}
...der Lösung. Die habe ich ja auch so (von der Logik her) in meine LET-Variante eingebaut.
Die Ausgabe soll aber am Ende so sein wie skizziert.
Anzeige
Um es nochmal auf den Punkt zu bringen
23.06.2024 20:13:53
{Boris}
Gesucht ist eine SPILL-Formel(!) für die Hilfsspaltenlösung in Spalte B:

Userbild
AW: Um es nochmal auf den Punkt zu bringen
24.06.2024 16:21:28
{Boris}
Die bislang kürzeste Lösung (von Anton):

=LET(m;A2:A16;n;VSTAPELN("";m);SCAN("";SEQUENZ(ZEILEN(m));LAMBDA(a;i;WENN(INDEX(n;i)=INDEX(m;i);a;0)+1)))

VG, Boris
Anzeige
AW: Um es nochmal auf den Punkt zu bringen
24.06.2024 18:10:26
Onur
Funktionierend auf BETA oder auf ALLEN?
AW: Um es nochmal auf den Punkt zu bringen
24.06.2024 23:54:33
Onur
DAS ist kürzer:
{=LET(x;$A$2:$A$16;an;ZEILEN(x);y;WEGLASSEN(x;-an+SEQUENZ(an));z;ZÄHLENWENN(y;x);z)}
Sehr gut! :-) oT
25.06.2024 19:10:50
{Boris}
VG, Boris
Anzeige
Und am Ende wird dann doch ein "Knallfrosch" draus mit...
26.06.2024 17:09:02
{Boris}
=MAP(A2:A16;LAMBDA(a;ZÄHLENWENN(A2:a;a)))

;-)

VG, Boris
AW: Und am Ende wird dann doch ein "Knallfrosch" draus mit...
26.06.2024 17:23:08
Onur
Wo hast du DIESE Funktion denn her?
MAP (und SCAN ebenfalls) ist nicht unter "14 neue Funktionen von Excel365" aufgelistet.
Nach SCAN hatte ich schon die ganze Zeit gesucht bzw mir sowas gewünscht. Da kann man VIEL kürzere Formeln schreiben und wesentlich kürzere Formeln schreiben.:
Toll !
Anzeige
AW: Und am Ende wird dann doch ein "Knallfrosch" draus mit...
26.06.2024 20:40:00
{Boris}
MAP kannte ich schon. Nur dass die Funktion ja einen BEZUG zurückgibt, hatte ich bisher nicht (zielführend) berücksichtigt (warum auch immer ;-) )
Und mit dem BEZUG kann man ja ganz anders arbeiten als mit einem reinen Wert.
Jetzt kannst Du Dich künftig damit richtig austoben :-)

VG, Boris
Anzeige
AW: Nachtrag
23.06.2024 15:01:49
Onur
Vergiss meine dumme Frage.
DAS hat ja immer schon geklappt, aber nur, wenn richtige Bereiche drin standen, und nicht nur Arrays aus Spillformeln.
AW: Nachtrag
23.06.2024 14:07:53
Onur
Ich habe beide Versionen zum Laufen gekriegt:


Userbild
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige