【M言語は難しくない】今回は連番と波括弧:{}を組み合わせて活用して、前行を参照する仕組みを作成します。前行を参照する仕組みを作成したら、下の図のように「前行との差額」を計算します。

この処理はエクセルシート上であれば、四則演算の式を挿入すれば簡単に行えます
=(列名/N行目)-(列名/N-1行目)
但しセル単位/1つの値単位の操作になるので、M言語を使用しなければPower Queryでは行えません
M言語を使用すればできるといっても、とても難しい処理なのでは?
いえ、決してそんなことはありません!
エクセルシート上の行番号/レコードに相当する波括弧:{}を、連番/0,1,2・・・とうまく組み合わせて使いこなせば、簡単にできます

実際に手を動かして前行を参照した計算が行えるようになった時には、M言語の活用に大き自信を持てるようになっているはずです!
目次
今回のポイント
過去の記事で、丸括弧と波括弧を組み合わせてエディタ内のデータを参照する方法について解説しました
括弧を使用して参照する方法は、下のGIF画像のように<前ステップ名 + 波括弧/レコード位置 + 角括弧/リスト>を組み合わせる方法でした
今回は、この「括弧の組み合わせて参照する仕組み」を、更に「連番 /0,1,2,3・・・」と組み合わせて活用します!

今回使用するデータ
今回使用するデータは次の画像のデータです

上の画像のB列にある「株価」を使用して、計算を行います
各行にて、前行との株価の差額を計算します
連番の追加
今回の解説は、前述の使用データをエディタにて開くところから始めます
まず、「列の追加」タブから「インデックス列」のメニューをクリックし「連番」を追加します

インデックス列は「0」から始まるように指定します
1ではなく0にて開始する理由は、M言語は「0ベース」だからです
この追加した「インデックス列/連番」を「レコードの参照」に応用します
レコードの参照
前述の「インデックス列/連番」を「レコードの参照」に応用する点について、具体例で解説します

上の画像のように、エディタ内にインデックス列/連番を追加した段階では、適用したステップは下の画像のようになっています

まず、画像内の最終ステップの上で「F2キー」を押して、ステップ名を「DATA」に変更します
その後に、数式バーのマークをクリックして、「DATA」ステップを確定させます

これで、「DATA」ステップを前ステップとして参照する「確定処理」ができました
この確定処理を行った段階にて、適用したステップは次の画像のようになっています

ここから、インデックス列/連番を活用して、手動で各株価を参照してみましょう!
まずは、下の画像にて黄色の印をつけた箇所の株価を参照してみましょう

こちらは、インデックス列の番号「0」を、下の画像のように波括弧 / {}内に使用します

*角括弧:[]と波括弧:{}を使う順番は、前述の「今回のポイント」で解説した
次は、4行目を参照してみましょう

こちらは、インデックス列の「3」を使用します

実際に例を使い、インデックス列の値を使用して株価を参照する方法について解説しました
2つの株価は、上記では手動にて参照しましたが、次の章ではカスタム列・作成画面から同じロジックを自動で適用できるようにします
カスタム列・作成画面で連番を操作
前行参照
前章にて、手動で行ったロジックをカスタム列・作成画面にて適用すると下の図のような数式になります

こちらも数式が<前ステップ名 + 角括弧 + 波括弧>となっています
違うのは、波括弧 / {}内に「ⅰ:直接インデックス列」を挿入した上で「ⅱ:1を引く」という2点です
結果、エディタ内に次の画像のように「前行を参照した列」が挿入されます

ちなみに、以上のようなカスタム列を挿入する前に、次の画像のように数式バーを前の状態に戻しておきましょう

差額計算
これで前行を参照する仕組みができました
次に、カスタム列作成画面を「差額」が計算できるように修正します
こちらは、下の画像のように「株価」の列を挿入して「前行」を引くだけです

これで、差額を算出した列が挿入されます

エラー修正
今のままだと「差額」の列の1行目がエラーになってしまします
ですので、IF式をカスタム列作成画面に組み入れてエラーを回避します
IF式は「IF 条件式 then ~条件に合う場合~else~条件に合わない場合~」と書きます
条件式は「インデックス列」が0の場合を条件にします

これで、1行目のエラーを回避できました
<まとめ>
今回は、前行を参照して「前行との差額」を算出する方法を解説しました
エディタ内で、インデックス列を挿入すると自動的に「0」から始まる連番が挿入されます
この連番をレコードの番号に置き換えて、前行を参照する仕組みに応用しました
実際に作業としてはカスタム列・作成画面にて、角括弧の中に「インデックス列」を挿入して活用しました

今回紹介した「前行参照」が行えると、分析用の集計作業で行えることの幅が広がります
ぜひ、実際に手を動かして習得してみてください
長文を最後まで読んで頂き、誠にありがとうございました
参考までに、今回使用したファイルを添付します
次回は「例外処理」について解説します


コメントを残す