セル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
- 1989年新卒で日本IBMに入社しダウンサイジング担当としてホストコンピュータと繋げるオフコン、UNIX、PCサーバーのプロジェクトを担当。1997年 MSKK(現日本マイクロソフト)入社、NT4出荷に伴い企業向けサポート部門のビジネスマネージャーとして Excel 使いとなり、2002年 にMSMVPなどをサポートするユーザーコミュ二ティ部門を設立、部門をリード。2006年にMSKK退職後、企業向けのITトレーニング会社・団体に携わり、2014年頃よりPowerBI勉強会主催メンバーの一人として参画、そのコミュニティ活動で MSMVP for Data Platform PowerBI 2017受賞。https://mvp.microsoft.com/ja-jp/PublicProfile/5002635 同年にMVP Awardを返上し、アマゾン ウェブ サービス ジャパンに入社、コミュニティプログラム担当として現在に至る。
0 コメント:
コメントを投稿