
Ich habe eine Tabelle wie diese:
TABLE A
NAME VALUE 1 VALUE 2 RESULT
Daniel 1 4
John 3 5
Daniel 5 8
Ich muss eine SUMIF-Funktion in der Spalte RESULT ausführen, die die obigen Zellen prüft (mit OFFSET), und wenn eine Bedingung erfüllt ist, möchte ich, dass beide (OFFSET-)WERTE addiert werden. Ich weiß, dass ich dies erreichen kann, indem ich zwei SUMIF-Funktionen ausführe, aber ich würde gerne wissen, ob es möglich ist, dies mit nur einer Funktion zu tun und meinen Code dann lesbarer und schneller zu machen. Ich habe Folgendes ohne Erfolg versucht:
SUMIF(OFFSET($A$2,0,0,ROW()-ROW($A$2),1), "Daniel", SUM(OFFSET($B$2,0,0,ROW()-ROW($B$2),1),OFFSET($C$2,0,0,ROW()-ROW($C$2),1)))
Und:
IF(OFFSET($A$2,0,0,ROW()-ROW($A$2),1)="Daniel", SUM(OFFSET($B$2,0,0,ROW()-ROW($B$2),1),OFFSET($C$2,0,0,ROW()-ROW($C$2),1),0)
Das Ergebnis sollte sein:
TABLE A
NAME VALUE 1 VALUE 2 RESULT
Daniel 1 4 0
John 3 5 5
Daniel 5 8 5
John 1 5 18
Antwort1
Ein Offset ist nicht erforderlich, wenn keine strukturierten Tabellenverweise verwendet werden:
=SUMIF($A$1:A1,"Daniel",$B$1:B1)+SUMIF($A$1:A1,"Daniel",$C$1:C1)
Wenn Sie eine Formel wünschen, ist es eine Array-Formel:
=SUM(IF($A$1:A1="Daniel",$B$1:B1+$C$1:C1,0))
Je nach Version kann es erforderlich sein, beim Verlassen des Bearbeitungsmodus Strg-Umschalt-Eingabe statt der Eingabetaste zu verwenden.
Wenn strukturierte Verweise auf eine echte Tabelle verwendet werden, ist ein Offset erforderlich:
=SUM(IF(OFFSET(Table2[[#Headers],[NAME]],,,ROW($ZZ1))="Daniel",OFFSET(Table2[[#Headers],[VALUE 1]],,,ROW($ZZ1))+OFFSET(Table2[[#Headers],[VALUE 2]],,,ROW($ZZ1)),0))
Auch hier kann es je nach Version erforderlich sein, beim Verlassen des Bearbeitungsmodus Strg-Umschalt-Eingabe statt Eingabe zu verwenden.