
このレクチャーでは、これからPower BI上で損益計算書を作っていくわけなんですが、元データがどういったものか?を一緒に見ていきたいと思います。このレクチャーのダウンロードに"Building Income Statement by Power BI Desktop - data"というファイルを用意しました。こちらをダウンロードしていただきたいと思います。
今回用意したデータは、ある会社の2021年から2024年までの損益計算書に関連するデータです。
ファイルを開くと、ワークシートが5つありますね。日付データ、コストデータ、売上データ、PLテンプレ、そしてPL_2021-2024です。一つづつみていきましょう。
まず、日付データ。2020年から2025年まで、一日毎の日付、年、そして月が用意されています。Power BIでモデルを組む時はこうした日付データを用意しておくと良いです。私は今回説明の便宜上先にエクセルで用意しましたが、作れる方はDAXで日付データテーブルを用意してもいいですね。
次にコストデータです。費用科目、費用カテゴリー、日付データ、そしてコストデータとあります。経理に詳しい方であれば、費用項目は勘定科目と思っていただいてOKです。SAPなどのERPだと、こうした各項目にユニークな番号付けがされていますね。費用カテゴリーとは、費用項目の粒度を少し荒くしたものです。例えば、売上原価には、労務費、材料費、外注費とあります。これらをまとめて売上原価という1つのカテゴリーにくくっています。日付データはその費用が発生した日を表しています。説明の便宜上、発生日はすべて一日にしています。コストデータは、発生した費用そのものです。
売上データを見ていきましょう。オーダー日、販売チャネル、そして売上データとなっています。オーダー日というのが、売上が発生した日です。売上データは、売上金額でいいですが、注目してほしいのは、販売チャネルです。この会社は収入減が卸売、インターネット、そして直営店と3つのチャネルがあるということです。今回作る損益計算書にはこの3つの内訳を表示したいと思っています。
次に、PL テンプレを見ていきましょう。ここがこのコースの肝です。これまでのデータはどこにでもあります。このテンプレは、Power BI上で損益計算書を再現しようとする、このコース独自です。この損益計算書の形をPower BIで作っていきます。(スクロールしながら)売上があって、売上原価があり、売上総利益があります。そのあと費用が続いて、最後に営業利益があります。
具体的には、これをPower BIのテーブルビジュアルないし、マトリクスビジュアルで表示し、各項目をいかに集計するか、です。
3つの列があります。Orderというのは、順番です。PLの各項目を表示したい順番に並べるために入れています。これがないと、項目名のあいうえお順や、各項目に入る数字の大小順になってしまい形が崩れてしまいます。
次の2つのPL項目と、PL項目(無加工)というのは実質同じものです。PL項目の方は、各項目の小計とその内訳が分かりやすいようにインデントを入れています。実際にユーザーが目にするのは、こちらです。PL項目(無加工)というのは、各項目の集計結果とこのテンプレの各項目を紐づけする時に使います。エクセルでいうところのVLOOKのようなことをして紐づけます。その時、こちらのユーザーに見せる方はインデントを入れています。データ上はインデントを入れているこれ(PL項目)とこれ(PL項目(無加工))は違うものです。ですので紐づけ用として、この無加工を用意しています。ただ、これは紐づけに使うだけで、ユーザーが目にするのは、このPL項目だけです。
最後に、PL_2021-2024。これは、これまで見てきたデータを損益計算書の形で集計するとこうなる、といういわば答え合わせように用意しました。というのがこれだけ項目が多いと、エラーが発生していても、とりあえず数字が出ていたら、あっているのかあっていないのか分かりません。作ったPLがこのようになっていたら正解、という答え合わせのために用意しておきました。このワークシートは加工することはありません。
以上、ここではこれから加工する元データファイルを見ていきました。次のレクチャーから、データをPower BIに読み込んでいきます。
このレクチャーでは、Power BIにデータを読み込んでいきます。
Power BIを起動します。私は名前を Power BI PL Building として保存しておきます。この後、中断したいと思えば、ctl + s で保存すればOKです。
データを読み込みましょう。データを取得、Excelブックです。ファイル格納位置より読み込みます。今回読み込むのは、前のレクチャーでは紹介したこれら5つのワークシートのうち、こちらのPL_2021-2024を除くすべてです。
データの変換で、データ内容をチェックしておきましょう。クエリ名、データ型をチェックします。クエリ名としては、この名前で、ファイル内容を表していると思いますのでOKですと。データ型のチェックをします。日付データは日付、テキストはテキスト、数値データは数値になっていてよさそうです。
今みているレポートにはありませんが、たまにPower BIでデータを読み込むと全くデータが入っていない範囲まで読み込んでしまっている場合があります。このあたりにもう何列かあって、データが入っていないと。ブランクの範囲も読み込んでしまっている状態です。もしそういう列が入っていたら、右クリックで削除していただければと思います。
では、これで閉じて適用を押します。データ部分に、さきほどのクエリが登場し、Power BIにデータが読み込まれました。
ここでは簡単にモデルも組んでおきたいと思います。モデルビューに行きます。日付データを一番上、売上データとコストデータを真ん中、そして今は使わないPLテンプレを一番下に持っていきます。日付データの日付から、売上データのオーダー日をつなぎます。新しいリレーションシップということで、カーディナリティも1対多でOKですね。保存とします。同じく日付データと、コストデータもつなぎます。はい。いいですね。
(モデルビューのまま)
以上、このレクチャーではデータの読み込みと簡単なリレーションシップをつなぎました。次のレクチャーからは、Power BIで損益計算書を作る際にポイントとなる、今はこうしてバラバラである、売上データと費用データを一つのテーブルにまとめるプロセスを見ていきます。
このレクチャーからは、売上データとコストデータを統合していきます。ここでは、具体的な操作に入る前に、なぜ統合しなければならないのか、と、どう統合するのかをお話します。
(レポートビュー)このコースの目的というのは、Power BI上でPL、損益計算書を作ることです。もっと具体的に言うと(実際に示す)PLテンプレをテーブルで表示して(OrderとPL項目を示す)、ここにPL項目に対応する数字を表示します。
この時、ここに落とす数字というのは、売上もコストも含めて1つのメジャーになります。(仮に売上データの売上データを落とす)こんな感じです。売上もコストもこの1つのメジャーに入っている必要があります。そうでなく、売上とコスト別々でいいんだ、ということでコストデータは別にしたとしたら(仮にコストデータのコストデータを落とす)こんな感じで2列になってしまいます。これだと、損益計算書として見た目がよくないです。
というわけで、売上とコストを1つのメジャーにまとめたいわけですが、現在は売上データとコストデータは別々の表になっています。(テーブルビューにいく)しかも形式も微妙に違います。
こうしたジレンマを解決するために、このコースでは、売上データとコストデータを統合する表、テーブルとも言います、これを作ります。その上で、その統合テーブルから、さらにメジャーを作ります。このメジャーには、売上データもコストデータも入っているので、
(レポートビュー)それをここに落とせば、PL項目に対応した数字が1列で出てくるようになると、こういうわけです。
さて、売上データとコストデータのテーブル統合ですが、いくつかのステップを経ます。みなさんがご自身の実務で応用する時、どうデータを統合するのかも、同じように考えていただければと思います。
まず、統合するにあたり、全く新しいテーブルを作るよりも、どちらかのテーブルにもう片方をつける方が実務では、現実的です。(テーブルビュー・PLテンプレ)今回はこのテンプレのようなPLを作りたいと。
この時、コストデータを見ると、もうそのままPLテンプレに当てはめられそうです。PL項目は、コストデータの費用項目が対応しています。テンプレの売上原価合計、であったり、その他費用合計というのは、費用カテゴリーが対応できそうです。費用カテゴリーは、売上原価の他にはたくさん項目がありますが、これらはテンプレのその他経費合計でまとめられそうです。
すると、今、コストデータは4列あります。これを統合テーブルのベースにしたいと。でも、今、売上データを見ると、3列しかありません。販売チャネルは、テンプレのPL項目にあたりそうですね。しかし、コストデータでいうところの、費用カテゴリーに該当するものが、この売上データにはありません。列数があっていないので、このまま売上データとコストデータを統合することはできません。
では、どうするか?
まず、売上データのテーブルをコストテーブルの形に合わせます。具体的には、今、3列のところに、費用テーブルでいうところの費用カテゴリーに該当する1列を足します。
そうして形式を合わせた売上テーブルをコストテーブルと統合し、1つのテーブルにします。
こうした2ステップで、形式の異なる売上データとコストデータを統合します。
具体的にPower BIでどうするかは次のレクチャーから説明していきます。
以上、このレクチャーでは、売上データとコストデータを統合する背景とそのやり方を説明しました。次のレクチャーでは、実際のPower BIの操作に入っていきます。
このレクチャーでは、売上データとコストデータを統合する表、テーブルを作っていきます。
順番としては、(テーブルビュー)まず、こちらの売上データを加工して、コストデータの形式に合わせたテーブルをDAXで作ります。形式を合わせるとは、具体的には売上データが今、3列のところをコストデータと同様に4列にすることです。
形式を合わせたところで、コストデータに、形式を合わせて4列にした売上データを統合した新たな表、テーブルを作ります。
では、まずは、売上データを加工した4列の表を作っていきます。この表の名前は、「チャネル別売上」としたいと思います。DAX式でテーブルを作ります。
こちらのテーブルビューの、リボンのテーブルツールで、新しいテーブルをクリック。テーブル名を「チャネル別売上」とします。SUMMRIZEというDAX式を使います。このDAXは、元の表、多くの場合大きな表をサマライズする、省略する、小さくする時に使えます。
まずは、DAX式を入力してしまいます。そのあとで、解説します。
チャネル別売上 =
SUMMARIZE('売上データ_2021-2024', '売上データ_2021-2024'[販売チャネル], '売上データ_2021-2024'[オーダー日],
"カテゴリー", "売上",
"売上金額", SUM('売上データ_2021-2024'[売上データ]))
SUMMRIZE関数は、元となるテーブルをまず指定します。今回は売上データです。次に持ってくるデータを指定します。販売チャネル、そしてオーダー日はそのままもってきました。また、この関数は新たな列も用意できます。その場合はまず、列名を決めてそこに入る内容を指定します。一つ飛ばして、まず売上金額として、売上データを持ってきました。これはいいですよね。なにせ売上のテーブルなので、売上が要ります。ここの意味は、ダブルクオテーションで囲っている、売上金額というタイトルの列で、その内容は売上データをSUMしたものだ、という意味です。
次がポイントです。さきほど飛ばしたここ。このカテゴリーというオリジナル列でその中身はテキストで売上を入れるんだ、というのを示しています。
この列が今、(売上データのテーブルをみせる)売上テーブルで欠けている4列目です。4列目を作ることこそが、ここでやりたかったことです。さきほどお伝えしたように、カテゴリーは売上としました。できあがった表でも、売上って入ってます。
こうして、(コストテーブルを見せる)コストテーブルの形式に、売上テーブルを加工した、チャネル別売上ができました。
データ型を整えておきます。オーダー日は、時間まで要らないので、データ型を日付にします。販売チャネル、カテゴリーはテキストで良いとして、売上金額は数値データですが、わかりやすいようにコンマを入れておきます。はい。これでOKです。
以上、このレクチャーでは売上データとコストデータを統合する最初のステップとして、売上データを加工したチャネル別売上テーブルを作成しました。
次のレクチャーではこうして作ったチャネル別売上をコストデータと統合していきます。
このレクチャーでは、売上データとコストデータを統合していきます。
流れとしては、(テーブルビュー)コストデータと、前のレクチャーで作ったチャネル別売上をUNIONというDAXで統合した新たなテーブルを作ります。
統合の前に、実務でよくある失敗を示したいと思います。ここは見ていただくだけでいいです。前のレクチャーにて、チャネル別売上というテーブルを作りましたと。そして、このテーブルは4列あり、各列の内容は、統合先であるコストデータとあってますよね。
じゃあ、ってことでテーブルツールの新しいテーブルで
テーブル = UNION('コストデータ_2021-2024','チャネル別売上')
UNIONというDAXでこの2つのテーブルをこのまま統合するとどうなるか?UNIONで必要なのは、統合する2つのテーブルだけなので、これで統合できます。エンターとします。一見すると、問題なく統合できています。でも、費用カテゴリーをみると、日付データらしきものが入っています。日付データに売上となっています。なんかうまくいっていないようです。
なぜ、こういうことになっているかというと、(テーブルビュー)コストデータの列の並びと、チャネル別売上の列の並びが違うからです。UNIONをそのまま使うと、既存のテーブルの列の並びでそのまま統合するためにこうした現象が起こります。実務でこれが発生すると、やっかいです。さきほどのように一瞬何も問題ないように見えるので、プロセスが進んだ後になって「何か変だ」となります。そうすると、プロセスを後戻りしなければならないので、時間のロスになります。
ですので、UNIONを使う時にこうした列順序を合わせる工夫を一つかませます。さきほど出てきたSUMMRIZEを使います。
このテーブルは削除します。
では、作っていきます。コストデータのスクショをとり、順番を確認できるようにします。
テーブルツールで新しいテーブルをクリック。そして、損益計算書テーブルという名前をつけます。
UNIONと入れ、まず基本となるコストテーブルを指定します。ここまではさきほどと変わりません。
UNION('コストデータ_2021-2024',
SUMMARIZE('チャネル別売上',
'チャネル別売上'[販売チャネル], 'チャネル別売上'[カテゴリー],'チャネル別売上'[オーダー日],'チャネル別売上'[売上金額]))
次に統合するデータであるチャネル別売上を持ってくるのですが、一工夫いれます。ここでSUMMRIZEを使います。そしてチャネル別売上。SUMMRIZEを使って、チャネル別売上の列の順番をここで変えてしまうわけです。
まず、費用項目にあたるもの。ここでは、販売チャネルです。次に、カテゴリー。あとは日付データと、金額データの順番ですね。
そうすると、形式をそろえたまま統合されたテーブルが完成します。さきほどのように、日付データに売上とか入ってないですね。
少しデータを整えます。統合したテーブルのヘッダーは、元となる、(DAX式の最初の引数を示す)基本となるデータのものをとります。ですので、こうして統合した表のヘッダーが、費用...とはじまっています。費用テーブルを元にしたので。
でも、もうこのテーブルには費用だけではなく売上データも統合されています。ですので、費用項目ではなく、項目、費用カテゴリーではなくカテゴリーとします。日付データは時間まではいらないのでデータ型を日付に変えます。コストデータももはやコストだけではないので、データとした上でコンマを入れておきます。これでいいですね。
以上、このレクチャーでは、売上データとコストデータを統合した損益計算書テーブルの作成を見ていきました。(モデルビューを見せる)次のレクチャーでは、モデルビューにて、ここまで使ったテーブルの整理をしていきます。
このレクチャーでは、売上データとコストデータの統合のまとめをします。
モデルビューにいきます。これまでのレクチャーで、損益計算書テーブルを作成しました。この損益計算書テーブルより、このあとPower BIによる加工を進めていきます。損益計算書テーブルにも日付データがあるので、日付データと紐づけておきます。あくまでPower BIでモデルを組む時、使う日付データは個々のテーブルの日付データではなく、独立して作ったベースとなる日付データを使うのが鉄則です。
チャネル別売上は、損益計算書テーブルを作る過程で作ったものですね。今後使わないので、下の方に下げておきます。
レポートビューにいきます。データ部分にはいくつかクエリーがありますね。このうち、データとして使うのは、こちらの損益計算書テーブルです。ここには、売上データもコストデータもまとめて入っていますので。そのほか使うのは、日付データと、PLテンプレです。チャネル別売上、コストデータ、そして売上データというのはもう使いません。ごちゃごちゃするので、非表示にしましょう。
モデルビューにいきます。各クエリの目玉ボタンを押すと非表示になります。ここで注意なのは、整理整頓の意味で非表示にするだけで、削除するわけではないです。この損益計算書テーブルは、売上データとコストデータ、そしてチャネル別売上を経由して作られているので、これらが削除させると、損益計算書テーブルも壊れてしまいます。
レポートビューにいって、データをみてみます。クエリがすっきり整理されています。
さて、みなさんの中にはこう思った方もいるかもしれません。損益計算書テーブルをPower BIに取り込む前に、最初からエクセルで用意すれば、これまでのSUMMRIZEや、UNIONでごちゃごちゃ表作らなくてもそのままつかえるんじゃね_と。
まったくその通りです。実はある時期まで私もそうしていました。しかし、それをやるとアップデートの度にエクセルで加工する必要が出てきます。
損益計算書ってそんなに頻繁にアップデートしないでしょ、と思われるかも知れませんし、そういう方も多いでしょう。ただ、私の場合、月次や年次の決算で、損益計算書が出来上がる過程で都度、Power BIでチェックしていました。DAXをこれまでのレクチャーのように組んでおけば、元データが変わった次第で、読み込みなおせば自動でアップデートできます。作ったPLは、過去のPLと比較ができるようにしているため、この比較もこのコースの後半でやりますが、決算のプロセスで随時チェックし、過去のデータと比べておかしな点はないか?タイムリーきずくことができます。また、変な部分ができた時には、経理のみなさんに、ここ変だけど、この後なにかデータ入る?と早い段階で指摘ができるようになります。
こういうこともあり、今回このコースでは損益計算書テーブルは、エクセルで用意せず、DAXで作ったわけです。以上、ここまでで、Power BIで損益計算書を組んでいく前の、データの下準備を行いました。
次からは、いよいよ損益計算書を組んでいくプロセスに入っていきます。
これまでのレクチャーで、データの整理を行いました。このレクチャーからは、そのデータを使って、Power BIによる損益計算書づくりに入っていきます。
このレクチャーから、損益計算書に入れていくメジャーを作っていきます。テーブルビューで、損益計算書テーブルをみてください。データ部分に、数値が入っているわけですが、今入っている数字は、売上も費用も両方とも正の数字になっています。どうやって、Power BIにこれは売上だから、プラス。これは費用だからマイナスか?を伝える必要があります。
カテゴリー列がその分類に使えそうです。しかし、ここは売上は1つですが、費用については様々な分類に分かれています。これを一つづつ拾っていくのは大変です。まずは、売上なのか費用なのかを分類する1列をここに足したいと思います。
損益計算書テーブルを開いた上で、列ツール、新しい列です。簡単なIF式を足して、売上と費用を分類、正しくは売上とそれ以外と分けたいと思います。
売上費用分類 =
IF('損益計算書テーブル'[カテゴリー] = "売上", "売上", "費用")
もし、カテゴリーが売上ならば、売上。それ以外ながら費用としました。損益計算書データには、売上と費用しかないわけですから、売上以外は費用だと、したわけです。はい。これで売上と費用を分類するラベル列ができました。
(テーブルビューを見つつ)
Power BI レポートを作る際のベストプラクティスとして、今回の売上だったり費用だったり集計する数字については、集計のためのメジャーを作っておく、というのがありましたね。損益計算書データのこちらのデータ列を集計するためのメジャーを作っておきます。
レポートビューに戻って、前に作ったテーブルは削除します。ページ名がページ1だと味気ないので、損益計算書、としてます。
さて、これからメジャーを作ります。というかいっぱいメジャーを作っていきます。レポートビューのデータ部分でせっかくクエリがすっきりしているので、ここにメジャーを無作為に対していくとごちゃごちゃしていきます。どこにどのメジャーが入っているのかわからなくなりますし。ですので、メジャーを格納するためだけのクエリを作ります。これは整理目的なので、集計や作成するレポートには関係ありません。
ホームの、データ入力、データは入れる必要はありません。名前だけを入れます。名前を損益計算書メジャー、としたいと思います。そうすると新しいクエリができます。ここにこれから作ったメジャーを格納していきます。
(テーブルビューにいって、損益計算書テーブルを示す)では、改めまして、損益計算書
損益計算書メジャーをクリックした後で、新しいメジャーをクリックします。
損益集計という名前にしたいと思います。DAXは単純にSUMで、データを集計です。
損益集計 = SUM('損益計算書テーブル'[データ])
はい。もし、間違って別のクエリで作ってしまった場合も全然問題ないです。作ったメジャーをクリックして、メジャーツールのホームテーブルで正しい位置を選択すれば簡単に移動できます。Power BIのバージョンによっては単にドラッグするだけで移動できる場合もあります。さきほど、このメジャーを格納するためにクエリを作った時に、どうしてもできちゃう列1というのがあります。これは邪魔なので削除しておきます。
さて、作ったメジャーをレポートに出して、カードビジュアルにします。こういう数字が出てくるわけですが、これは今のところ意味がないです。(テーブルビューにいく)なぜならこの損益計算書テーブルのデータを単に足しあげただけです。費用も正の値なので、単純に売上も費用も絶対値を足しあげただけです。
どうにかして、集計した時に費用部分がマイナス数値にして、集計したら売上と差し引きされるようにする必要があります。ここで活きてくるのが、さきほど作った売上費用分類となります。
以上、このレクチャーでは、損益計算を行うためのメジャーを作りました。次のレクチャーでは、作ったメジャーに対して、「プラス」と「マイナス」を反映していきます。
(レポートビュー)前のレクチャーでは、損益集計というメジャーを作りました。
(テーブルビュー)これは、売上と費用を統合した、損益計算書のデータを集計したものでした。ただ、現在の問題点というのが、このデータというのは売上も費用も両方とも正の数字です。ですので、集計をすると、単に売上と費用の絶対値を合計するだけで、意味のある数字が出てきません。
このレクチャーでは、こちらの損益計算書テーブルのデータについて、売上と費用にプラスマイナスをつけて集計できるメジャーを作っていきます。
前のレクチャーにて、こちらの売上費用分類という列を作りました。この列は、こちらのカテゴリーが売上ならば、売上、それ以外は費用と出るようにしています。こちらを使います。
では、レポートビューに戻り、新しいメジャーの格納先、損益計算書メジャーをクリックした上で、新しいメジャーです。
(DAXが見やすいように拡大する。)
まずは、数式を作って、あとから説明していきます。
(数式を貼る)
実績値 =
VAR Revenue = CALCULATE('損益計算書メジャー'[損益集計], '損益計算書テーブル'[売上費用分類] = "売上")
VAR Expense = CALCULATE('損益計算書メジャー'[損益集計], '損益計算書テーブル'[売上費用分類] = "費用") * -1
RETURN
IF(SELECTEDVALUE('損益計算書テーブル'[売上費用分類] )= "売上", Revenue,
IF(SELECTEDVALUE('損益計算書テーブル'[売上費用分類]) = "費用", Expense,
Revenue + Expense))
まず最初。この式では、ここで示すように、売上項目ならこうして、費用項目ああしてというIF式を作っていきます。IF式はとにかくDAXが複雑になりがちですので、集計部分のバリアブルを作っておきます。
Revenueは売上という意味で、このバリアブルは、さきほど見た、売上費用分類が売上部分を集計します。今度はExpenseは費用という意味で、こちらは分類が費用部分を集計します。大事なのは、最後に-1を掛け算している点です。これにより、課題である費用にマイナスをつける、を解決します。
バリアブルができたところで、RETURNで閉じます。
その上で、DAX本体を作ります。IF式で初めて、ここではSELECTEDVALUEという式を使います。これは何ができるかというと、その名の通り、選択された行の値を返してくれます。IF式と一緒に使えば、もし、今選択している行の値がこれだったら....という式が作れます。
こうして、選択された売上費用分類が売上ならば、バリアブルであるRevenueの結果を持ってくると。Revenueとは、こちらのバリアブルで定義したこの集計です。売上費用分類で、売上のものを集計します。
そして、IF式の中にさらにIF式をいれています。もし、売上費用分類が費用ならば、Expenseを実行すると。
さきほど、バリアブルを使ったのは、IF式はごちゃごちゃしがちだから、という話をしました。もしバリアブルを使わないなら、このRevenueなり、Expenseにこれらの式を代わりに入れることになります。逆に言えば、単にそれだけの話で、バリアブルは何か特別なものではありません。
最後、売上でも費用でもない場合を作る必要があります。これは何かというと売上と費用を集計した結果である利益です。利益はどうやって計算するかというと、単純に売上から費用を引きます。もうバリアブルでは、費用にはマイナスをつけています。ですので、計算としては、Revenue + Expenseとなります。
はい。これでカッコを閉じてエンターです。エラーになってしまった場合には、閉じカッコに注意してください。私だけかもしれませんが、SELECTEDVALUEのDAXの閉じカッコ、ここですね。これが忘れられがちです。
では、できた実績値をレポートに落としてみましょう。カードにして、書式設定の吹き出しの値で、表示単位をなしにします。メジャーをクリックして、コンマを入れます。すると、60,937,107となりました。これは、今回用意した損益計算書テーブルの売上から費用を引いた値、つまり利益になっているハズです。
簡単に検証してみましょう。元データを開いて検証してみます。元データには、今回Power BIには読み込みませんでしたが、答え合わせ用のPLを用意していました。今出ているこの6千というのは、全データの売上から費用を引いたものです。ということは、このデータを集計して作ったPLのすべての年度の利益と一致しているハズです。ではどうか?チェックすると、60,937,107。60,937,107と一致していますね。
スライサーを出して、ここに日付データの年を入れます。書式で、スライサーの設定で、バーティカルリストにします。ここで年を選ぶときちんとその年の数値を出しています。これを元データのPLと比較しても、各年度の営業利益と一致しています。これで集計メジャーができました。
では、元データは閉じておきます。Power BIを操作中にその元データファイルを開きっぱなしにするのはトラブルのものですので。
以上、このレクチャーでは損益計算書にいれる数値を計算するメジャーを作りました。次のレクチャーでは、損益計算書、PLのテンプレートに数値をあてはめていきます。
(レポートビューからはじめる)
このレクチャーからは、いよいよ損益計算書に数値を当てはめていきます。
(テーブルビューにいく)
このレクチャーからしばらくやっていくのは、これらPL項目の各行に数値を当てはめていくことです。
まず、サブトータル、小計から始めます。(テーブルビューのPLテンプレを見る)小計とは何かというと、売上高合計、売上原価合計、売上総利益、利益率、あと、その他経費合計、営業利益と営業利益率です。
なぜこれらの集計が必要かというと、PLテンプレのうち、PL項目として、売上だったら販売代理店や輸入や卸売り。売上原価だったら、手数料とか設備費とか。(損益計算書テーブルを見る)こういった項目は、損益計算書テーブルのまさに項目列に入っています。
(PLテンプレにもどる)ですので、小計を用意した後に、作りますが、EXCELのSUMIFSのように、項目をキーに集計ができます。
しかし、売上高合計や原価合計や売上総利益といった小計はそれができないので別途計算する必要があるんです。このレクチャーでは、まず売上から売上総利益率までを作ります。
一番簡単なのは、売上の合計です。(テーブルビューの売上費用分類を示す)前のレクチャーで、売上費用分類ということで、売上とそれ以外は費用という分類列を作りました。ですので、ここが売上を集計すればOKです。
レポートビューに戻ります。メジャーの名前は、わかりやすいように当てはめるテンプレにそったものにしたいと思います。参照するために、テーブルを作って、そこにテンプレからオーダーと、PL項目を入れます。オーダーでソートをすると、PLの形になります。これを参照します。
メジャーを格納する損益計算書メジャーのところで、新しいメジャーです。
売上高合計 = CALCULATE('損益計算書メジャー'[損益集計],'損益計算書テーブル'[売上費用分類] = "売上")
損益集計というのは、(損益集計のメジャーを示す)損益計算書テーブルの値を集計するメジャーでしたね。注意すべきは、もう一つ作っています実績値のメジャーと違い、売上費用でプラスマイナスなどがつかない単純な集計が、この損益集計です。
この後、メジャーを作っていく中で、損益集計と間違えて、実績値を入れても、エラーは起こりません。ただ、プラスマイナスの符号がぐちゃぐちゃになります。
ですので、一緒に手を動かしているみなさんは、この後結果が何かプラスマイナスがおかしい、と思えばここを疑ってみてください。かくいう私は実務で結構この辺りミスしてしまうことがあるので、人のことは言えませんが。
はい。これで売上ができました。次に売上原価を作ります。(損益計算書テーブルにいく)売上原価を識別するためには、カテゴリーが使えます。売上原価とあります。一応項目にも売上原価はあるんですが、ここはさらに明細が分かれています。これだと売上原価だけの集計には不向きです。では、また、レポートビューにいって、損益計算書メジャーのところをクリックした上で、新しいメジャーです。
売上原価合計 = CALCULATE('損益計算書メジャー'[損益集計], '損益計算書テーブル'[カテゴリー] = "売上原価") * -1
忘れてはならないのが、最後に-1をかけることです。売上原価はコストですので。先ほども申し上げたとおり、現在Calculateで使っているのは損益集計というメジャーです。これは単に集計だけをして、デフォルトだとコストもプラスの数字のまま集計されるのでしたね。
(PLテンプレをみながら)今、この売上高合計と、売上原価合計を計算しました。するとここから導かれるのは、売上総利益です。売上から売上原価合計を引くと出ます。
売上総利益 = '損益計算書メジャー'[売上高合計] + '損益計算書メジャー'[売上原価合計]
気を付けないといけないのは、売上原価は-1をかけていますので、すでにマイナスが入っているのでここでは足し算になります。
次に、(テンプレを示しながら)売上総利益率をつくります。新しいメジャーとして、売上総利益率です。
売上総利益率 = DIVIDE('損益計算書メジャー'[売上総利益], '損益計算書メジャー'[売上高合計],0)
割り算はDIVIDEを使いました。最後の0とはもし、計算上0を使った割り算の時に返す値です。ここはオプションで入れなければ、ブランクがかえってきます。
作った値を見てみましょうか、テーブルビジュアルをつくり、作った値をいれてみます。横に元データのPLの合計を表示しました。売上高、売上原価が売上総利益になっています。利益率もよさそうです。
以上、このレクチャーでは、小計のうち売上高から売上総利益率を作りました。次のレクチャーでも引き続き、小計を作っていきます。
このレクチャーでは、引き続き損益計算書のサブトータル、小計をしていきます。
次は、こちらの「その他経費合計」です。これはどうやって計算するか?ちょっと工夫が必要です。
(テーブルビューにいく)これまでの売上や売上原価のように、明確に項目やカテゴリーで数字を拾えそうにないです。その他っていう具合なのでオフィスの光熱費や賃料、人件費など雑多なものの合計になります。
ではどうするか?全体から、余計なものを引いていって欲しいものを出すアプローチをとります。
具体的には、こちらの売上費用分類。ここの費用。これは売上以外が全部入っています。費用のうち、さきほど、売上原価を計算しました。すると、売上費用分類の費用のから、売上原価を引くと、欲しかったその他経費合計が出せます。
では、レポートビューに戻って計算します。メジャーの格納先である損益計算書メジャーでクリックした上で、新しいメジャーです。
その他経費合計 =
(CALCULATE('損益計算書メジャー'[損益集計], '損益計算書テーブル'[売上費用分類] = "費用" ) + '損益計算書メジャー'[売上原価合計]) * -1
まず、費用全体を出します。そこから先ほど用意しておいた売上原価合計を引きます。ただ、売上原価はすでに-1をかけているのでマイナス数値として出ます。ですので、DAX式としては足し算になります。
はい。これで終わりと思いましたよね。まだあります。今こうして出てきたのは、その他経費合計の絶対値です。費用はマイナスにする必要がありますので、この数式全体をカッコで囲み、そして-1をかける。これで完成です。
はい。あと残っているのは、営業利益と営業利益率です。
営業利益は簡単です。(テンプレを示すながら)売上総利益からその他経費合計を引けば出ます。
営業利益 = '損益計算書メジャー'[売上総利益] + '損益計算書メジャー'[その他経費合計]
注意すべきは、DAX式は足し算になります。なぜならその他経費合計はすでに-1をかけて、負の値になっていますので。
最後に営業利益率です。これは営業利益を売上で割れば出ますね。
売上総利益率 = DIVIDE('損益計算書メジャー'[売上総利益], '損益計算書メジャー'[売上高合計],0)
はい。これで出ました。さきほど作ったテーブルにいれてみましょう。
出てきた数字を検証してみましょう。また、コンマとパーセンテージで書式を整えます。
また検証として、元データPLと見比べます。
みなさん、チェックする時に、絶対値だけではなく、プラスマイナスの符号もチェックするのがポイントです。コストはマイナスがついていればOKです。ついていないとこの後の集計で数字が狂ってきます。もし、マイナスがなければ、(コストメジャーをみせる)こんな感じで、メジャーに -1をつけるのを忘れていないか見ていただければと思います。
検証が終わったら、元データのファイルは閉じておきましょう。
以上、これで作りたかった(テンプレを示しながら)これらの損益計算書の小計、サブトータルが集計ができました。
次のレクチャーからは、このコースの肝でもある、損益計算書のテンプレートをレポートビューに載せていくプロセスに入っていきます。
このレクチャーでは、最終的にPower BIで表示したい損益計算書をレポートビューにのせていきます。
(テーブルビュー、テンプレにいく)
やりたいこととしては、このPLテンプレの形、このPL項目という列、これをPower BI上で再現したいわけです。なかなか単純にいかないのが、こうしたインデントや、スペースを表現にするには、多少書式を工夫する必要があります。
では、はじめしょう。
レポートビューに行き、今あるビジュアルは全部消しておきます。その上で、PLテンプレのPL項目をキャンバスに持ってきます。私の場合は自動で、テーブルになりました。なってなければ、テーブル。こちらをクリックします。
さらに、OrderもPL項目の上に載せます。このオーダーが、テンプレのとおりの順番にするのに活躍します。順番が大事です。Orderの方が上になっている、テーブルでいえば左に来ていることを確認してください。
まずみてもらうと、全然テンプレっぽくないですよね。Order列をクリックします。クリックするたびにソートされます。昇順、小さいものから大きい数になるようにならべます。すると、ぐっとPLのテンプレっぽくなりました。
ただ、よくみると、スペースがなくなっています。Orderをみると、4のあとにすぐ6がきています。5であるスペースが消えています。
視覚化の列のところ、Orderの矢印をクリックします。ここで、集計しない、をクリックします。すると順番がまた崩れるので、ソートしなおします。するとスペースが復活しました。
あと、念のため、同じく、データのない項目を表示する、にもチェックをいれておきます。
次にこのオーダー列というのは見栄えが悪いので列を縮めてみえなくします。削除すると順番が崩れるので、見えなくするだけです。
すると、ヘッダーがなんだか太くなって見栄えが悪いです。
ビジュアル書式の列見出し。このテキストの折り返しをオフにします。みえてませんが、ここで隠したオーダー部分が折り返しになっていたので、ヘッダーが太くなっていたのでした。
今、各行が幅がまちまちですね。ここは詰まっていますが、ここはスベースがある。これは同じく書式の値、テキストの折り返しをオフにすることで解決できます。
はい。こうして、(テーブルビューにいく)エクセルで用意したようなテンプレをPower BI上で表現できました。今回はたまたま損益計算書ですが、こうしたテクニックを他にも応用できれば、Power BI上の表現の幅が広がりますね。特に、このorderを入れて表示させる順番を決めるのは汎用性のあるテクニックです。
以上、このレクチャーでは、損益計算書をレポートビュー上に表示しました。
このあとは、いよいよ最終段階に入ります。
ここからは、Switch関数などを用いて、テンプレの各行に対応する数値を表示する、DAX式を作っていきます。
このレクチャーからは、Power BIのレポートに表示したこのPL、損益計算書に数字を埋めていきます。
さて、これまでのレクチャーで、売上高合計や、売上原価合計などのメジャーを作りましたよね。
じゃあってことでそれを入れたらいいじゃないかということで入れたくなります。
するとどうなるか?単に同じ数字がずっと出てくるだけです。売上原価を入れても、単に列が増えるだけです。
これはやりたいことではないですね。
これからやるのは、ある一つのメジャーを作ります。そしてそのメジャーを、このテーブルに落とせば、PLの行に沿った数値を出してくれる。そんなメジャーを作りたいわけです。
で、前のレクチャーで作った売上高合計や、売上原価合計というサブトータル、小計は、そのメジャーの中のパーツになります。
このようにいろんなことを1つのメジャーでやろうとするので、このメジャーは複雑なDAX式になります。
ですので、ステップバイステップで作っていきます。
(DAX式の部分を大きくする)
メジャーを格納する損益計算書メジャーに行きまして、新しいメジャーをクリックします。名前は当期実績値とします。
ちょっといったんテーブルビューにいきます。テンプレで、今レポートビューで見せているのは、このPL項目列です。見えていなくても存在しているのは、このPL項目無加工、という列です。これは単にPL項目の列から、インデントを除いたものです。これから作るメジャーは、エクセルのVLOOKUPや、SUMIFSのように、この無加工の部分を参照し、それにあった数字を集計する、という式を作ります。なぜ、このPL項目を参照しないか?というと、ここは、見た目を整えるためにインデントを入れているからです。データ上は、インデントが入っていると、全く別のものと認識されてしまいます。ですので、あえて無加工という列を加えた、という次第です。
では、レポートビューにもどって続きをします。
今回も式がごちゃごちゃするので、バリアブルを作ります。
このバリアブルは、以前にも使ったSELECTEDVALUEを使い、選択された行が無加工のPL項目でどこにあたるのか?を表すものです。いったん、一番わかりやすい売上を作ります。SWITCHというDAX式を使います、SWITCH式は、その直後にTRUE式を入れて、連続してIF式を作る代わりに使うことが多いです。
こういう場合はこれ、ああいう場合はそれ、はたまた...みたいに条件が続くときに、IF式よりも使いやすいのが、SWITCH式とTRUEの組み合わせです。
この後、たくさん条件を作りますが、まずは売上だけを作ります。今からここにDAX式を入れていきます。少し、テーブルを下の方に持ってきて、参照できるようにしておきます。キチンと数字を持ってくるためには、スペルミスするとダメですので。
当期実績値 =
VAR SelectedItem = SELECTEDVALUE('PL テンプレ'[PL 項目(無加工)])
RETURN
SWITCH(TRUE(),
SelectedItem = "売上高合計", '損益計算書メジャー'[売上高合計],
BLANK())
※ここでわざと売上高合計じゃなく、売上高にする
現在選択しているものの行が売上高ならば、別途用意した売上高合計のメジャーを使うと。
このコンマの後にもっと数式を続けますが、いったんここで検証したいと思います。改行して、BLANK()といれます。これは、売上高以外だったらブランクを返す、とし、いったんここで式を確定します。では、このメジャーをテンプレに入れてみましょう。
全然数字が出てきません。何かおかしいと。メジャーをみてください。売上高となっています。テンプレをみると売上高合計となっていますね。このような感じで、人間としては売上高合計も売上高も一緒でしょ!と思っても、パソコンは全然違うものだと認識します。ここから、このような売上とか売上総利益とか営業利益とか似たような言葉が続くので、正しいものを参照するのに、ちょっと注意する必要があります。では売上高合計としてエンターとすると、数字が出てきました。
コンマを入れます。見事に売上高の部分に数値が反映されました。スライサーを年度でいれてみます。きちんと反応していますね。
いったんここでレクチャーを区切ります。ちょっとづつやっていきましょう。
次のレクチャーでは、このDAX式にさらに売上以外の項目を足していきます。
このレクチャーでは、前のレクチャーに引き続き、こちらの当期実績値のメジャーを拡充していきます。
前のレクチャーでは、こちらの売上高合計を出せるようにしました。
ここでは、その他のサブトータル、小計項目である、売上原価から営業利益までを出せるようにします。
まず、売上総利益率と営業利益率といった率以外は、売上高合計と同じなので、こちらの行をコピペしてつくります。スペースをあけて、売上高合計をコピーします。追加で作るのは、売上原価、売上総利益、その他経費合計、営業利益の4項目ですので、4回ペーストします。その後、中身をちょっと変えればOKです。
繰り返しになりますが、気を付けないといけないのは、このPLテンプレの各行のテキストをみて、数字をひっぱってきているため、ミススペルとかすると、エラーが出ます。テンプレをみながら慎重にいきます。
(頭から式を変えていく)
当期実績値 =
VAR SelectedItem = SELECTEDVALUE('PL テンプレ'[PL 項目(無加工)])
RETURN
SWITCH(TRUE(),
SelectedItem = "売上高合計", '損益計算書メジャー'[売上高合計],
SelectedItem = "売上原価合計", '損益計算書メジャー'[売上原価合計],
SelectedItem = "売上総利益", '損益計算書メジャー'[売上総利益],
SelectedItem = "その他経費合計", '損益計算書メジャー'[その他経費合計],
SelectedItem = "営業利益", '損益計算書メジャー'[営業利益],
BLANK())
できたら一度確認します。この左側はあっていても、右側を間違える時があります。売上原価、なのに、売上総利益が入っているとか。言葉にてますし。はいよさそうですね。
これでエンターとすると、テンプレに数字が入っています。少しづつ埋まってきました。
また、ここでレクチャーを区切ります。式が複雑なので、区切っていきましょう。次は、売上総利益率、営業利益率といったパーセンテージの計算をこのメジャーに追加していきます。
ここまでで、売上、売上原価、売上総利益、そして営業利益といった小計、サブトータル部分の数字的な項目を、今作成中のメジャーに足していきました。
このレクチャーでは、売上総利益率と、営業利益率、割合も入れていきます。これらはちょっと式が違うんです。
まず、普通に前のレクチャーのようにやってみましょう。2行スペースを用意して、売上総利益率、営業利益率を用意します。
そしてエンターとします。すると、数値は入りましたが、1という数字がでました。パーセンテージなのに何か変です。これはなぜかというと、この当期実績値というメジャーの書式は、整数です。そのためパーセンテージではなく整数で出てしまっています。
ここは一工夫がいります。FORMATというDAXを使います。これはその名前の通り、数値の書式を変えてくれます。フォーマットしたい対象のメジャーを選んだあとに書式を指定します。今回はパーセンテージですね。FORMAT式の閉じカッコに注意です。はい。
これでエンター、とすると売上総利益がパーセンテージで現れました。一方で、他の小計、サブトータルの式は整数のままです。メジャー全体に設定された書式よりも、FORMATで設定した書式が優先されています。では、同じ要領で、営業利益も作ります。コピペでできますね。タイポしないように、テンプレをみながら入力します。
当期実績値 =
VAR SelectedItem = SELECTEDVALUE('PL テンプレ'[PL 項目(無加工)])
RETURN
SWITCH(TRUE(),
SelectedItem = "売上高合計", '損益計算書メジャー'[売上高合計],
SelectedItem = "売上原価合計", '損益計算書メジャー'[売上原価合計],
SelectedItem = "売上総利益", '損益計算書メジャー'[売上総利益],
SelectedItem = "その他経費合計", '損益計算書メジャー'[その他経費合計],
SelectedItem = "営業利益", '損益計算書メジャー'[営業利益],
SelectedItem = "売上総利益率", FORMAT('損益計算書メジャー'[売上総利益率], "0.00%" ),
SelectedItem = "営業利益率", FORMAT('損益計算書メジャー'[営業利益率], "0.00%" ),
BLANK())
はい。これでサブトータル、小計が損益計算書に反映されました。ここで再度レクチャーを区切ります。
以上、ここまでで、損益計算書テンプレに小計、サブトータルを埋めるところまでできました。
次のレクチャーでは、残りの細々とした、PL項目を埋めていきます。
このレクチャーでは、引き続き損益計算書に数値を埋める、この当期実績値メジャーをいじっていきます。
あと残るは、こうしたPLのこまごまとした項目です。
で、みなさんの中には小計の時みたいに全部のアイテムについてこうした式を作んなきゃいけないのかな?と思った方いらっしゃると思います。結論からいうと不要です。そういう作り方だと、データ更新があり、新しい項目が増えた時にまたDAX式に行を足す必要が出てしまいますし。
では、どうするか?これからやるのは(テーブルビューにいく)この損益計算書テーブルの項目列を使います。こちらをキーにして、該当する項目を集計します。というのも、この項目列は、(PLテンプレにいく)損益計算書のこの列、PL項目に対応しますので。
レポートビューに戻ります。集計で使うのは、前に作ったこちらの実績値メジャーです。このメジャーは損益計算書テーブルの値を集計するだけではなく、売上はプラス、費用項目はマイナスをつけてくれるすぐれものでした。
ちなみに、今当期実績値メジャーで使っている小計の売上原価やその他経費合計のメジャー。これらもコストにはマイナスが入るように最後に-1をかけていますね。こうして、この当期実績メジャーで出すコストには、必ずマイナスが入るように統一しています。
当期実績値メジャーをひらきます。
当期実績値 =
VAR SelectedItem = SELECTEDVALUE('PL テンプレ'[PL 項目(無加工)])
RETURN
SWITCH(TRUE(),
SelectedItem = "売上高合計", '損益計算書メジャー'[売上高合計],
SelectedItem = "売上原価合計", '損益計算書メジャー'[売上原価合計],
SelectedItem = "売上総利益", '損益計算書メジャー'[売上総利益],
SelectedItem = "その他経費合計", '損益計算書メジャー'[その他経費合計],
SelectedItem = "営業利益", '損益計算書メジャー'[営業利益],
SelectedItem = "売上総利益率", FORMAT('損益計算書メジャー'[売上総利益率],"0.00%"),
SelectedItem = "営業利益率", FORMAT('損益計算書メジャー'[営業利益率],"0.00%"),
CALCULATE('損益計算書メジャー'[実績値],FILTER('損益計算書テーブル','損益計算書テーブル'[項目] = SelectedItem))
)
まず、SWITCHの閉じカッコはよけておきます。これまで途中経過を検証するために置いたBLANK()を削除します。
ここに項目の集計式をいれます。
CALCULATEを使います。最初に入れるのは集計式です。さきほどお伝えしたように実績値メジャーを使います。そして集計の条件。ここでFILTERというDAXを使います。これによりテーブルを呼び出すだけではなく、欲しい行を含んでいるものだけを絞ることができます。今回欲しいのは損益計算書テーブルの項目が、PL各行の項目に等しいものです。それはバリアブルで用意していますよね。はい。閉じカッコは慎重になる必要があります。
Power BIではカッコがどれと対応しているか表示してくれます。この閉じカッコは、FITLERの閉じカッコです。さらに閉じカッコをします。するとこれはCALCULATEの閉じカッコ。最後は、よけておいたもう一つの閉じカッコ。これが大本のDAXであるSWITCHの閉じカッコになります。
はい。これで数式ができました。
すべての行に数字が入りました。これで当期実績値メジャーは完成です。お疲れ様でした。
改めて損益計算書をみてみましょう。頭から、各項目、そして小計にも数字が反映されています。頭の売上から、お尻の営業利益までキチンと反映されています。
ここまでで、まずは一つのゴールです。Power BIで損益計算書を作ることができました。
スライサーで年度を指定すると、年度にあわせて損益計算書の中身が変わっています。
以上、このレクチャーまでで、当期実績値メジャーが完成し、損益計算書も作成できました。
さて、Power BI reportに限りませんが、こうしてレポートをつくった時、エラーでもなく、また同じ数字がずーと出てるわけでもなく、それっぽい数字が出ているとうまくいったと思ってしまいます。Power BI Reportは特にその傾向が強いと個人的に思っています。次のレクチャーでは、こうしてできた数字の検証を行います。引き続き、一緒に学習を進めていきましょう。
このレクチャーでは、これまで作ったPower BI による損益計算書の検証を行います。実務でも、レポートでなんとなくそれっぽい数字が出てきた時、まあ大丈夫と思っていたら、実は全然変な数字が出ていた、なんてことはよくありますね。では、チェックしていきましょう。
基本的にやりたいのは、元データに用意しているPLとPower BIで出したPLがあっているかの検証です。ですので、元データを私は開いています。年度毎に見比べていきます。
スライサーで2021年を選択します。2020年と2025年はデータがないので調べる対象は、2021年から2024年の4年間です。
売上から売上総利益までを、元データと見比べてみます。
はい。あっていますね。次は営業利益まで見ていきます。雑多な項目がありますが、なんとなくでも視線を横にずらしてみていくと、あってるのが分かります。
このような形で各年度で見ていくのが理想です。ただ、ここでは省略して、あともう一年かつ、抜き打ちでチェックしてみたいと思います。2023年を見ていきます。頭からざ~とみていき、合っているのが確認できました。
さて、私はさも当たり前に合ってますね、なんていってますが、このコースの下準備の段階では合ってないこともありました。しかし、こうしてチェックしたおかげで抜けている部分をみつけることができました。ちなみに何を間違っていたかというと、一例をあげると、損益計算書をみた時に、売上総利益が空欄だったんです。で、当期実績値のメジャーをみていただくと、SWITCHには、この場合はこれ、と指定います。でも、SWITCHでどれにも当てはまらない時というのは、デフォルトではブランクを返します。エラーではないんですね。だから、売上総利益がブランクということは、何かがここでおかしかったと。
それで最初に疑ったのは売上総利益メジャーです。なんか変かなってメジャーを見ましたが、ここもおかしなところはないと。それで再度当期実績値の売上総利益の部分と、PLのテンプレをみました。PLテンプレは、売上総利益です。でも、私は当期実績値メジャーのここに、売上総利益じゃなくて、売上総利益合計って入れてました。式をコピーして作ったので、修正を忘れていたというわけです。まあ、そういうこともあったので、前のレクチャーでも、PLテンプレの文言と完全に一致するようチェックが必要ですよ、なんてしれーと言っていたわけです。
はい。これでPower BI で損益計算書ができ、また検証もできました。おめでとうございます!このコースでやりたかった損益計算書をPower BIで表現する、ができました。まずはこれで一つ達成です。
さて、これはこれでいいのですが、通常ビジネスの実務において、単独の数字だけで意味ある洞察が得られることはありませんよね。比較を行い、それにより目の前の数字の良しあしを判断していくものだと思います。
次からは、ここまでで作った損益計算書、そしてこれらのメジャーを活用して、比較ができるように発展させていきたいと思います。
このレクチャーからは、比較をキーワードにして、これまでのレクチャーで作りました損益計算書をアレンジしていきたいと思います。
実務でも、数字が単独であっても、それ自体が意味あることって少ないですよね。比較してみてはじめて何かしらの気づきがあるかと思います。
まず、手始めに、比較と言えば、ということで年度毎に損益計算書を並べて表示したいと思います。
具体的に言えば、今はスライサーで選択すれば、選択された年の損益計算書が出てきます。そうではなくて、これを2021、2022、2023という具合に並べて表示します。こうすることで、横に視線をもってくれば、各項目がどのように推移したかが俯瞰できるようになります。これだけでも結構見えてくることがあります。では、やってみましょう。
現在のページをコピーします。最初のページは損益計算書(単年度)とします、新しいページは損益計算書(複数年度)としましょう。
そして、複数年度を出すということで、ビジュアルをテーブルからマトリクスに切り替えます。すると、またフォーマットがぐちゃぐちゃになるので、フォーマットを整えていきます。
まず、PL項目を列から行に、orderの下に移動させます。すると、order部分がこのようにまとめられてしまいます。これを展開したいわけですが、こうして一個づつ展開するのは大変です。こちらの下向きの展開矢印アイコンで一気に展開します。
ちなみに、この展開アイコンはどこかがこうして展開しているとオフになりますので、いったん全部閉じてから使うようにしましょう。
次に書式に行き、レイアウトとスタイルのプリセットです。ここでレイアウトを表形式にします。まだ全然PLっぽくないですね。
各行に小計が出ています。これが邪魔しています。このまま書式の下の方に行きまして、行の小計をオフにします。
だいぶそれらしくなってきました。行を見ていくと一部項目名が長いものの、行の幅が広くなっているものがあります。行見出しに行きまして、こちらの折り返しをオフにします。これで幅が均一になり、キレイになりました。
最後に、orderの列を見えなくします。もしこの時に列の幅がおかしくなってしまったら、書式の列見出しで、テキストの折り返し。ここをオフにします。私の場合はデフォルトでオフでしたので、必要ありませんでした。
はい。これでマトリクスビジュアルにおいても、さきほどテーブルで作ったビジュアルと同じように損益計算書が再現できました。
もちろん再現したのは目的があります。この上で、日付クエリの年をマトリクスの列にもってきます。そうするとどうなるか。御覧のように年度毎の損益計算書を並べて表示することができます。
日付クエリは、2020年から2025年のデータがあります。しかし、ここでは値が入っているのは、2021年から2024年までです。実務でも、日付クエリは、汎用的に使うので日付の幅が広めにとられていることが多いです。
ですので、スライサーでデータがある部分を選択します。ちなみに、このスライサーで複数選ぶ時には、コントロールキーを押しながらクリックする必要があります。もし、それが煩わしく感じられた方は、書式/スライサーの設定/選択項目でCtl キーで複数選択をオフにします。私はこのままで気になりませんのでこのままにします。
データのない年度がなくなりましたので、より見やすいですね。もちろんデータがある年度をすべて並べるのもいいですし、フォーカスしたい2つの年を並べることもできます。
さて、単純なことですが、横に視線をうつして、数値の移り変わりの傾向をみるのも非常に有益です。私の知っている数字感覚のある人は、定期的にこうした年度だったり、月次の推移を眺めえて、固定費と変動費だったり、だいたいこの項目はこの程度の規模感という感覚をお持ちです。そうした自分の感覚を持っていて、それが数字と合ってない時に違和感を持ち、さらに分析を進めていったりしています。
以上、このレクチャーではマトリクスを利用して、複数年の損益計算書を表示しました。
こうして並べていると、差を算出したくなります。次のレクチャーからは年度間の差を出してみたいと思います。
このレクチャーからは、単年度の損益計算書について、前年との比較を表示したいと思います。実務でも、前年対比というのは必ず行う分析と思います。
(マトリクスをみる)たしかにこうして並べてみるのも前年対比の一つですが、実際にどのくらいの差があって、何パーセントか?と表示することで見えてくることがあります。
実務でもよくあるのが、売上は多くの人が見る項目なので、これについてはみなさん少しの差でも気づきます。多くの会社では売上が目標の一つになっていますし。しかし、コストについては見られていないことが多いです。コストの中でも売上原価は金額規模も多いし、売上総利益で収益性を見ることも多いので注目が集まりがちです。
(経費あたりを見せる)しかし、見過ごされがちなのでは、これらの経費です。何が悪いって、売上や売上原価に比べて規模が小さいです。ですので、損益計算書であたまからざーと見ていっても、実は経費に大きな変化があったのに、気づかない、ということは多いです。こうした中では、前年対比、とくにパーセンテージ表記で出すとその変化に気づけます。
会議なんかでも、「このコストが大きく変化したけど何かあったの?」とか、さも当たり前のように指摘すると「実は契約先を変えたんです!よく気づきましたね」なんて見直されることがあります。または、ちゃんと小さいコストも見てるぞ、というけん制にもなりますね。
はい。ちょっと前置きが長くなりましたが、Power BIで、単年度の損益計算書に前年比較を入れていきましょう。では、前に作りました、損益計算書(単年度)のワークシートを複製します。名前は損益計算書(単年度・比較) とします。損益計算書を真ん中にもってきます。
前年比較を行う時、これから2つのステップを行います。まず、(作ったメジャーを見せる)これまでは選択した年度の集計を行うメジャーをつくりました。これらとほぼ同様、しかし前年の結果を出すためのメジャーをつくります。これが1つ目のステップ。
次の2つ目のステップでは、選択した年度と1つ目のステップで作った前年の集計の差をとるメジャーをつくります。
このレクチャーでは、1つ目の前年度の集計結果を作るメジャーをつくります。
では、メジャーを格納する、損益計算書メジャーにいきまして、新しいメジャーをクリックします。一番オーソドックスな売上から作っていきます。
前年売上高合計 =
CALCULATE('損益計算書メジャー'[売上高合計],DATEADD('日付データ'[日付],-1,YEAR))
既に作ってある売上高合計メジャーを利用して、その前年をDATEADDで出します。SAMEPERIODLASTYEARというそのまんまの名前のDAXもありますが、個人的にはより汎用的なDATEADDの方が好みです。
では、この式をコピペして、(メジャーを示しながら)売上原価など他のサブトータル、小計のメジャーをつくっていきます。
似た名前のメジャーが続くので、間違えないように気を付けます。
前年売上原価合計 =
CALCULATE('損益計算書メジャー'[売上原価合計],DATEADD('日付データ'[日付],-1,YEAR))
前年売上総利益 = CALCULATE('損益計算書メジャー'[売上総利益],DATEADD('日付データ'[日付],-1, YEAR))
前年売上総利益率 = CALCULATE('損益計算書メジャー'[売上総利益率],DATEADD('日付データ'[日付],-1, YEAR))
前年その他経費合計 = CALCULATE('損益計算書メジャー'[その他経費合計],DATEADD('日付データ'[日付],-1, YEAR))
前年営業利益 = CALCULATE('損益計算書メジャー'[営業利益],DATEADD('日付データ'[日付],-1, YEAR))
前年営業利益率 =
CALCULATE('損益計算書メジャー'[営業利益率],DATEADD('日付データ'[日付],-1,YEAR))
いったんここまでできたら、作った前年度集計を確認しておきます。書式にコンマとパーセンテージを入れて整えます。そのあと、テーブルに落としてみます。実務であるあるはこうして、コピペでたくさんメジャー作ると、中身変えたつもりが変わってない場合があります。個人的には、利益率なので、利益率合計って残していたりすることが多いです。元データのPLをみてみます。今、スライサーで2023年を選択しました。ですので、ここで出ている値が2022年のものとマッチしていたらOKです。
はい。よさそうですね。
一旦ここでレクチャーを区切りたいと思います。
以上、このレクチャーでは前年対比を出すための1つ目のステップとして、前年度の結果を集計するメジャーを作りました。次のレクチャーでは前年度の結果である、これらのメジャー(作った前年度メジャー群を示す)を1つのメジャーにまとめていきます。
前のレクチャーから引き続き、このレクチャーでは前年対比を集計するメジャーを作ります。
今やっているのは、今、損益計算書テンプレートに入っている、この当期実績値メジャーの前年度版です。
そのメジャーをここに落とすと、当期実績の横にその前年の実績が出ます。これが1つ目のステップ。そして2つ目のステップとしては、当期と前年の差を出します。ここまで来て完成です。
前のレクチャーでは、前年実績を集計するメジャーとして、まずは小計、サブトータルを出しましたね。これらの前年売上合計、売上総利益合計といったメジャーです。
このレクチャーでは、これらの前年実績メジャーを一つのメジャーにまとめます。やりたいのは、(当期実績メジャーを開く)この当期実績メジャーとまったく同じです。様々なメジャーを一つにまとめます。ただ、今回は内容が前年の集計という点だけが異なります。
では、前年実績を集計するメジャー作っていきましょう。ほぼ、当期実績値メジャーと同じということで、こちらをコピーして使います。
名前は前年実績値とします。基本的には内部のパーツを当期から、前年に変えるだけです。売上高から変えていきましょう。(以下、売上高から変えていく)
サブトータルのところまでは簡単ですね。簡単がゆえに違うものを入れないように気を付けましょう。前年なのに今年のものを入れたり、営業利益なのに、売上総利益を入れたりと。チェックします。大丈夫そうですね。
残り、(損益計算書の細かいアイテムを指しながら)これらこまごまとした項目の部分だけ、ちょっと数式を足す必要があります。前年集計をする、ということでDATEADDを追加して前年を集計するようにします。
今、最後の閉じカッコ、SWITCHに対応するものはちょっとよけておきます。
(MicrosoftのCalculateの説明画面を表示する)Calculate式の復習です。今見ているのは、Microsoftの公式サイトで、Calculateの式を見ています。最初に評価式を入れて、そのあとは条件をコンマでつなぐのでしたね。
(CALCULATEの式をカーソルで選択する)この選択している部分で当年度の集計ができるわけです。なので、この今選択している部分を丸っきり、さらにCALCULATEで囲んで、評価式にしちゃいます。(説明分を出して)この部分にしちゃいます。そして、集計条件としてDATEADDを追加します
Calclulateと入れます。もともとあったCALCULATEは改行します。そしてお尻にコンマをいれます。
これでもともとあったCalculateは、新たにつくったCalculateの評価する式、数式になりました。
改行して条件を入れます。いつものDATEADDです。DATEADDができたら、閉じカッコをします。
この閉じカッコは新たに追加したCalculateの閉じカッコです。そしたら、次はよけておいた、こちらのSWITCHの閉じカッコを戻します。はい。これで前年実績値を集計するメジャーができました。
では、PLに落としてみましょう。メジャーの書式で、コンマをつけておきます。
はい。きちんと値が出ていますね。スライサーで年度を選択すると対応して数字が変わっています。ちなみに、2021年で前年データがないのは、これ以前のデータがないからです。2025年を選択したら、今度は前年しかないのは、データが2024年までだからです。
以上、このレクチャーでは、前年実績値を集計するメジャーを作りました。次のレクチャーでは、当期と前年の差を出すためのメジャーを作ります。
これまでのレクチャーにて、(PLを示す)当期の実績とそれに対する前年度の実績を表示するメジャーを作りました。このレクチャーでは、この差額を出すメジャーを作りたいと思います。
まず、最初に意外とこれでは済まない、という話をします。ここは見ていただくだけで良いです。今、当期の実績があって、前年実績が出ているわけだから、単純にこれからこれを引けばいいじゃん、と思いますよね。では、ということで、メジャーを作ってみます。
メジャーを格納する、損益計算書メジャーにいって、新しいメジャーです。
当期実績から前年実績を引くメジャーを作りエンターをします。問題なくメジャーは作れました。
前年対比 = '損益計算書メジャー'[当期実績値] - '損益計算書メジャー'[前年実績値]
では、これをPLに入れてみましょう。
エラーが発生します。どういうことでしょうか。私も最初意味が分かりませんでした。これは、この利益率のところに問題があります。(メジャーを見せる)当期実績値も前年実績値も両方、利益率のところではFORMATを使っています。これによって、たとえPL上は数字に見えても、実はこの利率の書式はテキストなんです。その結果、この率部分は先ほどの式にすると、テキストを使った計算となりエラーになるわけです。
では、どうするか?この差額においても、当期実績値、そして前年実績値メジャーと同じようなメジャーを作ります。
ここからは一緒にやっていきましょう。
まず、当期実績値のメジャーをコピーします。そして、さきほど作った前年対比メジャーの中身に貼り付けます。みなさんは、前年対比という新しいメジャーを作っていただきたいと思います。
まず、簡単な方からやっていきます。小計、サブトータル部分は単に、マイナス前年実績の数式を足していくだけです。売上部分ならば、後ろにマイナスして、前年売上合計を入れます。同じように率の部分と、その他の雑多な項目を計算するここ以外はやってしまいましょう。
利益率の方は、こちらのFORMATの式の外ではなく、中で計算を先にさせます。その結果出たものをFORMAT式で、パーセンテージ表記にするイメージです。仮に、さらにFORMATと式を続けて、前年の比率と計算させると、当然テキストどうしの計算になるのでエラーが出ます。
はい。いったんこれでエンターして、メジャーをPLに反映させてみましょう。書式を整えます。
売上高や売上原価の部分はキチンと差額が出ています。利益率のところも大丈夫そうですね。
こちらのその他の項目については当期実績と同じ値になっています。もともと当期実績のメジャーを利用していて、その他項目は変えていないので、当然ですね。
ではここを変えていきましょう。
今すでにここに入っているもので、当期実績が出せるわけです。繰り返しになりますが、この式はもともと当期実績値からコピーしてこの部分はもとのままです。だから先ほどみたように、PLでも、差額の部分が当期実績と同じ金額が出ています。(前年実績値にいく)そして、この前年実績値メジャーのこの部分で前年の実績が出せるわけです。ですので、大方針としては、この前年実績部分を前年対比メジャーにペーストして作りたいと思います。
前年実績値のところにいって、Calculateからここまでをコピーします。この最後の閉じカッコは、SWTICHの閉じカッコなのでここはいりません。
そして、ペーストするわけですが、このSWITCH式の中に入れるわけなので、SWITCHの閉じカッコをよけておきます。はい。その上で、マイナスをつけます。
改行して、先ほどの式を貼り付けます。あとは改行とインデントで整えます。これでエンターです。はい。結果が出ましたね。書式でコンマを入れておきます。計算結果もきちんとなっています。
これで前年対比の差額が出ました。
以上、このレクチャーでは、前年との差額を出すメジャーを作りました。次はいよいよ最後になります。出した差額を比率で出すDAX式を作っていきます。
学習時の参考として、『前年度の結果を集計するメジャーをつくる -前年実績値を集計するメジャーをつくる-』で作成しましたDAXを以下にテキストで残しておきます。適宜ご使用ください。
ここまで長い道のりお疲れさまでした。いよいよ終わりに近づいてきました。
前のレクチャーでは、このように前年との差額を出すメジャーを作りました。最後にこうした差を比率で出すメジャーを作ります。
デモンストレーションはしませんが、前にも示したとおり、単純に当期実績値と前年実績値のメジャーを割り算してもエラーが出てしまいます。利益率のFORMAT部分が邪魔しているのでしたね。
今回は、前年実績値メジャーを利用して作ります。比率の出し方はいろいろあるかと思います。ここでやるのは、当期と前期の差額を、前年で割るやり方でいきます。差額も前年実績ももうメジャー作っていますので、すでにあるメジャーを利用します。では、前年実績値メジャーをコピーします。そして新しいメジャーをクリック。そのまま貼り付けます。
メジャーの名前は、前年対比(%)とします。
まず、比率を比率で出しても仕方ないので、利益率のところは削除します。
その上で、これまでと同じく小計部分からやっていきます。さきほど伝えたように、比率を出すやり方として、当期と前期の差額を、去年の実績で割って比率出します。で、当期と前期の差額というのは、もうこちらの前年対比のメジャーでできています。あとはこれを去年の実績で割ります。去年の実績というのは、このコピーしたメジャーそのものなので、すでに値がありますね。
あとは、これらをDIVIDEで割り算するだけです。簡単な売上からやっていきましょう。(あと続ける)
はい。いったん小計、サブトータル部分ができたらエンターしましょう。
PL項目に落とします。書式を整えます。これは比率なのでパーセンテージですね。サブトータル部分は、少数点以下の結果が出ています。比率計算ができています。その他の項目は変えていないので、メジャーのベースにした、前年実績がそのまま出ています。
では、その他項目も加えていきます。何気にここは厄介です。2つやることがあります。
ここも基本的には、他と同じようにDIVIDEを入れて前年対比をこちらの過去実績で割ります。それ自体の式は簡単です。まず、SWITCHの閉じカッコをよけておきます。
なんですが、2つある厄介なことの1つ目は、前にも出た、メジャー中のFORMAT問題です。
まずはやっていきます。これまでと同じようにいったん作ってみます。
DIVIDEを入れて、前年対比を入れます。DIVIDEの閉じカッコを忘れずにします。これでエンターとします。エンターはできましたが、ビジュアルではエラーになりました。
これはなぜかというと、前も似たようなことがありましたが、前年対比メジャーのここです(利益率を示す)利益率のところは、こちらは数字に見えますが、実は書式はテキストだ、という話をしました。これがあるからテキストを計算しようとして、エラーが出ています。
逆を言えば、このFORMAT式さえなければ、使えるわけです。ですので、FORMATなしの前年対比式を作ります。
前年対比のメジャーをまるごとコピーします。新しいメジャーをクリックします。
貼り付けた上で、メジャー名は前年対比(比率なし)とします。そして、利益率部分の式を削除します。そして、エンターです。
再度、前年対比(%)の式に戻り、さきほどのDIVIDEに行き、前年対比を比率無しの方に切り替えてエンターとします。するとビジュアルからエラーが消えて比率がキレイにみえました。これで一つは解決です。
厄介事のもう一つは、こちら見てください。前年対比はマイナスですが、比率ではプラスと金額と比率の符号が逆になっていることです。これは、費用をマイナスとして見ていることに起因します。
例えば、差額がマイナスで出ている部分。これは費用を余計に使った、という意味になります。この場合で、余計に使ったという意味で比率はプラスでも良い、という意見も確かにあります。しかし、個人的には、対比で、金額の差と前年対比のパーセンテージが合ってないのは気持ち悪いです。
対処としては、マイナスがデフォルトである費用項目について、割る数である前年実績から符号をはずします。具体的には、ABS関数を使います。では、こちらのDIVIDEの割る数。こちらをABSでかぶせます。
すると、その他項目について差額と差額のパーセンテージの符号がありました。
実は他にもABSをかけるところがあります。同じく費用項目でる、売上原価とその他経費の部分です。ここは忘れがちです。はい。これでこちらも符号がありました。
では、この差額パーセンテージメジャーも書式を変えましょう。ここは比率なのでパーセンテージにします。
はい。これでパーセンテージのメジャーもできました。スライサーで年度を選ぶときちんと反応しています。
やりたかったメジャーがすべてできました。
前年対比(%) =
VAR SelectedItem = SELECTEDVALUE('PL テンプレ'[PL 項目(無加工)])
RETURN
SWITCH(TRUE(),
SelectedItem = "売上高合計", DIVIDE('損益計算書メジャー'[前年対比],'損益計算書メジャー'[前年売上高合計],0),
SelectedItem = "売上原価合計", DIVIDE('損益計算書メジャー'[前年対比],ABS('損益計算書メジャー'[前年売上原価合計]),0),
SelectedItem = "売上総利益", DIVIDE('損益計算書メジャー'[前年対比], '損益計算書メジャー'[前年売上総利益], 0),
SelectedItem = "その他経費合計", DIVIDE('損益計算書メジャー'[前年対比], ABS('損益計算書メジャー'[前年その他経費合計]),0),
SelectedItem = "営業利益", DIVIDE('損益計算書メジャー'[前年対比], '損益計算書メジャー'[前年営業利益],0),
DIVIDE('損益計算書メジャー'[前年対比(比率なし)],
ABS(CALCULATE(
CALCULATE('損益計算書メジャー'[実績値],FILTER('損益計算書テーブル','損益計算書テーブル'[項目] = SelectedItem)),
DATEADD('日付データ'[日付],-1,YEAR)))
,0)
)
これで、前年の値とその差額。差額においては絶対値とともに比率も出すことができました。次のレクチャーではこうして出した差額を検証します。
では、最後に作った差額を検証します。
スライサーで2022年をクリックします。そして元データのPLをもってきます。こうしてPower BIで出したPLとの答え合わせをします。
2022年と前年の2021年の差額は、PLのこの列に出ています。頭からざーと見ていきます。
(確認をする)
はい。あっていますね。お疲れ様でした!
最後にお好みですが、スライサーの設定だけお伝えしておきます。今、データは、2021年から2024年までしかないです。またここでは年度毎を比べるためのビジュアルですので、チェックを複数つけられてしまうと、意味のある数字が出てきません。この場合、こうしたやり方もあります。
スライサーをクリックします。その上で、書式のビジュアル、スライサーの設定、単一項目をオンにします。これによりチェックボックスがラジオボタンに変化し、単一年しか選べないようになりました。さらに、スライサーをクリックした上で、こちらのフィルターにいきます。このビジュアルのフィルター。フィルターの種類で、データのある年度である2021年から2024年までにチェックを入れます。はい。そうすると、スライサーから選択肢が消えました。これで、ユーザーも間違えることなく選択ができるようになります。当然、2020年、2025年にもデータが入りましたら、またフィルター設定をONにして選択肢として見えるようにする必要があります。
はい。今回の損益計算書テンプレートはこれで完成です。
今回、みなさんと一緒に元データを利用して、単年度、複数年度、そして年度比較の損益計算書をPower BIを利用して作成しました。これらのテクニックがみなさんの実務でお役に立てば、こんなにうれしいことはないです。これまでご受講いただきありがとうございました!
Power BIでレポートを作っていると、ふと気づくことはありませんか?
「……売上ばかり出してるな」
「損益計算書みたいな、実務っぽいレポートって作れないのかな?」
本講座は、そんな“次の一歩”を踏み出したいあなたのための、実務直結・DAX実践型Power BI講座です。
Power BIの「癖」と向き合いながら、売上と費用を1つのテーブルにまとめ、テンプレートに沿って損益計算書(PL)を動的に再現していきます。
本コースで学べること
売上と費用という性質の異なるデータを、Power BI上で統合するプロセス
SUMMARIZE、UNION、CALCULATE、FILTER、SWITCH TRUEなどのDAX式を活用した、実務的なデータ処理の組み方
PLテンプレートに沿って、各項目に数値を正しく表示させる動的なメジャー構築
Power BIのレポートビューで損益計算書を表現するための書式設定とテクニック
マトリクスを使って、年度別の比較レポートを作る実務的なダッシュボード作成スキル
「売上だけのレポート」から脱却し、レポート表現のレパートリー
こんな方におすすめです
経理・財務・FP&Aなど、損益計算書に日常的に触れている方
Power BIを業務で使い始め、さらにレポートの幅を広げたいと感じている方
DAXを“何となく”ではなく、目的を持って使いこなしたい方
見栄えより「使える」「チェックに強い」レポートを重視したい方
Excelだけでは難しかったPLの自動更新や比較を、Power BIで実現したい方
受講前にご確認ください
Power BI DesktopがインストールされたWindowsパソコンが必要です
本講座は、Power BIの基本操作(データの読み込み、テーブルの確認など)を一通り触ったことがある方向けに構成しています
完全な初心者の方は、入門編講座の受講を先におすすめします
講師よりひとこと
私自身、実務でPower BIを使う中で、「もっとこういう損益計算書があったら…」「このデータ、PLに落として見たい…」と考える機会が何度もありました。
この講座は、そんな「現場感覚」に徹底的に寄り添った内容になっています。作って終わりではなく、使って意味がある、そんなPLレポートを一緒に作っていきましょう!