エクセルでは表計算以外に、文字列を扱うことも多いですね。
文字列を扱う際、特に知っておきたい関数として、LEFT関数、RIGHT関数、MID関数があります。
LEFT関数は文字列の左部分(まえ)を取り出す関数です。
同様に、RIGHT関数は文字列の右部分(うしろ)を、MID関数は文字列の中間部分を取り出す関数です。
本記事では「ワークシート上でのLEFT関数、RIGHT関数、MID関数の使い方と、他関数との組合せ」について解説します。
ちなみに、エクセルのマクロ(VBA)でもこれらの関数は扱えますよ。
別記事「VBAで文字を好きな数取得!right関数含む3関数の使い方」で解説していますので、ぜひ併せてご覧ください。
この記事の内容
1.各関数の構文
こんにちは。エクセルマン・ブリーダーのしもむぎ(@re_znd13)です。
今回取り上げるのは、文字列の一部を取り出す関数です。
まずは、これらの関数の構文を見ていきましょう。
■LEFT関数の構文
LEFT(文字列,[文字数])
■RIGHT関数の構文
RIGHT(文字列,[文字数])
■MID関数の構文
MID(文字列,開始位置,文字数)
LEFT関数とRIGHT関数の場合、文字数は省略可能です。
省略した場合は「1」を指定したのと同じ結果が返されます。
一方、MID関数では開始位置と文字数は省略不可ですので、ご注意!
2.文字列の抽出例(報告書台帳)
文字列の抽出例として、報告書台帳の作り方を紹介します。
完成イメージは以下の2つの画像を見てください。
一枚目の画像は入力シートになります。
A列にファイル名を入力してあります。
ファイル名の入力規則だけ決めていて、
[報告書No.]_[日付]_[報告書名][(報告者)][.拡張子]となっています。
二枚目の画像は出力シートとしての報告書台帳になります。
入力シートのファイル名から、報告書No.と日付、報告書名、報告者、ファイル形式を抽出しています。
報告書を作成したら入力シートにファイル名を入力するだけで、別シートに自動的に台帳が作成されるというわけです。
これらの項目の抽出方法について解説していきます。
ちなみに、リンクは文字列の『結合』を使いますので、別記事「エクセルで文字列を結合する方法!組合せにオススメの関数も!」にて解説しますね。
2.1 LEFT関数で報告書No.を抽出する
報告書台帳の最初の項目は報告書No.ですね。
これを報告書のファイル名から抽出します。
報告書No.はファイル名の最初の7文字(SX21xxxの部分)となっていますので、文字列の左部分(まえ)を抽出するLEFT関数の出番です。
=LEFT(入力シート!A2,7)
参照する文字列は「入力シート」という別シートにしていますので、「入力シート!A2」として入力シートのA2セルを参照しています。
報告書No.は7文字固定となっていますので、抽出する文字数は固定値の「7」を入力しています。
2.2 MID関数で日付を抽出する
報告書台帳の二つ目の項目は日付です。
報告書のファイル名においては、報告書No.と「_(アンダーバー)」の後に、yyyymmdd形式で入力されていますので、以下のような式で取り出せます。
=MID(入力シート!A2,9,8)
参照する文字列は前節同様で、「入力シート!A2」として入力シートのA2セルを参照しています。
抽出の開始位置は、報告書No.の7文字と「_(アンダーバー)」の1文字を除くので、「9」という固定値を入力してあります。
文字数はyyyymmdd形式なので「8」としました。
ちなみに、yyyymmdd形式は日付としては認識されないので、日付として入力したい場合には、yyyy部分、mm部分、dd部分を別々に取り出して、「/(スラッシュ)」とともに結合するとよいです。
詳しくは別記事で解説します。
2.3 MID関数とFIND関数の組合わせで報告書名を抽出する
報告書台帳の三つ目の項目は報告書名です。
以下のような式で抽出できます。
=MID(入力シート!A2,18,FIND("(",入力シート!A2)-18)
参照する文字列はこれまでと同様に「入力シート!A2」として入力シートのA2セルを参照しています。
抽出の開始位置は、報告書No.と「_(アンダーバー)」、日付、もうひとつの「_(アンダーバー)」の数が固定となっているので、それを考慮して「18」という固定値を入力してあります。
報告書名は固定の文字数でないのが少しやっかいなところですので、FIND関数との組合せで式を組んでいます。
FIND関数の構文は以下です。
報告書名のあとに”(”が来るような入力規則になっていますので、検索文字列に”(”を設定しています。
対象はこれまで同様「入力シート!A2」、開始位置は省略です。
報告書名の左部分(まえ)にある文字数18を引くのを忘れずに。
FIND(検索文字列,対象,[開始位置])
2.4 MID関数とFIND関数の組合せで報告者名を抽出する
報告書台帳の四つ目の項目は報告者名ですね。
報告者名は”(”と”)”で囲まれていますが、文字数は固定でないですよね。
そこで、MID関数の開始位置と文字数はFIND関数で求めています。
=MID(入力シート!A2,FIND("(",入力シート!A2)+1,FIND(")",入力シート!A2)-FIND("(",入力シート!A2)-1)
開始位置については、「FIND(“(”,入力シート!A2)+1」としています。
“(”の次の文字を開始位置とするため+1をお忘れなく。
文字数は「FIND(“)”,入力シート!A2)-FIND(“(”,入力シート!A2)-1」としています。
報告者名のあとには”)”があるので、”)”の位置と、開始位置との差で求めています。
2.5 RIGHT関数とLEN関数とFIND関数の組合せでファイル形式を抽出する
報告書台帳の五つ目の項目はファイル形式です。
ファイル形式としては拡張子を抽出します。
拡張子は”.(ドット)”のあとにありますのでRIGHT関数の出番です。
ただし、ファイルの形式によって3文字とか4文字とか文字数が異なりますので、文字数として固定値は使えません。
そこで、LEN関数とFIND関数を組合せて以下のような式を組みました。
=RIGHT(入力シート!A2,LEN(入力シート!A2)-FIND(".",入力シート!A2))
LEN関数は文字列の文字数を返す関数で、以下のような構文で使います。
文字列として「入力シート!A2」とすることで、ファイル名の文字数を取得します。
LEN(文字列)
FIND関数では”.(ドット)”の位置を求めていて、上記LEN関数で求めた全体の文字数との差分から拡張子部分の文字数を求めています。
3.まとめ
本記事では「ワークシート上でのLEFT関数、RIGHT関数、MID関数の使い方と、他関数との組合せ」について解説しましたが、いかがでしたか?
他関数としてはFIND関数やLEN関数を取り上げました。
活用例として、入力と出力を別シートに分けた報告書台帳を作成してみました。
入力シートにファイル名を入力するだけで、台帳としての表を作成できるので、時短(時間短縮)を図ったり、作業効率を改善したりできると思います。
別記事「エクセルで文字列を結合する方法!組合せにオススメの関数も!」では、文字列の「結合」による日付部分の改善やリンク部分の作成方法も解説していますので、ぜひ参照してくださいね。