文字列の位置を特定したいFIND関数-GSS/Excel/関数

文字列の位置を特定したいFIND関数-GSS/Excel/関数

文字列内の検索を行うFIND関数

メールアドレスから「@」マークの位置を知りたい、商品コードから特定の文字の位置を特定したい、URLから特定の文字列の位置を調べたいなど、文字列操作において位置情報が必要になることってありますよね。

今回はFIND関数をご紹介します。FIND関数は文字列内で特定の文字や文字列が何文字目にあるかを教えてくれる便利な関数です。他の文字列関数と組み合わせることで、データの抽出や加工が格段に楽になります。

【サンプルデータの表示画像】
A列にメールアドレス、B列に商品コード、C列にファイルパスが入力されたスプレッドシートの例

今回のサンプルデータでは、A列にメールアドレス、B列に商品コード、C列にファイルパスが入力されています。これらの文字列から特定の文字の位置を調べる例を通してFIND関数を学習していきましょう。

FIND関数の構文

=FIND(検索文字列, 対象文字列, [開始位置])

パラメータの詳細は以下の通りです:

  • 検索文字列:探したい文字または文字列
  • 対象文字列:検索を行う文字列
  • 開始位置:検索を開始する位置(省略可能、デフォルト1)
重要: FIND関数は大文字・小文字を区別します。大文字・小文字を区別しない検索にはSEARCH関数を使用します。

基本的な使用例

具体的な例を見てみましょう。メールアドレス「yamada@company.com」から「@」マークの位置を調べる場合:

セル 内容 説明
A1 yamada@company.com 対象となるメールアドレス
B1 =FIND("@", A1) @マークの位置を検索
結果 7 7文字目に@があることを示す
=FIND("@", "yamada@company.com")

この関数は「7」を返します。なぜなら「@」マークは文字列の7文字目に位置しているからです。

実践的な活用例(開始位置の指定)

開始位置を指定することで、より柔軟な検索が可能になります。例えば、ファイルパス「C:\Documents\Reports\2024\sales.xlsx」から2番目の「\」(バックスラッシュ)の位置を調べる場合:

=FIND("\", "C:\Documents\Reports\2024\sales.xlsx", 4)

最初の「\」は3文字目にありますので、4文字目から検索を開始することで2番目の「\」の位置(14文字目)を取得できます。

ポイント: 開始位置を指定することで、同じ文字が複数ある場合でも目的の位置を正確に特定できます。

【実践例の表示画像】
A2セルに「C:\Documents\Reports\2024\sales.xlsx」、B2セルに=FIND("\",A2,4)が入力され、結果として「14」が表示されている例

エラーハンドリングとISNUMBER関数の活用

FIND関数は検索文字列が見つからない場合、#VALUE!エラーを返します。これを防ぐために、ISNUMBER関数やIFERROR関数と組み合わせて使用することが重要です:

=IFERROR(FIND("@", A1), "見つかりません")

また、特定の文字が含まれているかどうかを判定する場合は、ISNUMBER関数と組み合わせます:

=ISNUMBER(FIND("@", A1))

この式は、@マークが含まれていればTRUE、含まれていなければFALSEを返します。条件分岐に活用できる便利なテクニックです。

他の文字列関数との組み合わせ

FIND関数は他の文字列関数と組み合わせることで真価を発揮します。例えば、メールアドレスからユーザー名部分(@より前)を抽出する場合:

関数の組み合わせ 用途
LEFT + FIND @より前の文字列を抽出 =LEFT(A1, FIND("@", A1) - 1)
RIGHT + LEN + FIND @より後の文字列を抽出 =RIGHT(A1, LEN(A1) - FIND("@", A1))
MID + FIND 特定の文字間の文字列を抽出 =MID(A1, FIND("@", A1) + 1, 10)
実用例: これらの組み合わせにより、複雑な文字列処理も簡単に実現できます。データクレンジングの際に非常に重宝します。

SEARCH関数との違いと使い分け

FIND関数と似た機能を持つSEARCH関数との違いを理解しておくことが重要です:

関数 大文字・小文字の区別 ワイルドカード 使用場面
FIND 区別する 使用不可 厳密な検索が必要な場合
SEARCH 区別しない 使用可能 柔軟な検索が必要な場合
注意: 商品コードのように大文字・小文字が重要な意味を持つ場合はFIND関数を、一般的なテキスト検索ではSEARCH関数を使い分けると良いでしょう。

【FIND vs SEARCH比較例の表示画像】
同じ文字列「Apple」に対してFIND("a","Apple")とSEARCH("a","Apple")の結果の違いを示している例

まとめ

FIND関数の使い所

  • 文字列内の特定の文字や文字列の位置を正確に知りたいとき
  • 他の文字列関数と組み合わせてデータを抽出・加工したいとき
  • 大文字・小文字を区別した厳密な検索が必要なとき
  • 条件分岐で特定の文字の有無を判定したいとき

構文

=FIND(検索文字列, 対象文字列, [開始位置])

実用的な例文

基本形:=FIND("@", A1)
エラー対応:=IFERROR(FIND("@", A1), "見つかりません")
存在判定:=ISNUMBER(FIND("@", A1))
文字列抽出:=LEFT(A1, FIND("@", A1) - 1)

覚えておきたいポイント

  • 大文字・小文字を区別することを理解して使用
  • エラーハンドリングを必ず実装
  • 他の文字列関数との組み合わせで活用の幅が広がる
  • 開始位置の指定で複数の同じ文字にも対応可能
  • SEARCH関数との使い分けを理解する

FIND関数をマスターすることで、文字列処理の効率が大幅に向上します。特にデータクレンジングや情報抽出の場面で威力を発揮しますので、ぜひ実際のデータで試してみて、使いこなせるようになってくださいね!

コメントを残す