以下のような方にオススメの記事です。
- 文字数がバラバラだが、「ー」の前半部分だけを抽出したい
- 文字数がバラバラだが、「@」の後半部分だけを抽出したい
もしも文字数が統一されていれば、MID関数だけで十分に対応できます。
しかし、何文字目から抽出するか・何文字抽出するかがデータによってバラバラだと、MID関数だけでは不十分です。
そこで、MID関数にLEN関数・FIND関数を組み合わせると良いです。
今回のクエストはこちら

LEN関数とFIND関数
文字列の中で検索文字が何番目にあるか検索したい場合にはFIND関数を利用しましょう。
=FIND( 検索文字 , 文字列 )
機能:文字列の中で検索文字が何番目にあるか
文字列全体の文字数を知りたい場合はLEN関数を利用しましょう。
=LEN ( 文字列 )
機能:文字列の文字数がいくつあるか
「ー」の前半部分のみ文字列を抽出
MID関数は「=MID( 文字列 , 開始位置 , 文字数 )」という構成です。
MID関数について確認したい方はこちらをチェックしてください。
前半部分を抽出したいので、開始位置は全て1番目からです。
しかし、「-」までの文字数がバラバラなので、各文字列で何文字を抽出するか算出する必要があります。
何文字を抽出するか
「-」までが何文字あるのか算出するには、「−」が何文字目にあるかが分かれば良いです。
では、特定の文字が文字列の何番目にあるか算出するのはFIND関数です。
これにより、「−」の位置がわかります。
そして、抽出したい文字数は『1番目〜「-」の1つ前まで』です。
つまり、数式で言えば、「FIND( “-” , 文字列 ) – 1」となります。
前半部分の抽出
以上の要素があれば、前半部分の抽出は可能です。
数式は『=MID( 文字列 , 1 , FIND( “-” , 文字列 ) – 1 ) 』となります。

「ー」の後半部分のみ文字列を抽出
MID関数は「=MID( 文字列 , 開始位置 , 文字数 )」という構成です。
MID関数について確認したい方はこちらをチェックしてください。
後半部分は前半と異なり、開始位置も「-」の位置によって変化します。
どこから抽出し始めるか
開始位置についての考え方は前半と同様です。
「-」の位置の1つ後ろが開始位置になります。
まずはFIND関数を利用して「-」の位置を特定します。
すると、後半部分の開始位置は『FIND( “-” , 文字列 )+ 1 』番目からということになります。
何文字を抽出するか
MID関数の性質として、抽出する文字数が文字列をオーバーする場合、文字列の最終文字を抽出してストップします。
よって、100など極端に大きい数字に設定する方法が1つです。
もう少し踏み込んで、どのような場面でも利用できる個数の設定はLEN関数を利用すると良いでしょう。
LEN関数は文字列の全文字数ですので、開始位置がどこであっても必ず最終文字まで抽出できます。
後半部分の抽出
以上の要素があれば、後半部分の抽出は可能です。
数式は『=MID( 文字列 , FIND( “-” , 文字列 ) + 1 , LEN( 文字列 )』となります。

より正確に抽出文字個数を設定したければ、『LEN(文字列) – FIND( “-” , 文字列 ) 』としても良いですが、そこまでは必要ないでしょう。
今回のクエストを終えて
MID関数の応用を習得!
規則性はあるが文字数がバラバラな文字列からの抽出はLEN関数やFIND関数を組み合わせる必要があります。
関数同士を組み合わせることは難易度が高くはなりますが、1つずつ図解を利用すれば理解して、使いこなせるようになるでしょう。






コメント