FIND関数で指定した文字の位置を求める! 2つ目の文字位置や右からの位置の求め方も解説

スポンサーリンク

スポンサーリンク

FIND関数とFINDB関数について

FINDとFINDBの概要

セル内の指定した文字の位置を求めるExcel関数/文字操作

=FIND( 位置を知りたい文字列 , 対象 , 開始位置 )

=FINDB( 位置を知りたい文字列 , 対象 , 開始位置 )

概要 指定した文字列の位置を求める

  • 開始位置は検索のスタート地点、2文字目からとするときは2を指定する。カウント自体は1文字目から。
    A B C D E A F G H I

    1 →1番左のA以降の文字から文字列の位置を探す

    FIND(“A”,”ABCDEAFGHI”,1) によって得られる位置は 1 (ABCDEAFGHI)

    2 →左から2番目のB以降の文字から文字列の位置を探す

    FIND(“A”,”ABCDEAFGHI”,2) によって得られる位置は 6 (ABCDEAFGHI)

  • 文字列は1文字である必要はない
  • FINDBなどの、〇〇B関数は全角文字を2文字としてカウントする
  • 半角カナでガダバパなどは、濁点を1文字として扱うため、ダはFINDであっても2文字とカウントされる
    ダ(半角) だ(全角)
    FIND FINDB FIND FINDB
    2 2 1 2
    「タ」と「゙」の2文字

    「だ」の1文字だがFINDBでは2のカウント

  • 文字の取り出し関連の関数

    FIND

    指定した位置以降にある、指定した文字が左から何文字目か

    SEARCH

    指定した文字が左から何文字目か
    LEN 文字列の文字数
    LEFT 指定した文字数の文字を先頭から取り出す
    RIGHT 指定した文字数の文字を末尾から取り出す
    MID 指定した位置以降の文字を取り出す
  • A B C D E

    AB

    LEFT(“ABCDE”,2)

    3

    FIND(“C”,”ABCDE”,1)

    SEARCH(“C”,”ABCDE”)

    DE

    RIGHT(“ABCDE”,2)

    MID(“ABCDE”,3,100)

    LEN(“ABCDE”)

FINDはどのような時に使用するか

  • 特定の文字がセル内のどの位置にあるかを知りたい
  • 商品コード内の4番目の位置がA、B、C…によって区分されている

FINDの使い方

  A B C D E
1 D  
2 ABCDE 4

=FIND( D1 , C2 , 1 )

※FINDB( D1 , C2 , 1 )についても 4が表示される

 
3    
4
5
6  
7 あいうえお 7

=FIND( D5 , C6 , 1 )

※FINDB( D5 , C6, 1 )については2バイト文字3つ目であるから7が表示される(2+2+2+1)

 
8
単純に文字数でカウントしたいのであればFINDでよい。
   
9
10

FINDとSEARCHの違い

  • FINDは大文字と小文字を区別するが、SEARCHは区別しない
  • SEARCHではワイルドカードを使用することができる

FINDで右からの位置を求めることはできるか

  • FINDは左からの位置を取得し、RIGHTは文字を取得する関数であるからいずれも対応できない、そこで、文字数をLENを用いてカウントし、その数からFINDの値を減じる方法をとる。この方法では最も左側にある文字列の位置を右からカウントした数が表示される
  • 位置を知りたい文字列が複数あるときは、下記の2つ目の文字の位置を求める方法の式をFIND部分に入れればよい
  A B C D E
1    
2 E  
3 ABCDEF 2

=( LEN(C3) – FIND(D2,C3,1) + 1)

LEN(C3)によって文字数をカウント(6)し、その数から、Eの位置である5を減じ、1を加える。

 
4    
5
6  
7    
8    

FINDで2つ目の文字の位置を求める方法

  • FINDによって得られる数値は1つ目の文字である、これを応用することで、2つ目の文字の位置を取得できる
  • =FIND(D2,C3,FIND(D2,C3,1)+1,1) とする。こうすることで1つ目の文字の次の位置から検索できる
  • 3つ目についても同様に拡張すればよい、1つ目をD3、2つ目をE3、3つ目をF3に表示などとするとわかりやすい。
  • 3つ目は=FIND(D2,C3,FIND(D2,C3,FIND(D2,C3,1)+1)+1)
  A B C D E
1    
2 G  
3 ABCDGEFG 8

=FIND(D2,C3,FIND(D2,C3,1)+1)

C3に含まれる最初のGは5、次は8である。

内部のFIND部分を数値化すると

=FIND(D2,C3,6)となっている

 
4    
5
6  
7    
8    

FINDでワイルドカードを用いた正規表現は?

  • FIND関数ではワイルドカードを使用することはできない。ワイルドカードを使用する際はSEARCHを用いる

FINDで見つからない場合の処理

  • 見つからない場合は、#VALUE!と表示される。この場合に確認しやすくするには、=IFERROR(FIND(位置を知りたい文字列,対象,1),”見つかりませんでした”) とする。
  A B C D E
1    
2 G  
3 ABCDEF Gは見つかりませんでした

=IFERROR(FIND(D2,C3,1),D2&”は見つかりませんでした”)

C3にはGは含まれていないため、”Gは見つかりませんでした”と表示される。

 
4    
5

D2“は見つかりませんでいした”の文字を&で結合している(もちろん、CONCATENATEで結合してもよい)

6  
7    
8    

FINDで改行を見つけるには

  • 改行はCHAR関数に10を指定して見つけ出すことができるため、以下のようにする
  A B C D E
1    
2  
3

改行は

ここです

4

=FIND(CHAR(10),C3,1)

CHAR(10)の位置を取得している。

 
4    
5

セル内で改行させるにはaltを押しながらエンターを押す

6  
7    
8    

FINDで範囲指定した場合の動作

  • =FIND( ”B” , A1:B1 , 1 ) のように指定することもできるが、 各セルごとに判断され複数セルにわたって表示されるにすぎない。
  • CONCATENATEを用いて、=FIND(“B”,CONCATENATE(A1,B1),1)などとするとA1の先端からの位置を取得することができる。
  A B C D E
1    
2 G  
3 ABCDE FGHIJ #VALUE

=FIND(D2,B3:C3,1)

E3にC3の結果が表示される。B3にGがないため、#VALUEと表示されている

=FIND(D2,CONCATENATE(B3,C3),1)とすると、7が表示される

 2
4    
5

結局のところ、D3にFIND(D2,B3,1)、E3にFIND(D2,C3,1)とすることと変わらず、そちらのほうが編集や管理もしやすい

6  
7    
8    

FINDとFINDBに関する参考解説

Excelの関数を検索する

分類関数説明
日付DATE年月日から日付を求める
日付DATEDIF開始日から終了日までの期間を求める
日付DAY日付から日を抽出する
日付EDATE指定月後の月日を求める
日付EOMONTH指定月後の月末を求める
日付EOMONTH+1指定月後の月初めを求める
日付HOUR時刻から時間を取り出す
日付MINUTE時刻から分を取り出す
日付MONTH日付から付きを抽出する
日付NETWORKDAYS営業日数を求める(土日休日型)
日付NETWORKDAYS.INTL営業日数を求める(定休日と休業日指定型)
日付NOW今日の日付と時刻を求める
日付SECOND時刻から秒を取り出す
日付TIME時間を指定して時刻データを作成する
日付TODAY今日の日付を求める
日付WEEKNUM1月1日から何週目かを求める
日付WEEKDAY年月日から曜日番号を求める
日付WORKDAY営業日について指定した日数後の年月日を求める
日付WORKDAY.INTL営業日について指定した日数後の年月日を求める(定休日と休業日指定型)
日付YEAR日付から年を抽出する
文字操作&文字列を結合する
文字操作ASC全角文字を半角文字に置き換える
文字操作CHAR/CLEAN改行を削除する
文字操作CONCAT文字を範囲指定で結合する
文字操作CONCATENATE文字列を結合する
文字操作COLUMN列番号を取得する
文字操作DELTA数値が等しいかを判定する
文字操作EXACT文字列が等しいかを判定する
文字操作FIND(B)セル内の指定した文字の位置を求める
文字操作ISODD指定した数値が奇数か偶数かを判定する
文字操作JIS半角文字を全角文字に置き換える
文字操作LEFT(B)指定した文字数分の文字を先頭から取り出す
文字操作LEN(B)文字数をカウントする
文字操作LOWER文字列を小文字にする
文字操作MID(B)指定した文字以降の文字を取り出す
文字操作NUMBERSTRING漢数字に変換する
文字操作PHONETICフリガナを取り出す
文字操作PROPER文字列の先頭を大文字にする
文字操作REPLACE(B)指定した位置にある文字を置き換える
文字操作REPT指定回数分の文字列を表示
文字操作RIGHT(B)指定した文字数分の文字を末尾から取り出す
文字操作ROW行番号を取得する
文字操作SUBSTITUTE指定した文字列を置き換える
文字操作SEARCH(B)セル内の指定した文字の位置を求める
文字操作TEXT日付などの数値(シリアル値)を文字形式に変換、抽出する
文字操作TEXTJOIN文字列を結合する
文字操作TRIM余分な空白を削除する
文字操作UPPER文字列を大文字にする
文字操作VALUE文字列を数値(シリアル値など)に変換する
論理論理式TRUEとFALSE
論理ANDすべての条件を満たす論理式
論理IF論理式の結果によって表示を切り替える
論理IFS複数の論理式の結果によって表示を切り替える
論理ORいずれかの条件を満たす論理式
論理SWITCH論理式の結果によって表示を切り替える
数学AGGREGATE指定した19の集計方法で集計値を求める
数学CEILING基準値の単位で切り上げる
数学FLOOR基準値の単位で切り下げる
数学INT小数点以下を切り捨てる
数学ISEVEN偶数柿数かを判定する
数学MOD割り算の余りを求める
数学MROUND基準値の単位で四捨五入する
数学POWERべき乗を求める
数学PRODUCT掛け算を求める
数学QUOTIENT割り算の商を求める
数学RAND乱数を発生させる
数学ROUND指定した桁で四捨五入する
数学ROUNDDOWN指定した桁で切り捨てる
数学ROUNDUP指定した桁で切り上げる
数学SUBTOTAL指定した11の集計方法で集計値を求める
数学SUM数値の合計を求める
数学SUMIF特定の条件を満たすセルの合計値を求める
数学SUMIFS複数の条件を満たすセルの合計値を求める
数学SUMPRODUCT条件付きセルの乗算数の合計を求める
数学SUMPRODUCTセルの乗算数の合計を求める
数学TRUNC指定した桁数を切り捨てる
数学TRUNC小数点以下を切り捨てる
検索CHOOSEインデックス数値に対応する値を表示する
検索FILTER条件に一致する行のデータを求める
検索INDEX範囲内の指定したデータを取り出す
検索INDEX指定した行位置に対応する列データを取り出す
検索INDEX指定した列位置に対応する行データを取り出す
検索LOOKUP検索値に一致するデータを検索する
検索MATCH値に一致する行位置を求める
検索MATCH値に一致する列位置を求める
検索UNIQUE重複するデータをまとめる
検索VLOOKUP検索値に一致するデータを検索する
検索VLOOKUP検索値に対応するデータ(範囲型)を求める
統計AVERAGE平均値を求める
統計AVERAGEA平均値を求める
統計AVERAGEIF条件に合う数値の平均値を求める
統計AVERAGEIFS複数の条件に合う数値の平均値を求める
統計COUNT指定したデータの個数を求める
統計COUNTA指定したデータの個数を求める
統計COUNTBLANK空白セルの個数を求める
統計COUNTIF条件に合うデータ数を求める
統計COUNTIFS複数の条件に合うデータ数を求める
統計FREQUENCYデータの度数を求める
統計LARGE大きいほうからの順位の数値を求める
統計MAXデータの最大値を求める
統計MAXAデータの最大値を求める
統計MAXIFS複数条件を満たす最大値を求める
統計MEDIAN中央値を求める
統計MINデータの最大値を求める
統計MINAデータの最大値を求める
統計MINIFS複数条件を満たす最小値を求める
統計MODE.MULTデータの最頻値を求める(こちらを推奨)
統計MODE.SNGLデータの最頻値を求める(MODE.MULT推奨)
統計PERCENTILE.EXC百分位数(パーセント)を求める
統計PERCENTILE.INC百分位数(パーセント)を求める
統計PERCENTRANK.EXCデータの位置を百分率で求める
統計PERCENTRANK.INCデータの位置を百分率で求める
統計QUARTILE.EXC四分位数を求める
統計QUARTILE.INC四分位数を求める
統計RANK.EQデータの順位を求める
統計SMALL小さいほうからの順位の数値を求める
統計STDEV.P標準偏差(母集団型)を求める
統計STDEV.S標準偏差(標本型)を求める
統計STDEVA標準偏差(標本型で論理等含む)を求める
統計STDEVPA標準偏差(母集団型で論理等含む)を求める
統計VAR.Pデータの分散(標本分散)を求める
統計VAR.Sデータの分散(不偏分散)を求める
統計VARAデータの分散(不偏分散)を求める
統計VARPAデータの分散(標本分散)を求める