はじめに
業務で、タイトルに書いたことをやりたい場面がありました。
例えば、index.htmlという文字列から、"."より手前の文字列(index)を抜き出すということです。
残しておきます。
数式
数式はこんな感じです。
=LEFT(${参照セル},FIND("${文字}",${参照セル})-1)
例えば、A1セルに入力された文字列から、"."より手前の文字列を抜き出す場合はこうなります。
=LEFT(A1,FIND(".",A1)-1)
実行例
A1のセルに記載されたindex.htmlという文字列から"."より左側の文字列(index)を抜き出します。
A1セルには「index.html」という文字列が入力されています。
A3セルに数式を入力してEnterを叩くと"index"が抽出されました。
"."が複数ある場合は、左から1番目の"."から左側を抽出します。
カラクリ
この数式はLEFT関数とFIND関数が組み合わさっています。
LEFT関数
文字列の先頭から、指定する文字数までを抜き出す関数です。
↓A1セル(index.html)から3文字目まで抽出
FIND関数
文字列の中から、特定の文字が何番目に出てくるのかを教えてくれる関数です。
3つ目の引数は、「何文字目から探し始めるか?」を設定します。
↓A1セル(index.html)で"."は何文字目か。
LEFT関数+FIND関数
もう1度式を見てみます。
=LEFT(A1,FIND(".",A1)-1)
LEFT関数の2番目の引数に"FIND(".",A1)-1"が入っています。
"FIND(".",A1)"の結果は6になります。
※FIND関数の3つ目の引数を省略すると暗黙的に1が入ります。
そこから-1することによって5となり、「指定した文字より手前まで」を抽出できます。
=LEFT(A1,5)