SEARCH 関数

特定の文字またはテキスト文字列が最初に見つかった位置までの文字数を左から右に数えて返します。 検索では大文字と小文字は区別されず、アクセントは区別されます。

構文

SEARCH(<find_text>, <within_text>[, [<start_num>][, <NotFoundValue>]])

パラメーター

項目

定義

find_text

検索するテキスト。

find_text では、ワイルドカード文字 (疑問符 (?) およびアスタリスク (*)) を使用できます。 疑問符は任意の 1 文字に一致し、アスタリスクは任意の文字列に一致します。 疑問符またはアスタリスク自体を検索する場合は、これらの文字の前にチルダ (~) を入力してください。

within_text

find_text を検索する対象のテキスト、またはテキストが含まれている列。

start_num

(省略可能) 検索を開始する within_text 内の文字の位置。 省略した場合は 1。

NotFoundValue

(省略可能) 操作で一致するサブ文字列が見つからなかったときに返される値で、通常は 0、-1、または BLANK()。

戻り値

1 つ目のテキスト文字列の開始位置 (2 つ目のテキスト文字列の先頭から数えた文字数)。

説明

  1. 検索関数では、大文字と小文字が区別されません。 "N" を検索すると、最初に見つかった 'N' または 'n' が返されます。

  2. 検索関数では、アクセントが区別されます。 "á" を検索した場合、最初に見つかった 'á' が返され、'a'、'à'、または大文字の 'A'、'Á' は返されません。

  3. この関数を使用すると、1 つ目のテキスト文字列を 2 つ目のテキスト文字列内で検索し、1 つ目の文字列の開始位置を返すことができます。

  4. SEARCH 関数を使用すると、別の文字列内の文字やテキスト文字列の位置を判別し、MID 関数を使用してテキストを返すことも、REPLACE 関数を使用してテキストを変更することもできます。

  5. find_text が within_text 内に見つからない場合は、エラーが返されます。 この動作は Excel と似ていて、部分文字列が見つからない場合に #VALUE を返します。 within_text が NULL の場合、このコンテキストでは空の文字列として解釈されます。

この DAX 関数は、配置済みのモデルで使用し、DirectQuery モードでクエリを実行した場合には、異なる結果を返すことがあります。 DirectQuery モードのセマンティックの相違点の詳細については、https://go.microsoft.com/fwlink/?LinkId=219171 を参照してください。

例: 文字列内の検索

説明

次の式は、"printer" という単語内で英字 "n" の位置を見つけます。

コード

=SEARCH("n","printer")

コメント

"n" は "printer" という単語の 4 番目の文字であるため、この式は 4 を返します。

例: 列内の検索

説明

SEARCH の引数として列参照を使用できます。 次の数式は、[PostalCode] 列内で文字 "-" (ハイフン) の位置を見つけます。

コード

=SEARCH("-",[PostalCode])

コメント

返される結果は、ハイフンのインデックス位置を示す数値列です。

例: SEARCH によるエラー処理

説明

前の例の数式は、基になる列のすべての行に検索文字列が見つからない場合に失敗します。 そのため、次の例では、すべての行について有効な結果が返されるように、SEARCH 関数と共に IFERROR を使用する方法を示しています。

次の式は、列内で文字 "-" の位置を見つけ、文字列が見つからない場合は -1 を返します。

コード

= IFERROR(SEARCH("-",[PostalCode]),-1)

コメント

エラー出力として使用する値のデータ型が、エラー以外の出力のデータ型と一致する必要があることに注意してください。 この場合、SEARCH は整数値を返すため、エラーが発生した場合に出力する数値を指定します。

ただし、IFERROR の 2 番目の引数として BLANK() を使用することで、空白 (空の文字列) を返すこともできます。

関連項目

参照

MID 関数

REPLACE 関数

その他の技術情報

文字列関数 (DAX)