Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1492to1496
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

Teilergebnis-Funktion mit Bedingung?

Teilergebnis-Funktion mit Bedingung?
11.05.2016 15:17:10
juli-time
Hallo,
ich würde gerne die Teilergebnis-Funktion nutzen, da ich viele verschiedene Filter nutzen und so immer gleich sehe, wie sich die Werte verändern.
z. B.
=TEILERGEBNIS(9;C22:C94)
Nun ist es aber so, dass ich das gern mit einer Bedingunge verküpfen würde:
es sind nur die Werte zu berücksichtigen die >0 und kleiner dies möchte ich nicht über den Filter einstellen, sondern soll immer gelten.
Geht so etwas prinzipiell? Oder gibt es etwas Alternatives zu TEILERGEBNIS?
besten Dank

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Teilergebnis-Funktion mit Bedingung?
11.05.2016 15:23:17
SF
Hola,
ungetestet:
=SUMMENPRODUKT(TEILERGEBNIS(9;INDIREKT("C"&ZEILE(22:94)))*(C22:C94>1)*(C22:C94
Gruß,
steve1da

AW: Teilergebnis-Funktion mit Bedingung?
11.05.2016 17:13:12
Juliane
Hallo,
ja funktioniert. Aber ich verstehe es leider nicht.
Die Funktion TEILERGEBNIS braucht doch einen Bezug. Warum wird hier die INDIREKT-Funktione verwendet
INDIREKT("C"&ZEILE(22:65))
und nicht einfach wie bsiher der Bezug "C22:C95" ?
LG

AW: es muss eine Matrix für die Auswertung her ...
11.05.2016 17:55:53
...
Hallo Juliane,
... und die kann man im konkreten Fall z.B. in einer Kombination mit INDIREKT() bilden.
Gemäß Deiner Vorgabe wäre aber in der Formel der Vergleich mit 0 und nicht mit 1 vorzunehmen.
Günstiger für die Auswertung ist es auch, wenn Du anstelle ZEILE(22:94) so: ZEILE(C22:C94) schreibst. Das Ergebnis ist gleich. Aber die "Belastung" für Excel ist geringer, wenn auch für nur die eine Formel fast bedeutungslos ist.
Gruß Werner
.. , - ...

Anzeige
AW: es muss eine Matrix für die Auswertung her ...
11.05.2016 19:09:50
Juliane
Also der Teil: "C"&ZEILE(C22:C65) stellt eine Matrix dar?
Ok, wusste nicht dass es so was gibt. Ich dachte immer eine Matrix hat man in geschweiften Klammern {

Matrix ist ein allgemeiner Begriff, der ...
11.05.2016 20:31:05
Luc:-?
…sowohl einen ZellBereich als auch ein Datenfeld bezeichnen kann, Juliane;
in geschweiften Klammern wdn MatrixKonstanten notiert, also mehrere feste Werte, die einen Vektor oder eine Matrix bilden. Diese Klammern wdn auch automatisch gesetzt (nach [strg][umsch][enter]), wenn eine Fml mehrere Werte liefern oder verarbeiten soll, sonst aber nur einen liefern bzw verarbeiten würde.
Einige Xl-Fktt sind aber so pgmmiert, dass sie das ohnehin tun.
INDIREKT liefert hier (wie auch INDEX) einen BereichsBezug, der von TEILERGEBNIS im Ggsatz zu reinen, bezugslosen Datenfeldern akzeptiert wird (das hängt mit der Sonderfkt dieser Container-Fkt zusammen, die Bereichsbezüge benötigt, weil sie ZellEigen­schaf­ten auswerten soll/muss).
FroPf! Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: daran wäre ich interessiert ...
12.05.2016 07:27:08
...
Hallo Luc,
... wie Du in dieser spez. Auswertungsformel INDEX() einsetzen würdest.
Gruß Werner
.. , - ...

Damit wollte ich mich eigentl nicht befassen, ...
17.05.2016 01:19:54
Luc:-?
…Werner,
das war nur ein weiteres Bsp für eine einen ZellBereichsBezug liefernd Xl-StandardFkt. Die meisten Xl-Fktt liefern nämlich nur Werte, keine ObjektBezüge.
Gruß, Luc :-?
PS: Wie du weißt, hatte ich nicht eher Zeit für eine AW.

...denn weder TEILERGEBNIS noch AGGREGAT ...
17.05.2016 04:42:46
Luc:-?
…können unzusammenhängende ZellBereiche verarbeiten, Werner;
diese lösen zwar auch bei TEILERGEBNIS keine Eingabe-FehlerMeldung aus, wdn aber nicht verarbeitet. Folglich bleibt auch eine duale MatrixFml erfolglos, zumal das Ergebnis von INDEX hierbei erst speziell behandelt, quasi „stabilisiert“ wdn müsste, was zu einem Datenfeld führen würde, das die o.g. Fktt erst recht nicht verarbeiten könnten.
Allerdings kann die Feststellung bzgl unzusammenhängender ZellBereiche für diese Fktt nicht verall­gemeinert wdn, sondern bezieht sich in 1.Linie darauf, dass es mir nicht gelungen ist (und wahrscheinlich auch nicht oW möglich ist), mit INDEX einen unzusammenhängenden ZellBereich zu erzeugen, der von diesen Fktt verarbeitet wdn kann. Das wäre aber möglich, wie folgende MxFmln zeigen:
{=TEILERGEBNIS(109;ChooseIf(C22:C94;(C22:C94>1)*(C22:C94 {=TEILERGEBNIS(109;ChooseIn(C22:C94;(C22:C94>1)*(C22:C94 {=AGGREGAT(9;6;ChooseIf(C22:C94;(C22:C94>1)*(C22:C94 {=AGGREGAT(9;6;ChooseIn(C22:C94;(C22:C94>1)*(C22:C94 Die UDFs ChooseIf und ChooseIn erzeugen ebenfalls einen unzusammenhängenden Bereich, der aber - unter Wegfall der dem BedingungsVektor in Arg2 nicht entsprd Zellen - geordnet ist, während ein solcher Wegfall mit INDEX anscheinend nicht machbar ist. Der Versuch, stattdessen eine Leerzelle zu verwenden, führt zu einem ungeordneten unzusammen­hängenden Bereich mit Objekt­Wiederholung, der nicht toleriert wird, weil er wohl auch nur mit einer pluralen MxFml dargestellt wdn kann.
Statt AGGREGAT kann aber auch die dir ja schon bekannte nachfolgende UDF (als singulare Mx- oder NormalFml) verwendet wdn:
{=AggregateXk(9;6;C22:C94*(C22:C94>1)*(C22:C94 =AggregateXk(-9;6;C22:C94*(C22:C94>1)*(C22:C94 Da gefiltert wdn soll, muss das 1.Arg von TEILERGEBNIS übrigens 109 (nicht bloß 9) lauten!
Morrn, Luc :-?

Anzeige
AW: schon klar ...
17.05.2016 18:54:05
...
Hallo Luc,
... ich hatte die Frage auch nur gestellt, weil es mE hier ohne VBA bzw. ohne UDF keine vernünftige Lösung mit INDEX() anstelle von INDIREKT() geben kann. So konnte man nämlich Deine Aussage vom 11.05 interpretieren.
Gruß Werner
.. , - ...

Falls meine 2.AW etwas verwirrend gewesen ...
18.05.2016 04:18:25
Luc:-?
…sein sollte, Werner,
hier nochmal die Quintessenz:
AGGREGAT und TEILERGEBNIS können ebenso wie INDEX auch unzusammenhängende Bereiche verarbeiten, nur kann INDEX anscheinend keine „reinen“ erzeugen, mal abgesehen davon, dass die auch nicht oW auf Xl-ZellBereiche abbildbar wären. Das ist bei den erwähnten UDFs CountIn und CountIf auch so, weshalb bei INDEX wohl auf diese Möglichkeit verzichtet wurde, die auch durch die Abhängigkeit von der Xl-Steuerung verhindert würde. Die genannten UDFs haben diese Abhängigkeit nicht. Gleiches dürfte auch für die ~WENNs-Fktt gelten, wobei hier nicht unbedingt (wie bei meinen UDFs) BereichsBezüge als ZwischenErgebnis erzeugt wdn müssten, obwohl das wg der Beschränkung auf BereichsBezüge in den HptArgumenten möglich wäre. Die UDFs erzeugen aber ebenso wie INDEX (falls möglich) solche.
Interessant ist auch, was passiert, wenn INDEX mit der UDf NoErrRange kombiniert wird. Obwohl nachweislich durch INDEX im konkreten Fall tatsächlich ein unzusammenhängender Bereich erzeugt wird, der mit Hilfe dieser UDF auch abgebildet wdn kann, wdn dabei die Abstände zwischen den verbleibenden Zellen beibehalten und diese Lücken dann mit einem Fehlerwert gefüllt:
 NOPQRSTU
5d10A4#WERT!10#WERT!4
6A0B2#WERT!0#WERT!2
7B4d5#WERT!4#WERT!5
8  R5:U7: {=NoErrRange(INDEX(N5:Q7;0;WENN(ISTZAHL(N5:Q7);SPALTE(A:D);"")))}
Das dürfte auf die Xl-Steuerung zurückzuführen sein und beweist, dass INDEX hier tatsächlich, ebenso wie die UDF, ZellBezüge zurückgibt. Die UDF geht diese nur durch, wobei keine Fehlerwerte auftauchen, denn der entsprd Zyklus wird nur 6× durchlaufen und behandelt stets Zahlen. Aber das ist eben nur mit einer pluralen MxFml möglich (duale und singulare scheiden hier aus)!
Die o.g. UDFs reagieren in Zusammenarbeit mit NoErrRange anders. Das Ergebnis der älteren, ChooseIn, wird nicht akzeptiert und die jüngere, ChooseIf, enthält noch einen Fehler, den ich dank deiner Anfrage entdeckt habe. Allerdings kann gesagt wdn, dass sie mit NoErrRange verträglich ist, aber das Ergebnis aus beiden dann uU erst noch normiert (mit UDF RegAr*) wdn muss, um abgebildet wdn zu können. Es enthält dann aber wohl keine (unkontrollierten) Lücken.
Nebenbei, INDIREKT reagiert hier ganz anders als INDEX und liefert den gesamten Bereich auch mit einer singularen MxFml, ist also nicht von der Xl-Steuerung abhängig, kann aber unzusammenhängende Bereiche weder verarbeiten noch erzeugen.
Übrigens, mit den beiden Choose~-UDFs kann man sein eigenes SUMME- oder ZÄHLENWENNs in einer Fml mit SUMME bzw ANZAHL zusammenstellen!
* Diese Normierung ist bei der INDEX-basierten Fml offenbar nicht möglich.
Morrn, Luc :-?

Anzeige
AW: nun meine threadbezogene Quintessenz ...
19.05.2016 16:14:29
...
Hallo Luc,
... ohne VBA/UDF gibt es für die eingebrachte Lösungsformel mit INDEX() leider keinen vertretbaren alternativen Lösungsweg.
Danke für Deine Ausführungen.
Gruß Werner
.. , - ...

Tja, das sieht ganz so aus, ...
20.05.2016 01:45:25
Luc:-?
…Werner;
nebenbei, INDEX scheint doch eine recht besondere Fkt zu sein, die wohl mehr als alle anderen mit der Xl-Steuerung (calculation engine) verbandelt ist, d.h., Xl-Interna nutzt, auf die man per VBA keinen direkten Zugriff hat, was auch erklären würde, warum es mir bis dato nicht gelungen ist, ihr Verhalten 1:1 mit einer UDF zu simulieren…
Luc :-?

Anzeige
AW: Matrix ist ein allgemeiner Begriff, der ...
12.05.2016 07:42:05
Juliane
Danke für die Erklärung

AW: Teilergebnis-Funktion mit Bedingung?
11.05.2016 18:01:37
Michael
Hi,
das Summmenprodukt ist eine Array- oder auch Matrix-Formel, d.h. sie verarbeitet nicht einzelne Daten, sondern Daten in DatenFELDERN (das ist ein Array) Stück für Stück.
Wenn Du Teile der Formel markierst...
Userbild
und F9 drückst, werden alle Elemente des jeweiligen Arrays angezeigt:
Userbild
Das Gleiche kannst Du auch mit den geklammerten Teilen (C22:C94>0) und (C22:C94<600) auch machen, dann wird's deutlicher.
Achtung: Nachdem Du F9 gedrückt hast, verlasse die Formel bitte mit ESC, sonst wird die Formel verhackstückt und durch die Werte im Array ersetzt.
Das Indirekt sorgt dafür, daß nur jeweils *ein* Teilergebnis aus der *jeweiligen* Zelle errechnet wird.
Ob man dann überhaupt ein Teilergebnis braucht und nicht nur einfach
=SUMMENPRODUKT((C22:C94)*(C22:C94>0)*(C22:C94<600))
weiß ich jetzt nicht.
Schöne Grüße,
Michael

Anzeige
AW: TEILERGEBNIS() ist notwendig, weil ...
11.05.2016 18:05:57
...
Hallo Michael,
... Juliane will ja gefilterte Daten auswerten.
Gruß Werner
.. , - ...

schau an, schau an
11.05.2016 18:45:17
Michael
Hallo Werner,
das hatte ich noch nie so benutzt.
Muß wohl meinen Läwwel runtersetzen...
Herzlichen Dank für den Denkanstoß, bis bald &
schöne Grüße,
Michael

so macht HERBER Spass...
12.05.2016 07:37:12
MB12
gute Frage und Nachfrage, Antworten mit verständlichen und nützlichen Zusatzinfos. Habe *als Anfänger* wieder viel dazugelernt.
Gruß
Margarete

finde ich auch! Grüße, owT
12.05.2016 19:42:19
Michael

AW: Teilergebnis-Funktion mit Bedingung?
12.05.2016 01:14:41
Daniel
HI
leider wurde das ZählenWenn und SummeWenn nicht mit in Teilergebnis übernommen.
wenn SummeWenn oder ZählenWenn auf gefilterte Daten angewendet werden sollen, dann geht das am einfachsten so:
füge eine Hilfsspalte ein (z.B. in D22:D94) mit folgender Formel (Formel für D22):
=Teilergebnis(3;C22)

Das Ergebnis dieser Formel ist 1, wenn die Zeile 22 eingeblendet ist und 0, wenn sie ausgeblendet ist.
dann kannst du einfach mit SummeWenns auswerten:
=SummeWenns(C22:C94;D22:D94;1;C22:C94;">0";C22:C94;"
Gruß Daniel

Anzeige
@Daniel: deine Antwort ...
12.05.2016 07:41:36
MB12
war damit natürlich auch gemeint!
Gruß
Margarete

AW: Teilergebnis-Funktion mit Bedingung?
12.05.2016 07:43:22
Juliane
Danke. Auch eine Variante

11 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige