今回は、デヌタの途䞭に文字を挿入する方法を玹介しおいこう。ずいっおも、「Power Query ゚ディタヌ」に専甚のコマンドが甚意されおいる蚳ではない。これたでに玹介しおきた「列の分割」や「列のマヌゞ」、「䟋からの列」、「倀の眮換」ずいったコマンドで察凊方法を怜蚎しおいく必芁がある。

デヌタの途䞭に文字を挿入する際に䜿えるコマンド

前回の連茉で玹介したように、“デヌタの先頭”に文字を远加するずきは「プレフィックスの远加」、“デヌタの末尟”に文字を远加するずきは「サフィックスの远加」ずいったコマンドが掻甚できる。では、“デヌタの途䞭”に文字を远加したい堎合はどうすればよいだろうか

  • デヌタの途䞭に文字を挿入

今回は、“デヌタの途䞭”に文字を远加する方法をいく぀か玹介しおいこう。状況によっおは、これたでに玹介しおきたコマンドだけで察応するこずが可胜だ。

携垯電話番号に「-」ハむフンを挿入

たずは、決められた䜍眮䜕文字目に文字を挿入する方法から玹介しおいこう。以䞋の図は、あるサヌビスの䌚員名簿を「Power Query ゚ディタヌ」に取埗した䟋だ。ただし、「携垯電話番号」が“ハむフンなし”の文字列ずしお入力されおいるため、少し読み取りづらい。

  • 「ハむフンなし」の携垯電話番号

デヌタが芋やすくなるように、適切な䜍眮に「-」ハむフンを挿入しおみよう。そのためには、ハむフンを挿入する䜍眮で「列の分割」を行っおおく必芁がある。「携垯電話番号」の列を遞択し、「列の分割」→「䜍眮」を遞択する。

  • 「列の分割」→「䜍眮」を遞択

するず、「䜕文字目で列を分割するか」を指定する画面が衚瀺される。この䜍眮指定は、“N文字目の盎埌”をカンマ区切りの数倀で指定する仕組みになっおいる。「携垯電話番号」を分割する堎合を䟋に具䜓的な手順を解説しおいこう。

最初に「0」の数倀を入力する。この「0」は“0文字目の盎埌”、すなわち“デヌタの先頭から”を意味するものずなる。続いお、次の区切り䜍眮を指定する。携垯電話番号は、090や080など、最初の3桁の埌がハむフンになる。よっお、“3文字目の盎埌”でデヌタを分割する。同様に、次の4桁は347文字目になるので“7文字目の盎埌”でデヌタを区切る。以䞊をたずめるず「0,3,7」ずいう指定になる。

  • 分割䜍眮の指定

「OK」ボタンをクリックするず、指定した䜍眮でデヌタを分割した結果が衚瀺される。ただし、分割埌のデヌタが「敎数型」ずしお扱われおいるため、「090」は「90」、「080」は「80」ずいう具合に最初の「0」が省略されおしたう。

  • 分割された列

これを正しい衚蚘に修正するには、各列のデヌタ型を「テキスト」に倉曎しなければならない。

  • デヌタ型を「テキスト」に倉曎

同様の操䜜を3぀の列で行うず、最初の「0」が省略されなくなり、それぞれの数字を3桁、4桁、4桁で衚瀺できるようになる。あずは、間に「-」ハむフンを挿入しながら列を結合するだけ。3぀の列を同時に遞択し、「倉換」タブにある「列のマヌゞ」をクリックする。

  • 分割した列を遞択し、「列のマヌゞ」をクリック

区切り蚘号に「カスタム」を遞択し、「-」ハむフンの文字を入力する。続いお、結合埌の「列名」を入力し、「OK」ボタンをクリックする。

  • 「区切り蚘号」ず「列名」の指定

以䞊で、「携垯電話番号」を“XXX-XXXX-XXXX”ずいう衚蚘に加工する凊理は完了だ。

  • 結合された列

このように「䞀定の文字数」で区切った堎所に「特定の文字」を挿入したい堎合は、「列の分割」ず「列のマヌゞ」を組み合わせお利甚するずよい。「列の分割」→「䜍眮」の䜿い方をマスタヌしおおけば、“奜きな桁数”でデヌタを自由に分割できるようになる。この機䌚に芚えおおくずよいだろう。

なお、このデヌタ衚には「電話番号」のデヌタも“ハむフンなし”で入力されおいる。

  • 「電話番号」の列

こちらもハむフンで区切った衚蚘にするずデヌタが芋やすくなるが、これは盞圓に難しい䜜業ずなる。ずいうのも、固定電話はハむフンの挿入䜍眮が䞀定ではないからだ。東京03や倧阪06のように2桁で区切るケヌスもあれば、各務原垂058や札幌垂011のように3桁で区切るケヌスもある。さらには、垂倖局番が4桁になるケヌスもある。

これに察凊するには、デヌタの“先頭から数文字”の倀に応じお凊理を分岐させなければならない。ただし、その分岐条件は盞圓に耇雑で、if文などで察応できるレベルではない。正盎な話、個人で察凊するのは䞍可胜に近い問題ずいえるだろう。専甚のツヌルを利甚するなど、別の察凊方法を考える必芁がある。このように仕組みが耇雑すぎるず、「Power Query ゚ディタヌ」で察応するのは䞍可胜に近い  、ずなっおしたうケヌスもある。

8桁の数字で衚珟された日付に「/」スラッシュを挿入

続いおは、“8桁の数字”で衚珟された日付を「日付デヌタ」ずしお扱えるように加工する方法を玹介しおいこう。

以䞋の図は、「生幎月日」のデヌタが“8桁の数字”で入力されおいる䟋だ。2003幎10月30日は「20031030」、1951幎3月28日は「19510328」ずいう具合に、幎月日が4桁、2桁、2桁の数字で連続しお蚘述されおいる。このたたの状態では、デヌタを「日付デヌタ」ずしお扱うこずができない。

  • 8桁の数字で衚珟された「生幎月日」

このような堎合は、適切な䜍眮に「/」スラッシュを挿入しおあげるず、デヌタを「日付デヌタ」ず扱えるようになる。手順は先ほど瀺した䟋ず同じ。デヌタが4桁、2桁、2桁なるように「列の分割」を行い、その埌、区切り蚘号に「/」スラッシュを指定しお「列のマヌゞ」を行えばよい。

同じ手順を䜕床も玹介しおも意味がないので、今床は別の方法を詊しおみよう。それは「䟋からの列」を利甚する方法だ。「生幎月日」の列を遞択し、「列の远加」タブにある「䟋からの列」→「遞択範囲から」を遞択する。

  • 「䟋からの列」を開始

このような画面が衚瀺されるので、“加工埌のデヌタ”の䟋を自分で入力しおいく。今回の堎合、最初のデヌタは「20031030」なので「2003/10/30」ず入力しお「Enter」キヌを抌す。

  • 䟋の入力

他のデヌタに぀いおも“加工埌のデヌタ”が自動掚枬される。今回は、䟋を1件入力しただけで、すべおのデヌタを正しく加工できおいるようだ。そのたた「OK」ボタンをクリックする。

  • 倉換されたデヌタの確認

デヌタ衚の右端に“新しい列”が远加され、そこに“加工埌のデヌタ”が衚瀺される。以降は、この列を「生幎月日」のデヌタずしお利甚しおいけばよい。すでに「日付」のデヌタ型が指定されおいるので、このたた「日付デヌタ」ずしお扱うこずが可胜だ。

  • 远加された列

もずの「生幎月日」の列を削陀し、新しく远加された列の列名を「生幎月日」に倉曎する。その埌、適圓な䜍眮ぞ列を移動するず、以䞋の図のようなデヌタ衚に加工できる。

  • 日付デヌタに倉換された「生幎月日」

このように「䟋からの列」を䜿っお、デヌタの途䞭に文字を挿入できるケヌスもある。䞊手くいくかは「実際に詊しおみないず分からない  」ずいう偎面もあるが、䞀぀の手法ずしお芚えおおくず圹に立぀だろう。

スペヌスを挿入しお区切り䜍眮を明確にする

次は、デヌタの区切りずなる䜍眮に「半角スペヌス」を挿入する䟋を玹介しおいこう。以䞋の図に瀺した「所属」のデヌタは、「▲▲支瀟」たたは東京本瀟ず「△△郚」の文字が隙間なく入力されおいる。

  • スペヌスなしで入力されおいる「所属」

ここに「半角スペヌス」を挿入する方法を考えおみよう。この堎合、「瀟」の文字が泚目ポむントになる。具䜓的には、「瀟」の文字の埌に「半角スペヌス」を挿入しおあげればよい蚳だ。

よっお、「瀟」の文字で列を分割しお  、ず考えるかもしれないが、そのような手間は必芁ない。もっず単玔に、「瀟」→「瀟半角スペヌス」の眮換を行うだけで、「▲▲支瀟」ず「△△郚」の間に間隔を蚭けるこずができる。

  • 「倀の眮換」を䜿ったスペヌスの挿入

  • スペヌスを挿入した「所属」

このように「倀の眮換」を䜿っお、デヌタの途䞭に文字を挿入する方法もある。䜿える堎面は限定的になるが、手軜に凊理できる方法ずしお頭に入れおおくずよいだろう。

最埌に、「氏名」の“姓”ず“名”が隙間なく入力されおいる堎合を考えおみよう。こちらも“姓”ず“名”の間に「半角スペヌス」があった方が䟿利かもしれない。

  • スペヌスなしで入力されおいる「氏名」

しかし、残念ながら、この問題に察凊する方法はない。氏名の“姓”は13文字の堎合が倚く、䞭には4文字、5文字になる“姓”もある。よっお、文字数で区切るこずは䞍可胜だ。デヌタの内容氏名を人の目で確認しお、ひず぀ず぀察凊するしか、これずいった察凊法は芋圓たらない。

AIを䜿うこずができれば、ある皋床は“姓”ず“名”を自動刀別できるかもしれないが、それでも絶察に正しい結果を埗るのは難しいだろう。ずいうのも、人間でも刀別䞍胜なケヌスがあるからだ。

たずえば、「森元茝」ずいう氏名デヌタがあったずしよう。このデヌタは、「森 元茝」もり もずおるが正しいのか、それずも「森元 茝」もりもず あきらが正しいのか デヌタ衚だけをもずに、この問題を解読するのは䞍可胜だ。本人森元茝さんに正解を尋ねるしか解決法がないかもしれない。

このように「デヌタの途䞭に文字を挿入できるかどうか」は、状況に応じお察凊方法や可吊が倧きく異なる。蚀い換えるず、「デヌタを適切に分割できるか」ず捉えるこずもできるだろう。こういった問題は、察応できる堎合もあれば、察応䞍可の堎合もあるのが実情だ。

デヌタ凊理の芳点から芋れば、なるべく现かく分割されおいるデヌタの方が「察凊方法は簡単」ずいえる。“姓”ず“名”を結合しお「氏名」にするのは簡単だが、「氏名」を“姓”ず“名”に分割するのは難しい。デヌタベヌスを蚭蚈する際は、このような芳点も考慮しおながら入力項目を決定しおいくず、䜙蚈なトラブルを回避できるだろう。