HAS 関数

適用先
Excel for Microsoft 365 Excel for Microsoft 365 for Mac

HAS 関数を使用すると、配列または範囲内の任意の場所に値が存在するかどうかをチェックできます。 値が見つかった場合は TRUE を返し、見つからない場合は FALSE を返します。

HAS は入れ子になった配列のすべてのレベルを検索するため、1 つのセル内に格納されている配列で使用できます。

構文

HAS 関数は、配列内に値が存在するかどうかを判断します。

HAS 関数の構文は次のとおりです。

HAS(配列, 値)

引数 説明
配列
(必須)
検索する配列または範囲。 ネストされた配列のすべてのレベルが検索されます。
値
(必須)
検索する値または値の配列。

注

  • 比較はタイプに関して厳密です。 数字 1 はテキスト "1" と一致せず、数字 1 は TRUE と一致しません。 型を比較する必要がある場合は、先に値を変換します (たとえば、VALUE 関数を使用して)。
  • テキストの比較では大文字と小文字が区別されないため、"apple" は "APPLE" と一致します。
  • value が配列の場合、HAS は値と同じ形状を持つ TRUE と FALSE の結果の配列を返します。 各値は個別にテストされます。
  • array が空の場合、HAS は #CALC! エラーを返します。
  • value にエラーが含まれている場合は、そのエラーが返されます。
  • 一度に複数の値を TRUE または FALSE の 1 つの答えでチェックするには、HASANY または HASALL を使用します。

使用例

サンプル データをコピーし、新しい Excel ワークシートのセル A1 に貼り付けます。 必要に応じて、列幅を調整してすべてのデータを表示してください。

使用例 1

範囲に特定の値が含まれているかどうかを確認します。

データ        
10 20 30 40 50
数式 質問
=HAS(A2:E2,30) リストに30個は入っていますか?
=HAS(A2:E2,99) リストに99はありますか?

以下の図に、これらの方法を示します。

HAS は、10、20、30、40、および 50 を含む範囲を検索すると、30 の場合は TRUE、99 の場合は FALSE を返します

使用例 2

一度に複数の値を確認します。 2 番目の引数は配列であるため、HAS は、検索した値と同じ形状で、値ごとに 1 つの結果を返します。

データ    
1 2 3

結果がスピルされる可能性があるよう、2 番目の数式の下に 2 つの空のセルを残します。

数式 説明
=HAS(A2:C2,{{2,5}}) 入れ子になった配列 {TRUE,FALSE} を含む 1 つのセルを返します
=HAS(A2:C2,{2;5;3}) 3 つのセルの下にスピルして TRUE、FALSE、TRUE を返します (値ごとに 1 つの結果)

以下の図に、これらの方法を示します。

HAS は、1 つの入れ子になった配列セルで TRUE と FALSE を返し、3 つのセルで TRUE、FALSE、TRUE を返します

使用例 3

ネストされた配列内を検索します。 表全体をコピーし、新しいワークシートのセル A1 に貼り付けます。 A2 の数式は、ネストされた配列を 1 つのセルに格納します。

データ  
={{{1,2};{3,4}}}
数式 説明
=HAS(A2,3) TRUE を返します。 HAS はすべてのレベルを検索し、内部に 3 個が見つかります {3,4}
=HAS(A2,5) FALSE を返します。 ネストされた配列のどのレベルにも 5 個の

以下の図に、これらの方法を示します。

HAS は入れ子になった配列内で 3 つを見つけ、TRUE を返します。5 個の検索では FALSE が返されます