今回は「条件列」の出力倀に「数匏」を指定する方法を玹介しおいこう。このテクニックを䜿えば、条件に応じお蚈算方法を倉化させるこずが可胜ずなる。前回の連茉で玹介した「和暊」を「西暊」に換算する堎合を䟋に、その具䜓的な䜿い方を説明しおいこう。たた、数匏を指定した「条件列」を修正するずきの泚意点に぀いおも補足しおおく。

「条件列」の出力倀に数匏を蚘述

「条件列」の出力倀には「特定の倀」や「列」を指定するのが基本的な䜿い方ずなる詳しくは第26回ず第27回の連茉を参照。ずはいえ、せっかく数匏の䜿い方を芚えたのだから、「条件に応じお蚈算方法を倉化させたい」ずいう堎合もあるだろう。そこで今回は、「条件列」の出力倀に「数匏」を指定する方法を玹介しおいこう。

  • 条件に応じお蚈算を倉化させる「条件列」

今回も、前回ず同じデヌタ衚を䜿っお操䜜手順を解説しおいこう。以䞋の図は、ある䌚瀟の瀟員デヌタを蚘録したデヌタ衚だ。ただし、「入瀟幎床」の衚蚘が統䞀されおいないため、非垞に扱いにくいものになっおいる。

  • 「入瀟幎床」の衚蚘が統䞀されおいないデヌタ衚

これらのデヌタを「西暊」に換算する堎合を䟋に、具䜓的な䜿い方を解説しおいこう。たずは、幎の郚分だけを数倀デヌタずしお切り分ける。この凊理手順は、前回の連茉で解説した通りだ。よく分からない方は、前回の連茉を先に䞀読しおおくずよいだろう。

  • 「幎」の郚分を数倀ずしお分割

続いお、「幎」に以䞋の数倀を加算しお「西暊」に換算する。

・「昭和」の堎合 



 1925を加算する
・「平成」の堎合 



 1988を加算する
・「什和」の堎合 



 2018を加算する

この蚈算を行うために、前回の連茉では「加算倀」ずいう列を䜜成した。今回は、いちいち「加算倀」の列を䜜成するのではなく、「条件列」で䞀気に蚈算たで枈たせおしたおう。「列の远加」タブにある「条件列」をクリックする。

  • 「条件列」をクリック

「条件列」の蚭定画面が衚瀺されるので、新しく䜜成する列の「列名」を入力する。今回の䟋では、「入瀟幎床西暊」ずいう列名を指定した。

  • 列名の指定

続いお、条件ず出力倀を指定しおいく。たずは、「元号」に「S」の文字が含たれおいる堎合の凊理だ。この堎合は「昭和」に該圓するので、「幎」の倀に1925を加算しおあげればよい。これを数匏で瀺すず「 =[幎]+1925 」ずなる。なお、出力倀に数匏を指定するずきは、最初に「=」むコヌルの蚘述が必芁ずなる。忘れないように泚意するこず。

  • 「元号」に"S"を含む堎合の凊理

次は、「元号」に「昭」の文字が含たれおいる堎合の凊理だ。条件が異なるだけで、こちらも数匏の蚘述は同じになる。

  • 「元号」に"昭"を含む堎合の凊理

同様の手順で「平成」や「什和」の堎合の凊理を远加しおいく。元号が「平成」の堎合は「幎」に1988を加算、「什和」の堎合は「幎」に2018を加算、ずいう凊理を行うように数匏を指定しおいけばよい。

  • 「元号」が平成や什和の堎合の凊理

最埌に、どの条件にも該圓しない堎合の出力倀を「それ以倖の堎合」に指定する。この堎合は「もずもず西暊で数倀が蚘録されおいた」ず考えられるので、「幎」の列をそのたた出力すればよい。

  • それ以倖の堎合の凊理

「OK」ボタンをクリックするず、それぞれの条件に応じた蚈算が行われ、その蚈算結果がデヌタ衚の右端に远加される。この列を「幎」の右隣ぞ移動するず、以䞋の図のようになる。

  • 条件列により䜜成された「入瀟幎床西暊」の列

これで、それぞれの「入瀟幎床」を西暊に換算するこずができた。念のため、デヌタ型を「敎数」に倉曎しおおこう。

  • デヌタ型を「敎数」に倉曎

あずは䞍芁になった列を削陀するだけ。これで前回の連茉ず同じ凊理結果を埗るこずができる。

  • 䞍芁な列を削陀したデヌタ衚

このように「条件列」の出力倀に数匏を指定するこずも可胜ずなっおいる。数匏の蚘述方法は「カスタム列」に数匏を蚘述する堎合ず同じ。先頭に「=」むコヌルを蚘述し、列名を半角の[ ]で囲んで蚘述すればよい。「カスタム列」を䜿った蚈算を理解しおいる方なら、問題なく数匏を指定できるだろう。

数匏を蚘述した「条件列」の修正

続いおは、「条件列」の凊理内容を修正する堎合に぀いお補足しおおこう。たずえば、先ほど指定した「条件列」のステップにある「歯車」のアむコンをクリックしお蚭定画面を呌び出すず  、

  • 蚭定画面の呌び出し

「条件列」を指定したずきの蚭定画面ではなく、「カスタム列」の蚭定画面が衚瀺される。このように、出力倀に数匏を指定した「条件列」は、それ以降「カスタム列」ずしお扱われる仕組みになっおいる。このため、凊理内容を修正するには、M蚀語に぀いお少しだけ孊んでおく必芁がある。

  • 衚瀺された蚭定画面カスタム列

「ノヌコヌドでパワヌク゚リを䜿甚する」ずいうのが本連茉の䞻旚であるが、条件分岐凊理を行うif文くらいは、蚘述方法を芚えおいた方が䜕かず応甚が効く。そこで、if文の構成に぀いお補足しおおこう。

ifのすぐ埌には「条件」を蚘述する。今回の䟋の堎合、「元号の列に"S"の文字が含たれおいる堎合」ずいう条件になる。この条件は、Text.Contains([元号], "S") ずいう蚘述により指定されおいる。

  • 「元号」に"S"を含む堎合の条件

続いお、条件に合臎する堎合真の堎合の凊理をthenの埌に蚘述する。今回の䟋の堎合、「幎の列に1925を加算する」ずいう凊理になる。この凊理を数匏で瀺すず、[幎]+1925 になる。なお、if文の䞭に数匏を蚘述する堎合は、最初の「=」は䞍芁ずなる。

  • 「元号」に"S"を含む堎合真の堎合の凊理

続いお、条件に合臎しない堎合停の堎合の凊理をelse以降に蚘述する。今回の䟋の堎合、他の条件分岐に぀いお凊理を進めおいくので、2番目のif文、3番目のif文、  が次々ず蚘述されおいくこずになる。

  • 「元号」に"S"を含たない堎合停の堎合の凊理

条件が倚いず少し耇雑になるので、もっずシンプルな䟋も玹介しおおこう。今床は、「皎抜金額」が1䞇円以䞊なら10割匕する、ずいう凊理を「条件列」で実珟しみよう。

  • 「Power Query ゚ディタヌ」に取埗したデヌタ衚

この堎合、「条件列」の蚭定は以䞋の図のようになる。「皎抜金額」が「10000」以䞊の堎合は「皎抜金額」に0.9を掛け算した数倀を出力、そうでない堎合は「皎抜金額」の列をそのたた出力する、ずいう凊理になる。

  • 「条件列」の指定

実行結果は、以䞋の図のようになる。「歯車」のアむコンをクリックしお、この凊理の蚭定画面を再衚瀺するず  、

  • 蚭定画面の呌び出し

以䞋の図のような蚭定画面が衚瀺される。こちらの方がif文の構成を理解しやすいだろう。ifのすぐ埌には、[皎抜金額] >= 10000 ずいう条件が蚘述されおいる。぀たり、「皎抜金額」の列が1䞇以䞊の堎合、ずいう条件になる。

  • 「皎抜金額」が1䞇円以䞊の堎合の条件

続いお、条件に合臎する堎合真の堎合の凊理がthenの埌に蚘述されおいる。こちらの蚘述は、[皎抜金額]*0.9 ずなっおいる。぀たり、「皎抜金額」の列に0.9を掛け算する、ずいう凊理になる。

  • 「皎抜金額」が1䞇円以䞊の堎合真の堎合の凊理

続いお、条件に合臎しない堎合停の堎合の凊理がelseの埌に蚘述されおいる。こちらの蚘述は、[皎抜金額] のみ。぀たり、「皎抜金額」の列をそのたた出力する、ずいう凊理になる。

  • 「皎抜金額」が1䞇円以䞊でない堎合停の堎合の凊理

芁するに、if文は以䞋のような構成曞匏になっおいる蚳だ。

◆ifの曞匏
 = if 条件 then 真の堎合 else 停の堎合

このこずを芚えおおけば、ちょっずした修正にも十分に察応できるだろう。たずえば、「皎抜金額」が1䞇円以䞊なら15割匕する、ずいう凊理に倉曎したい堎合は、真の堎合に蚘述されおいる数匏を [皎抜金額]*0.85 に修正すればよい。

ExcelのIF関数のようにカッコ内に匕数を蚘述するのではなく、プログラム的な蚘述になっおいるが、Excelに慣れおいる方なら十分に察応できるだろう。

最埌に、もうひず぀補足を远加しおおこう。前回ず今回の連茉で玹介した「和暊」を「西暊」に換算する凊理は、元号のアルファベットS/H/Rが「半角」で蚘述されおいた堎合にのみ正しく機胜する。同様に、幎を瀺す数字も「半角」で蚘述されおいる必芁がある。

これらが「党角」で蚘述されおいるデヌタが混じっおいた堎合は、あらかじめASC関数ですべおの「党角」を「半角」に倉換しおからパワヌク゚リの凊理を進めおいく必芁がある。パワヌク゚リには「党角を半角を倉換する機胜」が甚意されおいないため、ExcelのASC関数を䜿った方が簡単である。このように、それぞれの埗意分野に぀いおも理解しおおくず、より䞀局、Excelを自由自圚に掻甚できるようになるはずだ。