タグ別アーカイブ: 文字列操作

【M言語に慣れる】_15回目_TEXT関数/文字列関数

【M言語は難しくない】今回は、TEXT関数の中から、2つの事例を紹介したいと思います。通常のエクセル関数と同じ様に、M言語でも文字列を操作する関数は多数あります。興味のある方はぜひ、こちらのMicrosoft社のページも参照してみてください

目次

文字列の有無を判定する関数

文字列を置き換える関数

<まとめ>

文字列の有無を判定する関数

 Text.Contains関数は、ある文字列の中に指定した文字列があるかとうかを判定し、「TRUE」か「FALSE」で返す関数です

以下の一文は、Microsoft社のページからの抜粋になります

Text.Contains(“Hello World”, “Hello”)

上の ように記述した場合には、「TRUE」を返します

次もMicrosoft社のページからの抜粋になりますが、この場合は「FALSE」を返します

Text.Contains(“Hello World”, “hello”)

ちなみに、

 M言語では、大文字と小文字の違いは考慮されますので、この点は注意が必要です

では、実際にPower Queryエディタ(以降、エディタ)で実際にこの関数を操作してみます

使用するデータは、「抽出」という1列だけがあるこちらのデータになります

 上の画像のデータから、Text.Contains関数で文字列「0」を含む行を判定し、「TRUE」もしくは「FALSE」を返してみます

まず、「列の追加」タブからカスタム列・作成画面を開きます

こちらの画面でカスタム列の式に「Text.Contains」と入力します

上のGIF画像のように「Text.Con・・・」と入力する途中で、該当の関数が出てきますので、Tabキーで確定します

次にText.Contains関数の丸括弧の中を、以下の画像のように確定します

すると、エディタ内に「0」が含まれる行を判定した列が追加されます

文字列を置き換える関数

 Text.Replace関数は、ある文字列の中から、指定した文字列を発見して置き換える関数です

以下の一文は、Microsoft社のページからの抜粋になります


Text.Replace(“the quick brown fox jumps over the lazy dog”, “the”, “a”)

この場合、返される文字列は次のようになります

“a quick brown fox jumps over a lazy dog”

上記の場合、”the”が”a”に置き換えられています

 では、Text.Contains関数と同じデータを使用して、「0」を「a」に置き換えて見ましょう!

 こちらもText.Contains関数と同じ様に、カスタム列作成画面からM関数を使用します

上の図では、カスタム列作成画面に次のような式を入力しています

=Text.Replace([抽出],”0″,”a”)

では、上記の式を入力してカスタム列作成画面のOKボタンを押します

すると、エディタ内に文字列が置き換えられた列が追加されます

<まとめ>

今回は、Text関数の中から2つだけ事例を紹介しました

 1つ目は、文字列が含まれるかどうかを判定する「Text.Contains関数」でした

2つ目は、文字列を置き換える「Text.Replace関数」でした

 もし、通常のメニューにない操作をM関数で行う場合には、前述のMicrosoft社のページをぜひ参照してみてください

 ちなみに、カスタム列作成画面でM関数を入力する際に、自動で候補の関数が表示されます

 該当の関数を選択した場合、Text関数の場合であれば「TextText」と重なってエラーになるケースがあります

こちらのエラーについては、注意が必要です

今回の解説は以上となります

長文を最後まで読んでいただき誠にありがとうございました

にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村 IT技術ブログ VBAへ


にほんブログ村

文字列の抽出~上級編17回

 エクセル関数で特定の文字列を抽出する場合には、RIGHT関数やLEFT関数、そしてMID関数が良く使われます。今回の解説では、Power Queryでこれらの関数と同じ様に特定の文字列を抽出する方法を解説します。

 また、特定の文字列の位置が不特定の場合、エクセル関数ではFIND関数やSEARCH関数が前述の関数と組み合わせて使用されます

Power Queryでは、特定の文字列の位置が不特定の場合でも一括で抽出できる裏技がありますので、そちらについても解説を行います

例えば、

 下のGIF画像のように、「-」が不規則に出現する文字列の中から「左から2つ目3つ目ハイフン」の文字列を抽出することもできます

では、Power Queryにて特定文字列を抽出する方法について詳細な解説をはじめます

 以降の解説は、全てPower Queryエディタ(以降、エディタ)を開いた状態から解説を行います

エディタ内で使用するタブは「変換タブ」、使用メニューは「抽出」になります

目次

1.左から指定した長さの文字数を抽出

2.右から指定した長さの文字数を抽出

3.位置を指定して文字列の途中から指定した長さを抽出

4.特定の文字列の前後の文字を抽出

5.「特定の文字列の間」の文字を抽出

<まとめ>

1.左から指定した長さの文字数を抽出

エクセル関数では、LEFT関数で行う内容です

こちらは、下の画像の「最初の文字」から抽出を行います

上の画像の「最初の文字」をクリックすると下の画像の画面が開くので、こちらで抽出する長さを指定します

OKボタンを押せば、下のGIFのように左から3文字が抽出されます

2.右から指定した長さの文字数を抽出

こちらはエクセル関数で言えば、RIGHT関数になります

下の画像にある「最後の文字」から指定します

1.の「左から指定した長さの文字数を抽出」と同じ様に、「最後の文字」をクリックした後に開くダイアログボックスにて抽出する長さを指定します

後の処理は、1.と同じです

3.位置を指定して文字列の途中から指定した長さを抽出

こちらは、エクセル関数でいえばMID関数の内容になります

こちらは、下の画面の箇所から指定を行います

「範囲」をクリックした後、次の画像の画面で「①開始インデックス」「②文字数」を指定します

①開始インデックス・・・抽出を開始する位置(0から指定可)

②文字数・・・抽出文字数の長さ

上の①②を指定して右下のOKボタンを押せば、①開始インデックスの位置から②の文字数が抽出されます

上のGIF画像では①は「3」、②は「2」を指定しています

MID関数とは違い、指定した「開始インデックス」の「数字」に+1した位置から文字が抽出されます

下の図のように、MID関数では「4」の位置が、Power Queryの開始インデックス「3」に相当します

この関数との違いは、Power Queryでは「0」から指定ができるようになっていることに起因していますので、注意が必要です

4.特定の文字列の前後の文字を抽出

①特定の文字列のの文字を抽出

4.の①では、下の文字から、「ABC」のの文字を抽出します

抽出は下の画像の「区切り記号の前のテキスト」を指定します

「区切り記号の前のテキスト」をクリックすると、下の画像のようにダイアログボックスが開くので、こちらで「特定の文字列」の「ABC」を指定します

特定の文字列を指定し、ダイアログボックス右下のOKボタンを押せば、「ABC」の前の文字が抽出されます

② 特定の文字列のの文字を抽出

①と基本的に方法は一緒ですが、今回は2つ特殊な方法を付け加えます

ⅰ)繰返し「特定の文字列」が出現する場合には、位置(〇番目)を指定

ⅱ)「特定の文字列」を読み込む方向を指定

では、下の文字列から「ハイフン/-」を特定文字列としてⅱ)入力末尾から、ⅰ)「ハイフン/-」が2回目に出現した「後」の文字列を抽出します

「特定文字列の後」の文字列を抽出するには、下の画像の「区切り記号の後のテキスト」をクリックします

次に開いたダイアログボックスではまず、「詳細設定オプション」をクリックします

次に、詳細設定オプションにて2つの箇所を指定をします

詳細設定オプションでは、前述のⅱ)の通り、入力末尾からを指定します

そして、「スキップする区切り記号の数」については、2つ目を指定しますので、1つ目の「ハイフン/-」はスキップします

5.「特定の文字列の間」の文字を抽出

5.では下の文字列から、記事の冒頭のGIF画像と同じ様に、文頭から2つ目3つ目の「ハイフン/-」の間の文字列を抽出します

今回、使用するメニューは下の画像の黄色の箇所になります

「区切り記号の間のテキスト」をクリックした後に開いたダイアログボックスにて、まずは「開始区切り記号」と「終了区切り記号」を指定します

こちらは両方とも「ハイフン/-」を指定します

次に、下の画像のように詳細設定オプションを指定します

詳細設定オプション

まず、上の画像 (詳細設定オプション) の1番目の黄色の箇所「開始区切り記号(特定文字列)のスキャン」と3番目の「終了区切り記号のスキャン」の2つを指定します

こちらの2つの箇所では、特定文字列の読み込む方向を「文字列の先頭から」にするのか、それとも「末尾」からにするのかを指定します

こちらはそれぞれ、1番目は「入力の先頭から」、3番目は「開始区切り記号から入力の末尾方向へ」を指定して、読み込む方向を2つとも一致させます

そして、上の画像(詳細設定オプション)の2番目「スキップする開始区切り記号の数」は「1」を指定することで、2つ目の「ハイフン/-」を特定文字列の対象にします

もし、1つスキップせずに「0」を指定した場合には、前述のように1つ目の「ハイフン/-」が特定文字列の対象になります

次に、 上の画像の最後「スキップする終了区切り記号の数」 については、デフォルトの「0」のままにします

もし、「スキップする終了区切り記号の数」を 「1」で指定した場合には文頭から3つ目ではなく、4つ目の「ハイフン/-」が特定文字列(開始ではなく終了側)として指定されます

では、詳細設定オプションの指定が終了したら、右下のOKボタンを押します

すると、2つ目と3つ目の「ハイフン/-」の間の文字列が抽出されています

<まとめ>

 今回は、次の内容について解説を行いました

1.文字列の左から指定した長さ分の文字列を抽出

2.文字列の右から指定した長さ分の文字列を抽出

3.位置を指定して文字列の途中から指定した長さを抽出

4.文字列の中から「特定の文字列」の前後を抽出

5.文字列の途中から2つの特定文字列間の文字列を抽出

 上の内容の内、特に下から2つの内容については、「スキップ」や「読み込み方向」などを指定することで、高度な「抽出」が行えるようになっています

 うまく「スキップ」「読み込み方向」を組み合わせて、Power Queryをより有効に活用していきましょう!

今回は以上です

参考までに今回使用したエクセルファイルを添付します

尚、クエリの読込先は全て「接続専用」になっています

アイコン

上級17回 20.66 KB 12 downloads

...

最後まで長文にお付き合い頂き誠にありがとうございました

次回は文字列の置換、追加について解説します

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村 IT技術ブログ VBAへ

にほんブログ村

文字列の追加、置換~上級編18回

 

 今回は、既存の文字列に「新たな文字列を追加」する方法と、「文字列を置き換える」方法を解説します

「文字列を置き換える」場合、繰り返し同じ文字が出現する時には、特定の位置の文字だけ置き換える必要が出てくる時があります

その場合には、過去に解説した「文字列の抽出」「列のマージ」を組み合わせて置き換えます

では、本格的な解説をはじめます!

尚、解説はPower Queryエディタ(以降、エディタ)画面内の操作のみになります

目次

1.文字列の追加

2.文字列の置換

3.繰り返し文字の置換

<まとめ>

1.文字列の追加

①既存文字列のに追加

下の画像の文字列の前に文字列「A-」を追加する方法を解説します

なお、文字列を追加する場合、元の文字列を残したまま、新たに「文字列を追加」した列を追加する方法と、元の文字列に対して、「文字列を追加」する方法があります

今回は、元の文字列を残したまま、新たに列を追加する方法で解説します

ですので、下の画像のように「列の追加」タブを使用します

「列の追加」タブ内にある「書式」の右横の▼マークから「プレフィックスの追加」をクリックします

すると下の画像のような画面が開きますので、追加する文字列「A-」を指定します

追加する文字列を指定したら、画面右下のOKボタンを押せば、下のGIF画像のように文字列「A-」が既存の文字列のに追加されています

②既存文字列のに追加

下の画像の文字列の後に文字列「-B」を追加する方法を解説します

基本的には、①の既存の文字列の前に文字列を追加する方法と一緒です

但し、下の画像の箇所にて、クリックする箇所が違います

「プレフィックスの追加」でなく「サフィックスの追加」をクリックします

それ以外の処理は①と一緒です

2.文字列の置換

では、下の文字列の中の「ABC」を「DEF」に置き換える方法を解説します

値の置換は「変換タブ」の「値の置換」から行います

ちなみに「エラーの置換」については、過去の記事で解説しておりますので、ぜひそちらをご参照ください

上の画像にある「値の置換」をクリックすると、下の画像の画面が開きます

上の画像の画面では、ⅰ)検索する値、とⅱ)置換後の値、の2つを指定します

ⅰ)ⅱ)の2つを指定し、OKボタンを押せば置換は終了です

3.繰り返し文字の置換

では、記事の冒頭で紹介した内容の解説に入ります

下の画像の文字列にある「ハイフン/-」のように、繰り返し出現する文字列の中から位置/順番を指定して文字列を置き換える方法を解説します

今回は、文字列内に5回登場する「ハイフン/-」の内、から2番目の「ハイフン/-」を「X」に置き換えます

この種の置換の場合には、記事の冒頭で前述したように「 文字列の抽出」「列のマージ」 を組み合わせて行います

実際に文字列の置換が完成するまでに、次の図のように2つの段階を踏みます

①の抽出にて、まずは文字列を右から2番目の「ハイフン/-」を境目にして分解します

この時、抽出する内容から、右から2番目の「ハイフン/-」は省いておきます

②では、下の画像にある画面を使用し、一度分解した文字列をマージ(結合)します

この時に、上の図の黄色の箇所のように、複数列をマージする際のつなぎ目に、置き換える文字である「X」を指定します

それでは、これより詳細な解説に入ります

①抽出

抽出は右から2番目の「ハイフン/-」に対して2回行います

使用するメニューは「列の追加」タブにある「抽出」メニューになります

抽出

上の画像の赤枠内の「区切り記号ののテキスト」 「区切り記号ののテキスト」 を1回ずつ使用します

ⅰ)「ハイフン/-」のの文字を抽出

上の画像の「区切り記号ののテキスト」をクリックすると次の画像の画面が開きます

こちらの画面で3か所(黄色の箇所)を指定します

・区切り記号➡こちらは「ハイフン/-」になります

・区切り記号のスキャン➡

文字列の読込方向を指定します。こちらは「入力の末尾から」になります

・スキップする区切り記号の数➡

こちらは末尾(右)から2番目なので、1度スキップします。ですので「」です

上の3つを指定してOKボタンを押すと、エディタ内の表示が次の画像のようになります

ⅱ)「ハイフン/-」のの文字を抽出

こちらは「区切り記号ののテキスト」から処理を開始します

次に開いたダイアログボックスでは、3つの箇所をⅰ)と同じ様に指定します

②マージ

①の抽出が終了した段階で、エディタ内の表示は次の画像のようになっているはずです

では、前述の通り、新たに抽出した列をマージする処理を行います

マージの処理は、次の画像の黄色で印をつけた箇所のメニューより行います

列をマージする際には、必ず、Ctrlキーでマージする列を選択しておきましょう

「列のマージ」をクリックした後に開いたダイアログボックスでは、まず区切り記号を「カスタム」で指定しましょう

更に、前述の通り置き換える文字「X」を、複数列のつなぎ目として指定します

そして、最後に新しい列名を指定します

次にOKボタンを押すと、下のGIF画像のように列がマージされます

列が「X」をつなぎ目としてマージされた結果、右から2番目の「ハイフン/-」が「X」に置き換わっています

<まとめ>

今回は、文字列を追加及び置き換える方法について解説を行いました

 文字列の追加については、「列の追加」タブにある、次の画像の箇所から追加を行いました

 文字列の置換については、変換タブにある「値の置換」メニューから置換処理を行いました

 そして、最後に同じ文字列が繰り返し出現する場合に、位置(順番)を指定して文字を置き換える方法について解説しました

こちらについては、①抽出と②マージの2つに処理を分けて実施しました

まず①の抽出では、下の画像の画面から文字列の抽出を行いました

抽出

②のマージでは、①で抽出した文字列を、列のつなぎ目に「置き換える文字」を指定した上で「マージ」しました

 この①と②の処理を組み合わせることで、かなり高度な「文字の置換」が行えます

ぜひ、様々な文字列で実際に手を動かしながら試してみてください

次回は、エディタ内での「起こり易いエラーの防止策」について解説します

にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村 IT技術ブログ VBAへ

にほんブログ村