セルA1 に "AB-345" の文字列がある場合、"-"(ハイフン)の位置を調べるワークシート関数は、
=FIND("-", A1)
で、3 を返してくれます。ちなみに、もし、ハイフンが「無かったら」#VALUE エラーになるので、IFERROR を組み合わせますよね。もしなかったら、-1 を返す、という数式が以下です。
=IFERROR(FIND("-",A1),-1)
同じことを Power Query Formula Language (M言語)でやろうとすると、以下になります。
Text.PositionOf([文字列],"-")
この関数は 2 を返します。「0から始まる!」のパターンです。もし、ハイフンがなかったら、この関数は -1 を返してくれます。
ちなみに、ワークシート関数の FIND は大文字・小文字は区別されますが、SEARCH は区別されません。 PositionOf は FIND 同様に区別します。
おおよそ、文字の位置がわかったら、そこから前の部分を抜き出すとか、そこから後ろを抜き出す、といった使い方をします。
AB-345 からハイフンの前にある"AB"を抜き出すには LEFT 関数を、後ろにある 345 を抜き出すなら MID 関数を使うことになります。
エラー処理をしないワークシート関数を使った単純な数式が以下です。A1セルに"AB-345"が入力され、A1を参照し、ハイフンの前と後ろを抜き出す例です。
=LEFT(A1,FIND("-",A1)-1)
=MID(A1,FIND("-",A1)+1,LEN(A1))
同じことを Power Query のクエリ エディターでやると以下のような数式になります。
Text.Start([文字列],Text.PositionOf([文字列],"-"))
Text.Middle([文字列],Text.PositionOf([文字列],"-")+1)
ワークシート関数の MID と違って、ハイフンの後ろの「長さ」を指定する必要がないのはラクですね。
登録:
コメントの投稿 (Atom)
Powered by Blogger.
自己紹介
- Shigeru Numaguchi
- 2014年頃よりPowerBI勉強会主催メンバーの一人として参画、MSMVP for PowerBI 2017受賞。 https://mvp.microsoft.com/ja-jp/PublicProfile/5002635 2017-でAmazon Web Services Japanに入社し、Awardを返上、現在に至る。
0 コメント:
コメントを投稿