私は、粒子状の従業員が持っているユニークなスーパーバイザーの数を数えようとしています。 (以下のデータセットの例を参照してください。)
私はこれをラウンドアバウトで行うことができますが、そこにいる専門家の誰かが同じ仕事をするためのワンステップの公式を理解できるのではないかと思います。
方法についての私のラウンドは次のとおりです。
スタッフとスーパーバイザーを単一の文字列に連結します:=CONCATENATE(A2,"-",B2)
if
ステートメントをcountif
とともに使用して、スタッフスーパーバイザー文字列の最初のインスタンスに1を指定し、次の後に発生する場合は0を指定します。=IF(COUNTIF($D$2:$D2,D2)>1,0,1)
sumif
を使用して、この列の合計を追加しますが、その特定のスタッフメンバーに対してのみ:=SUMIF($A$2:$A$13,A2,$E$2:$E$13)
ご覧のとおり、Sum if列は、手動で入力された一意のスーパーバイザーの数列と同じように正しい値に到達します。
Data "Goal" Calculated
------------------ ---------------------------- --------------------------------------
Staff | Supervisor | Number of unique supervisors | Concat | 1 if first instance | Sum if
------------------------------------------------------------------------------------------
Anne | F | 1 | Anne-F | 1 | 1
Bob | A | 2 | Bob-A | 1 | 2
Bob | B | 2 | Bob-B | 1 | 2
Mary | D | 2 | Mary-D | 1 | 2
Mary | D | 2 | Mary-D | 0 | 2
Mary | E | 2 | Mary-E | 1 | 2
Sue | G | 2 | Sue-G | 1 | 2
Sue | H | 2 | Sue-H | 1 | 2
Tom | I | 2 | Tom-I | 1 | 2
Tom | I | 2 | Tom-I | 0 | 2
Tom | J | 2 | Tom-J | 1 | 2
Tom | J | 2 | Tom-J | 0 | 2
FILTER
およびUNIQUE
関数を備えたOffice365を使用している場合は、次を使用できます。
=COUNTA(UNIQUE(FILTER($B$2:$B$13,A2=$A$2:$A$13)))
要約の種類の出力を生成するために必要な配列(CSE)式はほとんどなく、問題も修正されます:
仕組み:
セルH161
内の配列(CSE)数式:
{=IFERROR(INDEX($F$161:$F$172, MATCH(0,COUNTIF($H$160:H160, $F$161:$F$172), 0)),"")}
この配列(CSE)数式をセルI161
に入力します。
{=IF(SUMPRODUCT((($F$161:$F$172=H161))/COUNTIFS($F$161:$F$172,$F$161:$F$172&"",$G$161:$G$172,$G$161:$G$172&""))=0,"",SUMPRODUCT((($F$161:$F$172=H161))/COUNTIFS($F$161:$F$172,$F$161:$F$172&"",$G$161:$G$172,$G$161:$G$172&"")))}
N.B。
Ctrl + Shift + Enterで数式を終了し、入力します。
必要に応じて、数式のセル参照を調整します。