配列を操作する必要があります。
配列には次の 2 種類があります。
numeric {1,0,1,1,1,0,0,1}
boolean {TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE}
それらの間で変換するには、次を使用できます。
MATCH function
MATCH(1,{1,0,1,1,1,0,0,1},0) -> will result {TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE}
simple multiplication
{TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE}*{TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE} -> will result {1,0,1,1,1,0,0,1}
次の図のように配列を入力して、match 関数で配列を確認できます。MATCH 関数は配列を「OR」関数として扱うことに注意してください (1 つの一致は true になります。つまり:
MATCH(1,{1,0,1,1,1,0,0,1},0)=TRUE
, YOU MUST CTR+SHIFT+ENTER !!! FOR IT TO GIVE AN ARRAY BACK!!!
以下の例では、ケースごとに管理者を除くすべての従業員の時間を合計したいことを示しています
2 つのオプションがあります。長い単純な方法と、複雑で高速な方法です。
long simple way
D2=SUMPRODUCT(C2:C9,(A2=A2:A9)*("admin"<>B2:B9)) <<- SUMPRODUCT makes a multiplication
基本的に A1={2,3,11,3,2,4,5,6}*{0,1,1,0,0,0,0,0} (SUMPRODUCT の右側の数値配列でなければなりません!!!) すなわち: A1=2*0+3*1+11*1+3*0+2*0+4*0+5*0+6*0
セルをドラッグして残りのセルをオートコンプリートすると、D9=SUMPRODUCT(C9:C16,(A9=A9:A16)*("admin"< >B9:B16))、テーブルがあり、異なる順序で結果を表示したい場合、上記と同じ範囲外です
the fast complicated way
D3=SUMPRODUCT(INDIRECT("c2:c9"),(A3=INDIRECT("a2:a9"))*("admin"<>INDIRECT("b2:b9")))
それは同じですが、オートコンプリートまたはテーブルの並べ替え時に変更したくないセルで INDIRECT が使用されたことを除いて、INDIRECT は時々 VOLATILE ERROR を与えることが警告されます。単一のセルで使用しないこと、または配列で一度だけ使用することをお勧めします
f* c* 写真を投稿できません :( 表は:
case emplyee hours totalHoursPerCaseWithoutAdmin
1 admin 2 14
1 him 3 14
1 her 11 14
2 him 3 5
2 her 2 5
3 you 4 10
3 admin 5 10
3 her 6 10
配列をチェックする関数については、関数の挿入ボタン (および fx のように見えます) を開き、MATCH をダブルクリックします。次に、Lookup_array 内に A2=A2:A9 のような値を入力すると、この例では {TRUE,TRUE が返されます。 ,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE} これは、最初の 3 行のみが case=1 からのものであるためです