Tableau FIND関数・FINDNTH関数の使い方と実務活用|文字列から位置を取得する方法

TableauのFIND関数は、文字列の中から特定の文字や語句がどこにあるかを検索する関数です。

文字列処理やデータ整形の場面でよく使われ、**「何文字目に〇〇があるか」**を調べる用途で非常に便利です。

目次

FIND関数とは?

FIND関数は、指定文字列の中に検索対象の文字や語句があるかを探し、**最初に見つかった位置(1始まり)**を返します。

例:

FIND("福井県", "福") → 結果:1
FIND("福福福井県", "福") → 結果:1
FIND("井福県", "福") → 結果:2
FIND("東京都", "福") → 結果:0(見つからない)

注意:「0」はエラーではなく「見つからなかった」という正常な結果です。

FIND関数の構文と引数

FIND(対象文字列, 検索文字列 [, 開始位置])
  • 対象文字列:検索対象となる文字列(例:「住所」「製品ID」など)
  • 検索文字列:見つけたい文字や単語(例:「@」や「県」)
  • 開始位置(省略可):何文字目から検索を始めるか(1から始まる)

例:2文字目以降から探す → FIND([文字列], "県", 2)

FINDNTH関数との違い|n番目に現れる位置を探す

FIND関数では最初に見つかった位置しか返せませんが、FINDNTH関数を使えば2回目、3回目…の出現位置も取得可能です。

FINDNTH関数の構文

FINDNTH(対象文字列, 検索文字列, n)
  • 例:3回目に出てくる「,」の位置を探す
FINDNTH("A,B,C,D,E", ",", 3) → 結果:5

REGEXP_REPLACEとの組み合わせで複数パターンを抽出

FINDは単一の文字列を探すのに向いていますが、複数パターンに対応するには正規表現(REGEXP_REPLACE)との併用が有効です。

FIND(
  REGEXP_REPLACE([都道府県], "埼玉県|神奈川県|群馬県|茨城県|栃木県", "@"),
  "@"
)

→ 該当する県名をまとめて「@」に置き換え、その位置をFINDで取得。

FIND関数の具体的な使い方(実務例)

メールアドレスからユーザー名を取得

LEFT([メール], FIND([メール], "@") - 1)

例:「mail@fc-datascience.com」 → 結果:「mail」

メールアドレスからドメイン部分を取得

MID([メール], FIND([メール], "@") + 1)

結果:「fc-datascience.com」

製品コードから区切り位置を探して分解

LEFT([製品ID], FIND([製品ID], "-") - 1)

→ 製品IDが「A123-B456」のとき、区切り前「A123」を抽出。

FIND関数とSPLIT関数の違いと使い分け

関数名概要向いている用途
FIND指定文字列が何文字目にあるかを返す特定の位置取得・部分抽出
SPLIT指定区切り文字で分割し、n番目の要素を取得構造がはっきりした文字列

SPLITが使えるなら基本的にそちらの方が簡潔です。
ただし、動的な検索や位置情報を使った柔軟な処理はFINDの方が適しています。

よくある質問(FAQ)

Q. 位置は0始まりですか?1始まりですか?
→ Tableauでは1始まりです。文字列の最初の文字が1文字目です。

Q. 見つからなかった場合の返り値は?
→ 「0」です。計算時にはこの点に注意してIF文などで分岐処理を入れるのがベスト。

Q. 複数出現した場合は?
→ FINDは最初に見つかったものだけを返します。2回目以降はFINDNTHで対応可能です。

まとめ

FIND関数は、Tableauにおける文字列検索・処理の基本関数のひとつです。特定文字の位置を調べたり、文字列を分解したりと、実務での応用範囲が非常に広いのが特徴です。

FINDとFINDNTH、そしてSPLITの使い分けを理解すれば、ほぼすべての文字列操作に対応可能です。

正規表現と組み合わせることで、より複雑な条件に柔軟に対応できるようになります。

Comment

コメントする

目次