文字列関数

関数 機能
LEN 文字数を得られる
FIND 文字列を検索し、その位置を得られる。大文字/小文字を区別する
SEARCH 文字列を検索し、その位置を得られる。大文字/小文字を区別しない
SUBSTITUTE 文字列を置換できる
LEFT 先頭 (左端) から、指定の文字数の文字を得られる
RIGHT 末尾 (右端) から、指定の文字数の文字を得られる
MID 指定の位置から、指定の文字数の文字を得られる
   

文字列の置換や抽出はテキストエディタへコピーして編集した上で、Excelへ貼り付けて戻す方法もあります。

FIND

FIND(検索文字列, 対象, [開始位置])
FIND 関数 - Microsoft サポート

検索文字列対象内で、開始位置以降で最初に出現する位置を得られます。

  • 検索文字列ワイルドカードは使用できない
  • 検索文字列が複数あることが想定される場合に2番目以降に出現する位置を得るには、開始位置に1番目の出現位置より大きい値を指定する
結果
=FIND("B","ABCABC") 2
=FIND("B","ABCABC",2) 2
=FIND("B","ABCABC",3) 5
=FIND("b","ABCABC") #VALUE!

最後に出現する位置を得る

FINDは最初に出現する位置を返しますが、これとは逆に、最後に出現する位置を得る方法を考えます。

  1. 検索文字列をすべて空文字列に置換し、削除する
  2. それと対象の文字列の数との差から、検索文字列の数を得る
  3. 最後に一致する検索文字列だけを、"*"に置換する
    (置換する文字は、対象の文字列に出現しない文字とする。たとえばファイルのパスを対象とするならば、禁止文字を用いる)
  4. "*"が出現する位置を得る
Excel: last character/string match in a string - Stack Overflow

これを順に実行すると、下表のようになります。

  A B (式) B (結果)
1 A\B\C\D =SUBSTITUTE(A1,"\","") "ABCD"
2   =LEN(A1)-LEN(B1) 3
3   =SUBSTITUTE(A1,"\","*",B2) "A\B\C*D"
4   =FIND("*",B3) 6

すべての出現位置を得る

最初に出現する位置を用いて順に切り出すことで、2番目以降に出現する位置を得られます。

  A B (式) B (結果)
1 A\B\C\D =FIND("\",A1) 2
2   =MID(A1,B1+1,LEN(A1)) B\C\D
3   =FIND("\",B2)+B1 4
4   =MID(A1,B3+1,LEN(A1)) C\D
5   =FIND("\",B4)+B3 6

TEXTSPLIT関数が使えないときは、この位置を用いることで文字列を分割できます。

SUBSTITUTE

SUBSTITUTE(文字列, 検索文字列, 置換文字列, [置換対象])
SUBSTITUTE 関数 - Microsoft サポート
結果
=SUBSTITUTE("ABCABC","B","_") "A_CA_C"
=SUBSTITUTE("ABCABC","B","_",1) "A_CABC"
=SUBSTITUTE("ABCABC","B","_",2) "ABCA_C"
=SUBSTITUTE("ABCABC","B","_",3) "ABCABC"

LEFT

LEFT(文字列, [文字数])
LEFT 関数 - Microsoft サポート
結果
=LEFT("12345") "1"
=LEFT("12345",3) "123"

RIGHT

RIGHT(文字列,[文字数])
RIGHT 関数 - Microsoft サポート

文字数は、末尾から数えた文字数です。これを先頭から数えた文字数で、末尾の文字列を得たいならば、MIDを用います。

結果
=RIGHT("12345") "5"
=RIGHT("12345",3) "345"

MID

MID(文字列, 開始位置, 文字数)
MID 関数 - Microsoft サポート
結果
=MID("12345",2,3) "234"
=MID("12345",10,3) ""
=MID("12345",2,10) "2345"

PHONETIC

文字列からふりがなを得られます。PHONETIC 関数 - Microsoft サポート