Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1860to1864
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

=INDEX(A1:B1;;;1) vs. INDEX(A1:B1;;;{1})

=INDEX(A1:B1;;;1) vs. INDEX(A1:B1;;;{1})
16.12.2021 14:13:44
{Boris}
Hallo zusammen,
ich bastel gerade an der INDEX-Funktion in der Bezugsversion rum - also diese Syntax:
=INDEX(Bezug;Zeile;Spalte;Bereich)
Dazu ein ganz einfaches (eher sinnfreies) Beispiel:
A1: 3
B1: 5
=SUMME(INDEX(A1:B1;;;1)) liefert 8.
=SUMME(INDEX(A1:B1;;;{1})) liefert 3 (auch in der 365-Version)
{=SUMME(INDEX(A1:B1;;;{1}))} - also als Arrayvariante - liefert dann auch 8.
Weshalb wird für den letzten Parameter Bereich mit der {1}-Matrixkonstante anderes verfahren als mit der Konstante 1?
VG, Boris

39
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: in XL2010 & XL2016 alle 3 Formeln =8 owT
16.12.2021 14:31:47
neopa
Gruß Werner
.. , - ...
Das ist ja lustig...
16.12.2021 14:36:40
{Boris}
Hi Werner,
...dass da inzwischen wohl auch irgendwie anders gerechnet wird:
=SUMME(INDEX(A1:B1;;;{1}))
liefert definitiv 3 in Excel 365.
=INDEX(A1:B1;;;{1}) liefert auch nur EIN Ergebnis (die 3), während
=INDEX(A1:B1;;;1) das Ergebnis spillt und beide Werte - 3 und 5 - nebeneinander anzeigt.
Danke für`s Testen - aber jetzt bin ich eher noch mehr irritiert...?!
VG, Boris
AW: evtl in XL365 etwas andere Bereichsdef.?...
16.12.2021 14:56:12
neopa
Hallo Boris,
... aber folgendes Beispiel sollte bei Dir die gleichen Ergebnisse bringen wie in XL2010, oder?
Arbeitsblatt mit dem Namen 'Tabelle1'
 ABCDEF
135  2727
246  150150
327    
4      
5  1110  
6  1220  
7  1330  
8  1440  
9      

ZelleFormel
E1=SUMME(INDEX((A$1:B$5;C$4:D$9);;;ZEILE(A1)))
F1=SUMME(INDEX((A$1:B$5;C$4:D$9);;;1))
E2=SUMME(INDEX((A$1:B$5;C$4:D$8);;;ZEILE(A2)))
F2=SUMME(INDEX((A$1:B$5;C$4:D$9);;;2))
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Gruß Werner
.. , - ...
Anzeige
Ja - selbe Ergebnisse...
16.12.2021 15:02:55
{Boris}
Hi Werner,
...auch in 365.
ZEILE ist nicht das Problem - es liegt offensichtlich an der Verwendung eines Konstantenarrays {1} - in der Realität soll es natürlich später mehrere Elemente haben {1.2.3.4} z.B. - aber dafür muss ich erstmal verstehen, wie und warum es sich so verhält wie es sich in 365 verhält...?!
VG, Boris
AW: demnach ...
16.12.2021 15:14:53
neopa
Hallo Boris,
... müsste sich bei Dir auch sich ein andere Ergebnisse ergeben, wenn Du in der Formel ZEILE(A#) durch das durch diese erzeugende {1} bzw {2} ersetzt.. In meinen XL-Versionen ergeben sich jedenfalls dafür die selben Ergebnisse..
Gruß Werner
.. , - ....
Anzeige
Auch das ....
16.12.2021 15:32:20
{Boris}
Hi Werner,
...ist korrekt - mit {1} und {2} habe ich andere Ergebnisse.
VG, Boris
Viell sind das schon die Spill-Nebenwirkungen! orT
17.12.2021 02:12:11
Luc:-?
(S.auch unten!)
Morhn, Luc :-?
Bitte an 365-Nutzer...
16.12.2021 14:56:00
{Boris}
Hallo zusammen,
...das mal nachzuvollziehen. Möchte zumindest ausschließen, dass es da auch innerhalb der Versionen noch Unterschiede gibt.
Userbild
VG, Boris
bestätigt mit InsiderBeta 2111 Bulid 14530.20000
16.12.2021 15:37:26
lupo1
{Boris}, kannst Du ein sinnvolles Beispiel für die Bezugsvariante nennen?
Anwendungsbeispiel
16.12.2021 15:50:58
{Boris}
Hi Lupo,
beispielsweise möchte in mit der INDEX-Variante das Minimum ungleich Null in diskontinuierlichen Bereichen ermitteln.
Mit durchweg Einzelzellen funktioniert das einwandfrei:
=MIN(WENN(INDEX((A1;C1;F1);;;{1.2.3})=0;"";INDEX((A1;C1;F1);;;{1.2.3})))
Ist aber ein Bereich dabei (hier: E1:F1)
=MIN(WENN(INDEX((A1;C1;E1:F1);;;{1.2.3})=0;"";INDEX((A1;C1;E1:F1);;;{1.2.3})))
wird die Zelle F1 nicht abgegriffen. Steht dort der kleinste Wert ungleich Null, wird er nicht ermittelt.
VG, Boris
Anzeige
Hat das denn vorher richtig funktioniert?
16.12.2021 16:02:46
lupo1
Vielleicht hast Du ja noch irgendwo ein altes System laufen.
Bei Excel-Online wird es sich vermutlich wie bei 365 verhalten.
Ich hab keine Ahnung...
16.12.2021 16:04:45
{Boris}
Hi Lupo,
...Werner bestätigt ja, dass das in älteren Versionen anders ist.
@Werner: Kannst Du
=MIN(WENN(INDEX((A1;C1;E1:F1);;;{1.2.3})=0;"";INDEX((A1;C1;E1:F1);;;{1.2.3})))
mal testen? Wenn in F1 der kleinste Werte ungleich Null steht - wird er ermittelt?
VG, Boris
AW: hab es nochmal getetstet ...
16.12.2021 16:35:45
neopa
Hallo Boris,
... hatte mit ähnlichem auch schon früher "experimentiert" und zu meinem Leidwesen keine Lösung gefunden (was nicht heißt, dass es keine geben könnte).
XL verarbeitet standardmäßig in den mir zur Verfügung stehenden XL-Versionen immer nur genau einen Bereich. Also das 4. Argument der INDEX()-Funktion wird immer nur als Konstante verstanden und demzufolge wird aus einer evtl. dort angegebenen Konstantenmatrix {....} immer nur dessen 1. Wert ausgewertet.
Ich entsinne mich jedoch dunkel, das Luc sich damit noch weiter auseinandergesetzt hatte und irgendwas dazu gefunden hat(te). Vielleicht meldet er sich ja hierzu noch.
Gruß Werner
.. , - ...
Anzeige
Nicht dass wir uns missverstehen...
16.12.2021 16:54:34
{Boris}
Hi Werner,
Also das 4. Argument der INDEX()-Funktion wird immer nur als Konstante verstanden und demzufolge wird aus einer evtl. dort angegebenen Konstantenmatrix {....} immer nur dessen 1. Wert ausgewertet.
Wenn das so ist, würde das bedeuten, dass diese Formel zur Ermittlung des Minimums ungleich Null in den angegebenen 3 Zellen bei Dir NICHT funktioniert:
=MIN(WENN(INDEX((A1;C1;F1);;;{1.2.3})=0;"";INDEX((A1;C1;F1);;;{1.2.3})))
Oder doch?
VG, Boris
AW: genau so; sie funktioniert hier nicht owT
16.12.2021 16:59:09
neopa
Gruß Werner
.. , - ...
Wow...
16.12.2021 17:00:48
{Boris}
Hi Werner,
...das ist alles schon ein wenig crazy ;-) Danke wieder für`s Testen!
VG, Boris
Anzeige
Luc hat das irgendwie mit Tensoren verwendet ...
16.12.2021 19:56:22
lupo1
... und da wird es ja richtig gewesen sein, weil er da richtig tief einsteigt.
Ja, aber mehrfach aufgenommen von Luc
16.12.2021 23:38:18
Luc
... ich bin mathematisch zu schmal-hirnig dafür.
Sehr schön, Lupo! ;-) orT
17.12.2021 02:08:12
Luc:-?
SchöAdv4WE! Morhn, Luc :-?
Die sei Dir gegönnt, ...
17.12.2021 00:46:40
Luc:-?
…Boris; ;-)
und weil Du schon mal dabei bist, auch noch das:
+Tensor 3/4: (Halloween 2013) https://www.herber.de/forum/archiv/1336to1340/1336750_Exklusiv__auf_Herber__xlHalloween.html#1336750
- Teil1 https://www.herber.de/forum/archiv/1596to1600/1599087_34Tensoren_auf_2dimensionalen_Tabellen.html
- Teil2 https://www.herber.de/forum/archiv/1600to1604/1602104_34Tensoren_auf_2dimens_Tabb__1Fortsetzung.html#1602104
- Teil3 https://www.herber.de/forum/archiv/1608to1612/1608981_ZitateSilbenraetsel_34Tensor__2Fortsetzung.html#1608981
- Teil4 https://www.herber.de/forum/archiv/1608to1612/1611005_INDEX_uKroneckerProdukt_34Tensor__3Forts.html#1611005
+Ranges u.Arrays in Xl u.VBA: https://www.herber.de/forum/archiv/1776to1780/t1779421.htm#1779421 - Tensor(2,2)-Bsp m.Konstrukt-UDF TensQubix 1.2 u.Qubix per Sub
+Sommerbeginn 2020 (Special):
- INDEX-Teil1 https://www.herber.de/forum/archiv/1764to1768/1767214_Zum_Sommerbeginn1_INDEX_mal_anders.html#1767214
-- Qubix-Einschub https://www.herber.de/forum/archiv/1776to1780/1779421_Zum_WE_Ranges_uArrays_in_Xl_uVBA.html#1779421
- INDEX-Teil2 https://www.herber.de/forum/archiv/1788to1792/1789720_VorabHalloween_Was_ist_hier_los.html#1789720 (Link-Sammlg unt.'Zwischenbilanz')
-- Kreuzprodukt & INDEX https://www.herber.de/forum/archiv/1824to1828/1824010_OsterSpecial_Kreuzprodukt_amp_INDEX_Info.html#1824010

Viel Spaß u.Erfolg! Morhn, Luc :-?
Anzeige
Beispieldatei
16.12.2021 17:53:28
{Boris}
Hi Lupo,
anbei noch die Beispieldatei. https://www.herber.de/bbs/user/149856.xlsx
Die Endformel stelle ich mir so in der Art vor, um sie einfach anpassbar zu gestalten:
Die hier geht:
=LET(x;(A1;C1;E1;F1);y;INDEX(x;;;SEQUENZ(BEREICHE(x)));MIN(WENN(y=0;"";y)))
Die hier nicht:
=LET(x;(A1;C1;E1:F1);y;INDEX(x;;;SEQUENZ(BEREICHE(x)));MIN(WENN(y=0;"";y)))
weil dort F1 nicht erkannt wird.
Das muss doch aber irgendwie gehen!
VG, Boris
Formeln in Versionen VOR 365...
16.12.2021 18:32:32
{Boris}
Hi,
...lauten übrigens:
Funktioniert (zumindest in 365):

=MIN(WENN(INDEX((A1;C1;E1;F1);;;ZEILE(INDIREKT("1:"&BEREICHE((A1;C1;E1;F1)))))0;INDEX((A1;C1;E1;F1) ;;;ZEILE(INDIREKT("1:"&BEREICHE((A1;C1;E1;F1))))))) 
Funktioniert (auch in 365) nicht, da F1 nicht erkannt wird:

=MIN(WENN(INDEX((A1;C1;E1:F1);;;ZEILE(INDIREKT("1:"&BEREICHE((A1;C1;E1:F1)))))0;INDEX((A1;C1;E1:F1) ;;;ZEILE(INDIREKT("1:"&BEREICHE((A1;C1;E1:F1))))))) 
VG, Boris
Anzeige
AW: beide nicht in XL 2016 owT
16.12.2021 19:44:42
neopa
Gruß Werner
.. , - ...
Danke für die Info!
16.12.2021 20:05:43
{Boris}
Hi Werner,
demnach scheint xl365 ja zumindest teilweise unseren Ruf erhört zu haben, den letzten INDEX-(Bezugs-)Parameter auch {nutzbar} zu machen, wenn auch (vielleicht noch) nicht in ganzer Pracht ;-)
VG, Boris
Das 4.INDEX-Argument war schon immer nutzbar, ...
17.12.2021 02:06:09
Luc:-?
…Boris (& Werner),
auch für Datenfelder, zumindest seit Xl12, aber wohl auch schon früher, nur hat das µS nicht generell publiziert, sondern dessen Nutzung auf diskontinuierliche Bereiche fokussiert. Wie aus den im oberen Beitrag verlinkten Beiträgen hervorgeht (Stichwort: Kronecker-Produkt), kann man es auch für Wiederholungen einer Matrix (auch als Datenfeld, aus Ausdrücken/TeilFmln resultierend) benutzen, was eine (nicht sinnvoll spill-bare) MatrixFml einer ganz anderen Kategorie (als meine 3 bisherigen - singular, dual, plural) ergibt. Denn dann wdn alle MatrixZellen einzeln in xl-üblicher willkürlicher Reihenfolge berechnet, wobei der MxVerbund trotzdem nicht aufgehoben wird!
Die Krux bei der INDEX-Nutzung besteht darin, dass das 2.-4.Fktsargument nicht nur angibt, welchen Teil von Argument1 INDEX ausgeben soll, sondern auch der AusgabeSteuerung dient, die dann der FmlText-Interpreter, also Xl selbst, übernimmt. Solange es sich bei Argument1 um einen kontinuierlichen Bereich oder ein (stets kontinuierliches) Datenfeld handelt, ist das auch kein Problem, denn Quell- und ZielSteuerung passen iaR zusammen, weshalb auch 2. u/o 3.Argument mit 0 (;;;) angegeben wdn können, nicht aber das 4.! Das ist auch logisch, denn wo soll Xl denn übergreifende oder unterschiedlich-anzahlige Ausschnitte aus diskontinuierlichen Bereichen hinschreiben‽ Es wird dann immer denselben Bereich wählen, was zu Konflikten führt. Genau deshalb wird im Bsp aus dem 3.TeilBereich nur die 1.Zelle gewählt, denn die beiden anderen sind ja 1zellig. Also muss man INDEX und damit Xl schon vorgeben, wo die Werte aus den Zellen hin sollen. Die beliebten 0en (bzw deren Weglassen) leisten(/t) das nicht! Folglich muss man im 2.Argument genau die Zeilen, im 3. die Spalten angeben und dabei den INDEX-Standort berücksichtigen. Die AngabeForm ist dabei egal, ZEILE bzw SPALTE oder MxKonstante mit passenden Trennern. Und genau für die so entstehende Matrix muss im 4.Argument der TeilBereich angegeben wdn, wobei die Form wiederum egal ist. Das zeige ich auch in meinen oben verlinkten INDEX-Beiträgen (die gern auch ignoriert wurden, wenn man der Auffasung war, das jeweilige Bsp auch weniger spektakulär lösen zu können *).
Aber es gibt ja noch mehr und tatsächliche Ungereimtheiten in Xl, wobei das INDEX-Problem allerdings nur dann eines wäre, wenn man es über die Xl-Versionen „verschlimmbessert“ hätte (was µS durchaus zuzutrauen wäre!).
Seit Tagen beschäftigt mich nämlich ein Problem, das ich ursprünglich mal ganz einfach gelöst hatte - ein &h vor eine HexadezimalZahl (auch größerer Länge) gesetzt, ergab schon ihren Dezimalwert. Nun wollte ich es auch umgekehrt für überlange Zahlen haben, was in VBA ja für Variant-Variablen per CDec geht (dafür hatte ich auch mal eine UDF geschrieben). Nun musste ich aber feststellen, dass es zwar möglich ist, solche Zahlen zu erzeugen (und als Text in Xl auszugeben), aber selbst in VBA-Pgmm (ggf nur bei UDFs in ZellFmln?) kann man dann nicht voll mit ihnen rechnen, selbst wenn das nur innerhalb der UDF geschieht. Zuerst fiel mir das beim Potenzieren auf → UDF geschrieben → OK. Nun klappt das auch bei anderen Operatoren nicht mehr (bei 15 Ziffern ist Schluss, danach nur noch 0en) → muss ich nun dafür auch noch UDFs schreiben Das sollte eine schnelle Ergänzung meiner angekündigten Arbeit wdn und nun hält mich das auf… (Deshalb bin ich auch relativ selten im Forum zu finden.)
_______
* Wir haben doch 2 Beine und können oft auch schwimmen, warum müssen wir unbedingt Autofahren, Schiffe benutzen oder gar fliegen‽ ;-]

Morhn + schöAdv4WE, Luc :-?
Anzeige
Teillösung gefunden
17.12.2021 18:44:21
{Boris}
Hallo zusammen,
das hier habe ich gerade im MOF geschrieben.
VG, Boris
-------
Hi Lupo, hi @ all,
ich habe eine Teillösung gefunden für die konkrete Anforderung, aus dem diskontinuierlichen Bereich (A1;C1;E1:G2) das Minimum ungleich Null zu finden.
Voraussetzung: Die ersten Bereiche sind einzellig (hier: A1 und C1) und nur der letzte Bereich ist mehrzellig (hier: E1:G2). Die Einzeller werden dabei mittels SEQUENZ-Array ausgelesen - begrenzt auf BEREICHE-1. Der letzte (mehrzellige) Bereich wird nicht "sequenziert", sondern als Konstante mit dem Ergebnis aus BEREICHE(x) als INDEX dazugepackt.
Formel muss nun als {Arrayformel} eingegeben werden.
Das hier funktioniert:
{=LET(x;(A1;C1;E1:G2);y;INDEX(x;;;SEQUENZ(BEREICHE(x)-1)):INDEX(x;;;BEREICHE(x));MIN(WENN(y0;y)))}
Ist auf jeden Fall schon mal ein Ansatz.
VG, Boris
Anzeige
Wenn Du nochmal probieren magst...
17.12.2021 19:29:54
{Boris}
Hi Werner,
...und zwar mit {Arrayformelabschluss} - bezieht sich jetzt auf den diskontinuierlichen Bereich (A1;C1;E1:G2)

=MIN(WENN(INDEX((A1;C1;E1:G2);;;ZEILE(INDIREKT("1:"&BEREICHE((A1;C1;E1:G2))-1))):INDEX((A1;C1;E1:G2); ;;BEREICHE((A1;C1;E1:G2)))0;INDEX((A1;C1;E1:G2);;;ZEILE(INDIREKT("1:"&BEREICHE((A1;C1;E1:G2))-1))) :INDEX((A1;C1;E1:G2);;;BEREICHE((A1;C1;E1:G2))))) 
Würde mich zwar wundern, wenn es geht (in 365 geht es) - aber wer weiß...? ;-)
VG, Boris
AW: so funktioniert es ...
17.12.2021 19:58:03
neopa
Hallo Boris,
... und das sowohl in XL2016 als auch XL2010.
So eine Lösungsart ist aber mehr theoretischer Art. Oder? Kann man wohl kaum normalen Nutzer so zumuten.
Wünsche Dir ein schönes 4. Adventswochenende..
Gruß Werner
.. , - ...
AW: halt, wohl doch nicht ...
17.12.2021 20:09:18
neopa
Hallo Boris,
... sorry, hatte nicht richtig getestet. Im Nachgang fiel mir ein, was passiert wenn ich z.B. in B2 einen MIN-Wert setze (bisher war diese Zelle wie alle Zellen außerhalb Deiner vorgegebenen Bereiche leer). Und siehe da, die Formel wirft in XL2016 als auch 2010 diesen Wert als "Ergebnis" aus. :-(
Ich geh jetzt lieber für heute offline.
Gruß Werner
.. , - ...
Das pulverisiert...
17.12.2021 21:37:07
{Boris}
Hi Werner,
...meine bisherigen Versuche, denn auch in xl365 wird B2 mit "berücksichtigt". Ich muss also weiter grübeln...
DANKE echt viel mal für Deinen Input! Das ist mega wertvoll für mich! :-)
VG, Boris
Was INDEX betrifft, ...
18.12.2021 02:57:36
Luc:-?
…Boris,
hatte ich bereits Grundlegendes festgestellt und mehrfach ausgeführt! Das scheinst Du missachtet zu haben, weshalb Du so kaum Erfolg haben wirst, denn ich nehme nicht an, dass µS an dieser uralten Fkt etwas geändert hat oder ändern wird, denn dann würde sie üblicherweise entweder einen neuen Namen oder eine Namensergänzung bekommen. Auch ihre Behandlung durch den FmlText-Interpreter dürfte sich nur in Bezug auf das Spillen erweitert haben.
Ich habe Deine letzte Fml mal so interpretiert, dass ich daraus ein Bsp ableiten konnte, mit dem eine Übersetzung der von Dir benutzten neuen Fktt in meine (zT neuesten) UDFs arbeiten sollte. Den Übersetzungsversuch habe ich aufgegeben als mir bewusst wurde, was Du da mit INDEX versuchst. Das ließe sich nämlich in folgende (plurale MxFml-)Form bringen (im MOF wurde Dir ja von WS ebenfalls Ähnliches vorgeschlagen!*):
A13:E14: +WENNFEHLER(INDEX((A1;C1;E1:G2);{1;2};{1.1.1.2.3};{1.2.3.3.3;1.2.3.3.3});"")
So würde allerdings eine Matrix, auch mit formal leeren Zellen, erzeugt, zB: {8.15.5.16.8;""."".6.1.20}
Die ist aber zellauswahlabhängig bzw könnte automatisch gespillt wdn. D.h. aber nicht, dass alle diese Werte in einer Zelle einer aufsetzenden Fkt zV stehen! Dazu müsste INDEX erst zu einem solchen Arbeiten veranlasst wdn, was relativ kompliziert ist. Mit INDIREKT wäre das einfacher, denn dabei können Bezüge gewechselt wdn, so dass die Matrix quasi auf nur einer ZellPosition aufgebaut wird, Voraussetzung für SUMME, MIN und etliche andere Xl-Fktt.
Allerdings habe ich eine UDF-Lösung für Dein Problem, ganz ohne INDEX, mit oder ohne Rmd. Allerdings stellt die Hpt-UDF hier auf 2 (Ko-)Vektoren ab, weil sie eigentlich für Operationen mit 2 Mengen in (Ko)Vektor-Form gedacht ist, die auch ungleichgroß und diskontinuierlich sein können:
=MIN(WENN(Rmd(DataSet((A1; C1;E1:G1);E2:G2;2;1;1))0;Rmd()))
Das entspräche wohl nicht ganz Deinem Anliegen der Min=0-Vermeidung, aber das wäre ja mit KKLEINSTE lösbar, wobei dann wohl auch das WENN-Konstrukt verzichtbar wäre. Dann würde allerdings auch folgende, universellere (singulare) MatrixFml fktionieren:
+MIN(NoErrRange((A1;C1;E1:G2);;(A1;C1;E1:G2)0)) Oder als NormalFml (m.Rmd): =MIN(NoErrRange(Rmd((A1;C1;E1:G2));;Rmd()0))
_______
* Vor ca 12 Jahren hatte sich auch schon mal NoNet mit diesem Problem herumgeschlagen, wovon er etliche Jahre später nichts mehr wusste.

Morhn, Luc :-?
AW: soll es denn unbedingt mit INDEX() sein? ...
18.12.2021 11:12:14
neopa
Hallo Boris und Luc,
... eine derartige Problemstellung ist doch mE sowieso eher nur theoretischer Natur, oder? Mit entsprechender Datenstrukturierung kann /sollte die Erfordernis einer derartigen Auswertung doch von Haus aus vermieden werden.
Trotzdem hab ich auch mal versucht eine entsprechende Auswertung vorzunehmen. Eine bedingte Möglichkeit sehe ich evtl. mit Hilfe der Excel4-Makrofunktionen AUSWERTEN(). Aber dies will ich wiederum vermeiden, weil dann eine solche das Abspeichern der Datei ja als XLSM bzw. XLSB erfordert. Dann aber könnte man ja gleich mit VBA arbeiten.
Nachfolgend mögliche alternative Lösungsformeln in E7:E8 für zwei Fälle, die unter der Voraussetzung das mindestens eine Zahl 0 in den Bereichen steht, in jeder Excelversionen ab XL2010 zum Ergebnis führen sollte:
Arbeitsblatt mit dem Namen 'Tabelle_Boris'
 ABCDEFG
111503014 
23 -11 12913
3  0 -77  
4  6    
5       
6unter der Voraussetzung das minimal ein Wert >0 ist, für:
7- Bereiche: A1, C1 , E1:G2-119  
8- Bereiche: A1, C3:C4, E1:G2 6  

ZelleFormel
D7{=MIN(WENN(INDEX((A1;C1;E1:G2);;;ZEILE(INDIREKT("1:"&BEREICHE((A1;C1;E1:G2))-1))):INDEX((A1;C1;E1:G2); ;;BEREICHE((A1;C1;E1:G2)))>0;INDEX((A1;C1;E1:G2);;;ZEILE(INDIREKT("1:"&BEREICHE((A1;C1;E1:G2))-1))) :INDEX((A1;C1;E1:G2);;;BEREICHE((A1;C1;E1:G2)))))}
E7=MIN(WENNFEHLER(AGGREGAT(15;6;E1:G2/(E1:G2>0);1);9^9);WENNFEHLER(AGGREGAT(15;6;A1:C1/(A1:C1>0)/(SPALTE(A1:C1)>2);1);9^9))
E8=MIN(WENNFEHLER(A1/(A1>0);9^9);WENNFEHLER(AGGREGAT(15;6;C3:C4/(C3:C4>0);1);9^9);WENNFEHLER(AGGREGAT(15;6;A1:C1/(A1:C1>0)/(SPALTE(A1:C1)>2);1);9,9))
Achtung, Matrixformel enthalten!
Die geschweiften Klammern{} werden nicht eingegeben.
Verlassen Sie den Zelleneditor mit Strg+Shift + Enter, statt Enter alleine.
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.02] MS Excel 2010
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg

Gruß Werner
.. , - ...
Hier mag's theoretisch sein, ...
19.12.2021 00:19:37
Luc:-?
…Werner,
anderenfalls siehe unten und meine Beiträge
Morhn + schöAdv4So, Luc :-?
AW: warten wir mal ab, was Boris meint owT
19.12.2021 10:27:00
neopa
Gruß Werner
.. , - ...
Ich schau mir das in Ruhe an...
20.12.2021 08:53:38
{Boris}
Hi Werner und Luc,
...und melde mich dazu wieder.
VG, Boris
In Ergänzung meiner AWen
17.12.2021 19:40:36
Luc:-?
Folgendes, Boris:
Es könnte durchaus sein, dass hier die Spill-Automatik greift und damit ein einfacheres zeilenweises Summieren ermöglicht als bisher, indem man nicht erst den zeilenweise zu summierenden Block in lauter ZeilenAdressen zerlegen und so als diskontinuierlichen GesamtBereich an Xl übergeben muss, um die ZeilenSummen als geschlossene Matrix zu erhalten (analog für SpaltenSummen). Das könnte evtl fatale Auswirkungen auf meine Methode der Ermittlung des Kronecker-Produkts (per erwähntem besonderen MatrixFml-Typ) haben, aber, falls ich mich recht erinnere, hatte ich das schon mal testen lassen und die Spill-Automatik konnte damit nicht mehr anfangen als eine gewöhnliche MatrixFml-Eingabe (zumindest kam dabei nicht gleich die größere 2d-Kronecker-Matrix heraus ;-]).
Gibst Du einen diskontinuierlichen Bereich in INDEX als Arg1 an, wird INDEX den (wie bereits mitgeteilt*) anhand der anderen Argumente auf Zellen (Vektor↓, Kovektor→ bzw Matrix) verteilen wollen. Das ist dann aber auch vom ausgewählten ZellBereich abhängig. Dadurch erhält SUMME stets nur die Werte eines TeilBereichs und summiert dann folglich diese. Das erklärt das vermeintliche Fehlen von Werten im SummenFml-Ergebnis. INDEX hat hier mit seiner interpreter-abhängigen Umsetzung Priorität vor SUMME**.
Für (D)ein entsprd Bsp dann bspw so:
Vektor: {=SUMME(INDEX((A1;B1);;;{1;2}))} bzw Kovektor: {=SUMME(INDEX((A1;B1);;;{1.2}))}
Hier können Arg2-3 fehlen, da die TeilBereiche 1zellig sind. Anders sieht's aus, wenn sie unterschiedlich groß sind. Dann müssen die Positionen (Zeile/Spalte und dazu Teil als flfd Nrn) in einer resultierenden ErgebnisMatrix, die idealerweise regulär sein sollte, genau vorgegeben wdn. Ist sie irregulär, wird es zwischendurch zu #BEZUG!- bzw #NV-Fehlern kommen.
_____
So kann man auch Werte aus Arg1 im Ergebnis wiederholen!
** Diese quasi aufzuheben und alle Werte in die Summe einzubeziehen, ist etwas komplizierter, denn diese müssen dann auch alle für SUMME in nur einer FmlZelle bereitgestellt wdn, was mit zusätzl Fktt (ggf UDFs) erreicht wdn kann.

Gruß, Luc :-?
2.Ergänzung meiner AWen
19.12.2021 02:41:18
Luc:-?
Eigentlich war der DenkAnsatz mit leeren (bzw 0-)Argumenten 2 u.3 schon richtig, denn so wird normalerweise die gesamte Matrix in einer Zelle zV gestellt. Das würde dann auch beim Verteilen auf einen (ausgewählten¹) ZellBereich fktionieren, sofern das Spilling dabei mitspielt. Kommt allerdings das 4.Argument hinzu, kann das uU exakte Quell-Ziel-Positionsangaben erfordern. Auch ist es möglich, per MxKonstante aus 1en die Vervielfachung eines kontinuierlichen Bereichs oder eines Datenfelds zu erreichen (;=zeilen- bzw .=spaltenorientiert). Ist der Bereich lt Arg1 aber diskontinuierlich, hat die Positionierung Vorrang, wenn die Daten zusammenhängend dargestellt wdn sollen, wobei eine resultierende Matrix regulär sein sollte, sonst wird das nichts.
Wenn hier also unbedingt INDEX zum Einsatz kommen soll, wird man wohl nicht um ein ZwischenErgebnis in Hilfszellen herum kommen. Ich hatte so einst entdeckt, dass Xl alle Werte des Kronecker-Produkts (2er Matrizen) berechnet, obwohl ohne Expansion derselben auf die übliche 2d-ErgebnisMatrix nur die jeweils 1.Werte² der TeilMatrizen in den Zellen angezeigt wdn.
Alle Werte des Bsps können folglich mit der pluralen MatrixFml +VJoin(INDEX((A1;C1;E1:G2);;;{1;2;3});"";2) untereinander dargestellt wdn. Die UDF VJoin° erkennt dabei, dass hier teilw (übereinander) Arrays vorliegen und gibt sie vollständig als MxKonstante³ in TextForm zurück. Diese Angaben können dann mit der UDF TensEx weiterverarbeitet wdn, wobei eine Integration der 1. in die TensEx-Fml nicht möglich ist. Die plurale MatrixFml lautet dann bspw so: +TensEx(E21:E23)
Im vorliegenden speziellen Fall (Minimum-Ermittlung) muss natürlich nicht erst eine reguläre Matrix der relevanten Werte erzeugt wdn, man kann als 2.Fml gleich folgd NormalFml verwenden: =MIN(TensEx(E21:E23))
Die erzeugten zusätzlichen 0en sind nur der Ausgabe der Matrix auf dem Blatt geschuldet. Im erzeugten und von MIN direkt verwendeten Array sind sie Empty (Position vorhanden, aber Wert fehlt), so dass sie nicht als Minimum erscheinen können. Falls weitere 0en abgefangen wdn sollen, muss das am besten zuvor geschehen (ggf in 1.Fml). Aber das mag hier ja nicht das HptProblem sein… ;-)
Morhn, Luc :-?
PS: Übrigens, solche Zusammenhänge kann man entdecken, wenn man sich als (einigermaßen) ProgrammierKundiger auch für den „karierten Teil von Xl“ interessiert und nicht, wie so mancher Profi, nur auf (Xl-)Manipulationen in großem Stil abfährt. Das mag auch (neben Management) ein Xl-PgmmiererProblem gewesen sein, weshalb es wohl Jahrzehnte gedauert hatte, bis µS uns nun mit einer Flut von neuen Fktt überschüttet…
__________
° Im angekündigten Hybrid-VBX-Projekt wird eine UDF enthalten sein, mit der das ebenfalls möglich sein wird.¹ Bei MxFmlAbschluss (ohne Auto-Spilling).
² INDEX von LOcalc fktioniert anders - es wird der der ZellPosition entsprd Wert aus der jeweiligen TeilMatrix angezeigt. Unter den Tensor-Links sind dazu auch grafische Darstellungen zu finden.
³ Hier in der von der UDF TensEx benötigten US-Original-Notation.
Ich habe das aus Komplexitäts- und UniversalGründen nicht vorgesehen. Auch würde die MatrixNormierung (Ergänzung zu regulärer Matrix) so nicht vorgenommen wdn.

„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige