
私の状況は次のとおりです。3 つのリストの 9 つのグループがあるシートを作成しています。選択された項目はすべて、データ検証によって作成されたリストに含まれています。必要なのは、データ検証リストから行われた 3 つの選択が、以前の 3 つのグループで行われた選択と異なる場合、これらの 3 つのグループのそれぞれにスコアを追加することです (3 つのグループが同じ選択になることはなく、常に互いに一意であることに注意してください)。
基本的に、グループ 1 に青、緑、紫があるとします。選択が一意であるため、値は 1 になります。グループ 2 にはオレンジ、黄色、ピンクがあり、選択が一意であるため、値も 1 になります。以下同様に続きますが、グループ 9 にマゼンタ、赤、紫があるとします。このグループは完全に一意ではないため (紫はグループ 1 で選択されました)、スコアは 0 になります。選択は異なる時間に行われ、これらの別々の間隔でスコアが付けられることに注意してください。つまり、グループ 2 はグループ 1 とのみ比較され、グループ 3 はグループ 1 と 2 の両方と比較されます。
次のような式を試しました:
=IF(NOT(B1:B3=A1:A3),1,0)
ただし、セルには 1 または 0 ではなくスコアが表示されました。#VALUE!
各セルを個別に実行する必要があるかどうか疑問に思っています。セル B1 の内容がセル A1、A2、または A3 の内容と等しくない場合はセル B2 の内容を確認し、セル A1、A2、または A3 の内容と等しくない場合はセル B3 の内容を確認し、セル A1:A3 の内容と等しくない場合は、そのリストの値は 1 になります。これを個別に実行する必要がある場合、数式をどのように表現すればよいか、何かアイデアはありますか? 次のようなものになりますか?
=IF(NOT(A1:A3=B1,NOT(A1:A3=B2,NOT(A1:A3=B3),1,0)))
これを Excel で実行することは可能ですか?
私は Windows 10 で最新バージョンの Excel (Office 365) を使用しています。ご協力いただければ幸いです。
答え1
ステップバイステップ(あらゆるレベルの将来の読者をサポートするため)
関数を使用して、COUNTIF()
範囲に値が含まれているかどうかを確認します。つまり、値がB1
範囲内にあるかどうかを確認するにはA1:A3
、次のように記述します。
=COUNTIF(A1:A3,B1)
これを0と比較することでブール値の結果に変換できます(つまり、0B1
ではありませんA1:A3
)。
=COUNTIF(A1:A3,B1)=0
B2
しかし、とB3
が に出現しないことも確認する必要がありますA1:A3
。そのためには 関数を使用できますAND()
。
=AND(COUNTIF(A1:A3,B1)=0,COUNTIF(A1:A3,B2)=0,COUNTIF(A1:A3,B3)=0)
B1
これは、 、 、B2
のいずれもB3
に含まれない場合に True を返しますA1:A3
。この関数を行全体にコピーしてチェックされる範囲を調整できるようにするには、最初のセルへの参照を固定列参照A1:A3
->に変更します$A1:A3
。数式を右にコピーすると、範囲は に拡大し$A1:B3
、$A1:C3
最終的に$A1:I3
9 番目の列で になります。
上記の数式はブール値の結果、True
または を返しますFalse
。1 または 0 が必要であると示しましたが、これはIF()
前の数式の周囲に関数を追加することで簡単に実行できます。
セルに数式をB4
次のように書き込むことができます。
=IF(AND(COUNTIF($A1:A3,B1)=0,COUNTIF($A1:A3,B2)=0,COUNTIF($A1:A3,B3)=0),1,0)
セルにコピーするC4:I4
定義によれば、3 つの各グループは互いに固有であるため、 では数式は必要なくA4
、単に 1 に設定できます。
アップデート
注意! のような範囲の空白セルは1 を返します。指定していませんが、欠損値のあるグループに 0 を返すようにしたい場合があります。関数C1:C3
に 4 番目の項を追加することでそれが可能になります。 のエントリは次のようになります。AND()
COUNTBLANK((B1:B3)=0
B4
=IF(AND(COUNTIF($A1:A3,B1)=0,COUNTIF($A1:A3,B2)=0,COUNTIF($A1:A3,B3)=0,COUNTBLANK(B1:B3)=0),1,0)
セルにコピーする前にC4:I4