web-dev-qa-db-ja.com

リストのサブセットに対する一意の値のカウント

私は、粒子状の従業員が持っているユニークなスーパーバイザーの数を数えようとしています。 (以下のデータセットの例を参照してください。)

私はこれをラウンドアバウトで行うことができますが、そこにいる専門家の誰かが同じ仕事をするためのワンステップの公式を理解できるのではないかと思います。

方法についての私のラウンドは次のとおりです。

  1. スタッフとスーパーバイザーを単一の文字列に連結します:=CONCATENATE(A2,"-",B2)

  2. ifステートメントをcountifとともに使用して、スタッフスーパーバイザー文字列の最初のインスタンスに1を指定し、次の後に発生する場合は0を指定します。=IF(COUNTIF($D$2:$D2,D2)>1,0,1)

  3. 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      
1
tmgriffiths

C2、数式がコピーされました:

=SUMPRODUCT((A$2:A$13=A2)/COUNTIFS(A$2:A$13,A$2:A$13,B$2:B$13,B$2:B$13))

enter image description here

1
bosco_yip

FILTERおよびUNIQUE関数を備えたOffice365を使用している場合は、次を使用できます。

=COUNTA(UNIQUE(FILTER($B$2:$B$13,A2=$A$2:$A$13)))
1
Ron Rosenfeld

要約の種類の出力を生成するために必要な配列(CSE)式はほとんどなく、問題も修正されます:

enter image description here

仕組み:

  • セル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で数式を終了し、入力します。

  • 必要に応じて、数式のセル参照を調整します。

0
Rajesh S