列Aには、さまざまな名前のリストがあります。列Bには、0または1の値があります。
列Aから列Bに1を持つすべての一意の名前のカウントを取得したい
以下の配列式を使用すると、一意の名前をカウントできますが、列Bに条件を適用できません。
=SUM(1/COUNTIF(A:A,A:A))
B2:B100の同じ行に1があるA2:A100のdifferentの名前をカウントするために、この「配列式」を100行以下と仮定します。
=SUM(IF(FREQUENCY(IF(B2:B100=1,IF(A2:A100<>"",MATCH(A2:A100,A2:A100,0))),ROW(A2:A100)-ROW(A2)+1),1))
CTRL+SHIFT+ENTER
で確認済み
2つは同じではないので、ユニークではなく異なると言うことに注意してください
このような?
=SUM(--(FREQUENCY(IF(($B$1:$B$8=1), COUNTIF($A$1:$A$8, "<"&$A$1:$A$8), ""), COUNTIF($A$1:$A$8, "<"&$A$1:$A$8))>0)))
これは配列数式です。を押す必要があります CTL + SHIFT + ENTER
スクリーンショット
この一般的な問題の比較的簡単な解決策は
= SUM((B:B = 1)/ COUNTIFS(A:A、A:A、B:B、B:B))
配列数式として入力されます。
配列のサイズを実際にデータがある場所に制限する必要があります。
数式である必要がありますか?これを行う簡単な方法は、列AおよびBからピボットテーブルを作成することです。次に、列Bをフィルターフィールドとして、Aのカウントを値として設定します(列AおよびBにラベルを付ける必要があります)。次に、ピボットシートのA4(少なくとも既定では)に回答を含める必要があります。これはあらゆるサイズのリストで機能し、複数の条件がある場合に実際に機能します。
数式である必要がある場合、完全に数式である必要がありますか?数式が機能する前にAによる並べ替えが許可されている場合、このワークフローはどうでしょうか。私はこれに夢中ではなく、改善できると思います。
1)A(昇順または降順)でソートし、次にB(降順)でソートする
2)Cでは、Cの各行に次のような式を入力します。
=if (and(A2<>A1,B2=1),1,0)
C1は次のようになります。
=b1
C2からデータの最後の行(c500など)までドラッグします。
3)次に、C、= sum(c1:c500)を合計してカウントします。
(必要な最大数がわかっている限り)数式をデータの行の下にドラッグできます。すべての空白行に対して0を返す必要があります。その後、AとBにデータを追加すると、残りは自動的に更新されます。データを再分類する必要がある可能性があります。
ピボットテーブルソリューションの利点の1つは、既存のデータの行内に新しいデータを挿入する限り、データセットとともに自動的に成長できることです。もちろんソートは必要ありません。
ピボットテーブルで簡単......: