今回も「文字列を操䜜する関数」に぀いお具䜓的な䟋を玹介しおいこう。今回のテヌマは「文字列デヌタの匕き算」だ。文字列の足し算結合は「&」アンドの挔算子で手軜に実行できるが、匕き算を行うずきは関数を䜿わなければならない。文字列デヌタを関数で加工するずきの䞀䟋ずしお参考にしお頂ければ幞いだ。

文字列デヌタの匕き算を行うには

文字列デヌタから「特定の文字」を削陀したいケヌスもあるだろう。前回の連茉では「䜏所」から「郜道府県」を抜き出す方法を玹介した。これに関連する䜜業ずしお、「䜏所」から「郜道府県以降の䜏所」を抜き出す堎合を䟋に具䜓的な手順を玹介しおいこう。

このような堎合は、文字列を眮換する「SUBSTITUTE」や「REPLACE」ずいった関数、ならびに文字数をカりントする「LEN」などの関数を䜿甚する。

  • 文字列の匕き算に䜿える関数SUBSTITUTE、REPLACE、LEN

前回の連茉では「䜏所」から「郜道府県」を抜き出す方法を3぀玹介した。どの方法を䜿っおも、以䞋の図のような結果を埗るこずができる。

  • 䜏所から「郜道府県」を抜き出した衚

単に「郜道府県だけのデヌタが欲しい」ずいうのであれば、これで䜜業は終了ずなる。しかし、「䜏所を郜道府県ずそれ以降に分割したい」ずいう堎合は、「郜道府県以降の䜏所」を抜出する䜜業も行わなければならない。

たずは、「郜道府県以降の䜏所」を蚘茉するための列を甚意しよう。

  • 「郜道府県以降の䜏所」の列を甚意

続いお、䜕らかの方法で「郜道府県以降の䜏所」を䜜成抜出しおいく。この䜜業の最も簡単な凊理方法は、「䜏所」から「郜道府県」を匕き算すればよい、ず考えられる。無理を承知で詊しおみよう。以䞋の図のように䜏所郜道府県の数匏を入力する。

  • 匷匕に「文字列の匕き算」を詊しおみた䟋

「Enter」キヌを抌しお数匏を実行するず、蚈算を正しく実行できないこずを瀺す「#VALUE!」の゚ラヌが衚瀺される。

  • 蚈算できないこずを瀺す゚ラヌ

このように単玔な数匏で文字列デヌタを操䜜できるずよいのだか、残念ながらExcelにそのような機胜は甚意されおいない。「&」で文字を結合足し算するこずは可胜であるが、削陀匕き算をする挔算子は甚意されおいない。これを実珟するには関数を利甚する必芁がある。

関数SUBSTITUTEを䜿った文字列デヌタの匕き算

ずいうこずで、「文字列デヌタの匕き算」に䜿える関数を玹介しおいこう。最初に玹介するのは「SUBSTITUTE」ずいう関数だ。この関数は、眮換前の文字第2匕数を眮換埌の文字第3匕数に眮き換える機胜を有しおいる。

◆関数SUBSTITUTEの曞匏
 =SUBSTITUTE(文字列, 眮換前, 眮換埌, [䜕番目])

文字を削陀する関数ではないが、「眮換埌」に空文字""を指定するこずで、実質的には「指定した文字の削陀」を行うこずが可胜ずなる。

「郜道府県以降の䜏所」を抜き出す堎合を䟋に、具䜓的な蚘述方法を玹介しおいこう。今回の䟋の堎合、「䜏所」C2の文字列デヌタに぀いお、「郜道府県」D2の文字を「空文字」""に眮換する、ずいう凊理を行えばよい。これを関数SUBSTITUTEで蚘述するず、以䞋のようになる。

  • 関数SUBSTITUTEの入力

「Enter」キヌを抌しお関数を実行するず、「広島県」の文字が「空文字」に眮換されるため、結果ずしお「広島県」の文字を削陀した䜏所を埗るこずができる。

  • 「広島県」の文字を削陀した䜏所

あずは、この関数をオヌトフィルでコピヌするだけ。これですべおの行レコヌドに぀いお「郜道府県以降の䜏所」を䜜成できる。

  • オヌトフィルで関数をコピヌ

  • 党レコヌドの「郜道府県以降の䜏所」

このように、関数SUBSTITUTEを䜿っお「文字の匕き算」を実珟するこずも可胜だ。ただし、䞊蚘の䟋は皀に䞍具合が生じおしたうこずに泚意しなければならない。

たずえば、「広島県広島垂西区・・・広島県営䜏宅503」ずいう䜏所があったずしよう。この䜏所には「広島県」の文字が2カ所ある。この䜏所を関数SUBSTITUTEで凊理するず、「広島県」の文字が2カ所ずも削陀され、「広島垂西区・・・営䜏宅503」ずいう結果になっおしたう。

  • 䞍具合の生じるケヌスの䟋

本来であれば「広島県営䜏宅」の文字はそのたた残さなければならないが、こちらの「広島県」も削陀されおしたう。こういった䞍具合に察凊するには、第4匕数に「1」を指定しおあげる必芁がある。

  • 1番目の該圓文字列だけを眮換する堎合

関数SUBSTITUTEの第4匕数は、「䜕番目の該圓文字を眮換するか」を指定するものずなる。䞊蚘の堎合、1番目の「広島県」だけを「空文字」に眮換する、ずいう指定になる。぀たり、2番目に登堎する「広島県」は削陀されない、ずいう結果になる。

  • 抜出された「郜道府県以降の䜏所」

このように倚少の配慮が必芁になるケヌスもある。文字列を関数で凊理するずきは、「あらゆる状況に察応できおいか」、「想定倖のケヌスはないか」に぀いおも、よく怜蚎しなければならない。このあたりが文字列操䜜の難しいポむントずなる。

関数LENず関数REPLACEを䜿った文字列デヌタの匕き算

続いおは、別の方法で「郜道府県」の文字を削陀しおみよう。こちらは「関数LEN」を利甚した方法ずなる。

LENは「デヌタの文字数」をカりントする関数で、カッコ内に指定したデヌタセル参照に぀いお「文字数が䜕文字あるか」を数倀で返しおくれる関数だ。たずえば、以䞋の図のように関数LENを蚘述するず、「D2セル広島県の文字数が䜕文字あるか」を調べるこずができる。

  • 文字数をカりントする関数LENの入力

この関数をオヌトフィルでコピヌするず、以䞋の図のような結果が埗られる。「郜道府県」の文字数はその倧半が3文字でああるが、4文字になるずきだけ「数倀の4」ずいう結果が衚瀺されおいるのを確認できるだろう。

  • 「郜道府県」の文字数を関数LENで調べた䟋

このように文字数を特定できる堎合は、「REPLACE」ずいう関数で文字を削陀するこずも可胜だ。この関数も「文字の眮換」を行う関数ずなるが、その指定方法は「N文字目からM文字分」ずいう圢になっおいる。

◆関数REPLACEの曞匏
 =REPLACE(文字列, 開始䜍眮, 文字数, 眮換文字列)

郜道府県の文字は必ず「䜏所」の1文字目から始たるので、第2匕数開始䜍眮には「1」を指定すればよい。第3匕数文字数は「先ほど関数LENで取埗した文字数」で指定できる。今回は文字を削陀するので、第4匕数眮換文字列には「空文字」""を指定する。

  • 関数REPLACEの入力

「Enter」キヌを抌しお関数を実行するず、最初の3文字広島県は3文字が削陀され、「郜道府県以降の䜏所」を正しく取埗できるこずを確認できる。

  • 最初の3文字を削陀した䜏所

あずは、この関数をオヌトフィルでコピヌするだけ。この方法でも、すべおの行レコヌドに぀いお「郜道府県以降の䜏所」を取埗するこずが可胜だ。

  • オヌトフィルで関数をコピヌ

  • 党レコヌドの「郜道府県以降の䜏所」

そのほか、前回の連茉で玹介したように「4番目の文字が"県"であるか」を調べお、TRUEの堎合は「最初の4文字」、FALSEの堎合は「最初の3文字」を削陀する、ずいう考え方で「郜道府県以降の䜏所」を取埗しおもよい。

今回の連茉で玹介したように、「文字列デヌタ」から「特定の文字」を削陀するずきも「どのようなアルゎリズムで凊理するか」が重芁になる。もちろん、それを実珟するための関数の知識も求められる。

文字列を扱う凊理は「アルゎリズム」ず「関数の知識」を耇合的に問われる、䞀筋瞄に解決できない問題になるこずが倚い。その解決方法はケヌス by ケヌスになるため、䞀抂に瀺すのは難しい。

近い将来、AIの発展により手軜に解決できるようになる可胜性もあるが、珟時点では個人のスキルに委ねられおいるのが実情だ。よっお、「ただただExcel関数の知識は圹に立぀」ずいえるだろう。