私たちの宿題センターに通う生徒をリストしたスプレッドシートがあります。スプレッドシートには生徒が話す言語がリストされており、生徒の言語列に registerListLanguage に設定された名前付き範囲がある次の例のように、特定の言語を話す生徒のインスタンスをカウントしたいと考えています。
生徒名 | 生徒の言語 |
---|---|
偽名 | アルバニア語 |
別の | ウルドゥー語 |
生徒1 | ウルドゥー語、パンジャブ語、イタリア語 |
生徒2 | パンジャブ語 |
生徒3 | ウルドゥー語とパンジャブ語 |
これは、生徒が1つの言語(例:アルバニア語)のみを話す場合は、単純な=SUM(COUNTIFS(registerListLanguage, "で簡単に実行できます。アルバニア語)
しかし、多くの場合、生徒は2つ以上の言語を話すため、彼らが話す言語をリストする必要があります(上記の例の生徒1のように)
私の上司は、ウルドゥー語またはパンジャブ語を話す生徒について報告できるようにしてほしいと思っていますが、正確な数を把握するのに本当に苦労しています... 現時点では、次の式を使用しています。
=SUM(COUNTIFS(registerListLanguage, {"*Urdu*","*Punjabi*"}))
しかし、これはパンジャブ語とウルドゥー語の両方を話す生徒を 2 回カウントしているため、上記の例では生徒 1 と生徒 3 が 2 回カウントされます...
午後中ずっと、セルにウルドゥー語またはパンジャブ語のいずれかが含まれている場合に、そのセルを 1 回だけカウントする方法に苦労していました...
どこが間違っているのか誰か指摘してくれませんか?
ありがとう!
答え1
両方が存在する場合、COUNTIFS を減算することができます。
=SUM(COUNTIFS(B2:B6, {"*Urdu*","*Punjabi*"}))-COUNTIFS(B2:B6,"*Urdu*",B2:B6,"*Punjabi*")
または、どちらかがセル内にあるかどうかをチェックし、2 ではなく 1 としてカウントする SUMPRODUCT を使用します。
=SUMPRODUCT(--((ISNUMBER(SEARCH("Urdu",B2:B6)))+(ISNUMBER(SEARCH("Punjabi",B2:B6)))>0))
これにより、1 と 0 の 2 つの配列が作成され、それらが加算されます。追加された配列のいずれかの行が 0 より大きい場合は、1 が返されます。