別の列に基づいて列を選択的に検索する Excel 数式はありますか?

別の列に基づいて列を選択的に検索する Excel 数式はありますか?

列 C に適用する (ブール値を返す) この数式を作成するにはどうすればよいですか?

B2に「apple」が含まれている場合、A2の数字が他のAセルの行に存在するかどうかを確認します。しないB 列に「apple」が含まれています。(他の行の B 列にも「apple」が含まれており、A 列に重複する番号がある場合とない場合があるものとします)。

以下に、列 C のサンプルデータと目的の結果を示します。 ここに画像の説明を入力してください

答え1

IF と COUNTIFS を使用します。

=IF(B2="apple",COUNTIFS(A:A,A2,B:B,"<>"&B2)>0,"")

まず、B2が「apple」かどうかを確認します。

次に、リンゴであるものがあるかどうかを確認し、次に列 B に「リンゴ」を含まない A2 に一致するものがあるかどうかを確認します。

ここに画像の説明を入力してください

答え2

素早い回答:

配列数式を使用してこれを行うことができます。セルにC2次のように入力します。

=IF(B2="apple",SUM(ISNUMBER(A:A)*(A:A=A2)*(B:B<>B2))>0,"")

次に、Ctrl + Shift + Enter を使用して配列数式として登録します。その後、それを列の残りの部分にコピーします。

説明:

このIF関数は通常のソートです。B 列に「apple」がある場合は何らかの処理を行い、それ以外の場合は空の文字列を書き込みます。興味深いのは 2 番目の引数です。これは「apple」の場合の結果を返します。

まず、Excel がもっと簡単な数式で何を行うか考えてみましょう: SUM(A:A=A2)。 の内部ではSUM、Excel は「範囲 = 値」という形式の等式を認識します。 両辺が単純な値であれば、ブール値として評価されますが、ここでは Ctrl+Shift+Enter を使って配列数式をオンにしたため、Excel は左側の各要素に個別に操作を適用します、そしてそれをメモリ内の一時配列に保存します。この配列はSUM問題なく受け入れます。その結果は、列内の次のセルの数AになりますA2...

まあ、ほぼそうです。これは、値を 1 としてSUM扱い、値を 0 として扱う場合に当てはまります。そうでない場合は、ブール値を数値に変換する必要があります。1 つの方法は、次のように二重否定を使用することです。ただし、実際の数式の演算子は、これも処理します。TRUEFALSESUM(--(A:A=A2))*

実際の合計に戻ると、項 が追加されていますISNUMBER(A:A)。原理は同様です。これはA通常、範囲の処理方法がわからないため、列に対して要素ごとに操作します。次に、*演算子はブール値を含む 2 つの一時的な範囲を要素ごとに「乗算」します (基本的に、ANDそれらに操作を適用します)。そして、ブール値の新しい範囲を生成します。(これは、空白セルが 0 と等しいとカウントされないようにするためだけにあり、NOT(ISBLANK(A:A))同様に機能します。)

最後に、列内の各値Bないに等しいB2。最後に、SUMは結果の範囲に作用します。

結論として、最初の列に数字がある行を数えましたが、現在の行は列 では一致していますAが、列 では一致していませんB。条件は、これらの数が正であるということだけを示しています。

備考1:
*関数の代わりに演算子を 使用するのANDは、関数はデフォルトで範囲を引数として受け入れるため、「配列モード」をアクティブにして要素ごとの操作を実行するのではなく、一時的な範囲を使い果たしてしまうためです。

備考2:
数式を他の列にコピーするために列を絶対値にしたり、範囲に (絶対) 行番号を追加してA:A同じB:B列にある可能性のある他のもの (およびパフォーマンス) を無視したり、または や のように 2 つの列の名前付き範囲を作成しIDsFruits範囲の代わりにこれらの名前を数式に入力することもできます。

関連情報