1. 損益計算書とは
1.1 損益計算書の概要
損益計算書は、ある一定期間(会計期間)における企業の経営成績を示す財務諸表の一つです。主に以下のような項目で構成され、最終的に「当期純利益(あるいは損失)」を算出します。
-
売上高 (Revenue)
-
売上原価 (Cost of Goods Sold / COGS)
-
売上総利益 (Gross Profit)
-
販売費及び一般管理費 (SG&A Expenses)
-
営業利益 (Operating Profit)
-
営業外収益・営業外費用 (Non-operating Income/Expenses)
-
経常利益 (Ordinary Profit)
-
特別損益 (Extraordinary Items)
-
税引前当期純利益
-
法人税等 (Income Taxes)
-
当期純利益 (Net Income)
企業や国際会計基準によって若干の差異はありますが、おおむねこの流れで構成されます。Excelの場合はこれらの科目を順番に並べ、それぞれの金額の差引によって利益を計算しながら表示することが多いでしょう。
1.2 Power BIで損益計算書を作るメリット
-
動的な集計・分析が容易
-
期間をスライサーで切り替えたり、セグメント別・製品別などの切り口でP/Lを瞬時に再集計可能。
-
-
自動更新・リアルタイム化
-
データをクラウドのデータベースやERPから定期的に取得し、レポートを自動更新する仕組みが作りやすい。
-
-
ビジュアルの拡張
-
単なる表形式だけでなく、棒グラフや折れ線グラフと組み合わせて、トレンドや比較を見やすく表現できる。
-
-
ドリルダウン分析
-
売上や原価、費用などが増減した原因を明細レベルにドリルダウンして調査しやすい。
-
2. データの準備とモデリング
2.1 会計データの取得元
損益計算書を作るうえで、会計システムやERP(SAP、Oracle、Dynamicsなど)、あるいは会計ソフト(freee、弥生会計など)から勘定科目別の月次データを取得するケースが多いです。あるいは、GL(総勘定元帳)からエクスポートしたCSVを取り込む方法もあります。
-
勘定科目 (Account)
-
期・月・日付 (Accounting Period, Fiscal Year/Month)
-
金額 (Amount)
-
部門 (Cost Center / Department) など
最低限「科目」「期間」「金額」があれば簡易的なP/Lを作成できますが、部門別やプロジェクト別に切り分けたい場合は、さらにディメンションテーブルを設けて分析しやすい形に整備するのが望ましいです。
2.2 Chart of Accounts(科目体系)テーブルの作成
Power BIでP/Lを作るとき、多くの場合は**「科目」を軸としたマトリックスビジュアル**で表示します。そこで重要なのが「科目マスタ(Chart of Accounts)」の整備です。以下のような列を用意しておくと便利です。
-
科目コード(ユニークキー)
-
科目名(損益計算書上に表示したい名称)
-
階層や小計区分(売上、原価、販管費など)
-
並び順(貸借対照表や損益計算書特有の順番で並べたい場合)
-
PL/BS区分(今回はPL科目だけ扱う場合も多い)
勘定科目を階層化(例:大項目→中項目→科目)することで、Power BIのマトリックスビジュアルでドリルダウン表示が可能になります。また、PL特有の小計(売上総利益、営業利益など)をどのように表すかがポイントになるので、後述するDAXメジャーの作り方も絡めて考えます。
2.3 データモデルの基本形
損益計算書向けのデータモデルは、ざっくり以下の形をとります。
-
Factテーブル (仕訳明細や月次科目集計)
-
PostingDate
(日付),AccountCode
(科目コード),Amount
(金額),Department
(部門) などの列を持つ。
-
-
Dimテーブル (勘定科目マスタ / 日付マスタ / 部門マスタ)
-
DimAccount
:上で紹介した科目コード、科目名、階層情報、並び順など。 -
DimDate
:日付(Year, Month, FiscalYearなどを含む) -
DimDepartment
:部門(必要に応じて)
-
FactテーブルとDimAccountをAccountCodeで1対多のリレーションに結びます。またDimDateの日付キーとFactテーブルのPostingDateを対応させ、期間を切り替えながらP/Lを集計できるようにします。
3. P/L作成の流れ:マトリックスビジュアルとDAX
3.1 基本的なマトリックスビジュアルの使い方
-
マトリックスビジュアルを挿入
Power BIレポートビューで「マトリックス」ビジュアルを選択し、キャンバスに配置します。 -
行(Rows)に科目名や階層を割り当て
-
例:
DimAccount
の「PL大項目 → 科目名」を入れると、大項目ごとに展開可能な階層表示ができます。
-
-
列(Columns)に期間やバージョンを割り当て(任意)
-
例:「年」「月」で列を分割する、あるいはActual/Forecastなど複数列にすることで比較分析しやすくなる。
-
-
値(Values)に金額メジャーを割り当て
-
ここが最も重要ですが、単純に
SUM(Fact[Amount])
でも合計は出せます。しかし、損益計算書の場合は小計や経常利益などをどう扱うか工夫が必要です。
-
3.2 DAXメジャーの基本
損益計算書のメイン指標となるのは「合計金額」ですが、以下のような要件が出てくるかもしれません。
-
特定の科目だけを抜き出したい
-
例:「売上高」だけを合計するメジャー
-
-
小計行を自動的に計算したい
-
例:「売上総利益 = 売上高 – 売上原価」
-
-
累積計算や構成比を表したい
-
例:「原価率 = 売上原価 / 売上高」
-
こうした特殊計算を行う場合、CALCULATE関数やSWITCH関数を使ってフィルター制御を行うことが多いです。
売上高の例
Measure_Sales =
CALCULATE(
SUM(FactP/L[Amount]),
DimAccount[AccountGroup] = "Revenue" -- AccountGroupが"Revenue"の科目だけ合計
)
売上総利益の例
Measure_GrossProfit =
[Measure_Sales] - CALCULATE(
SUM(FactP/L[Amount]),
DimAccount[AccountGroup] = "COGS"
)
※ あくまで一例です。実際にはより詳細な科目コードでフィルタするケースも多いです。
3.3 マトリックスビジュアルの小計設定
Power BIのマトリックスは、行や列の小計・総計をオン/オフしたり、名前を変更するなどが可能です。損益計算書の場合、「売上高」「売上総利益」「営業利益」などの小計行を配置したい場合が多いでしょう。標準の小計機能だけではうまくいかず、手動でDAXメジャーを定義して対処するケースがあります。
代表的なアプローチ:科目テーブルを工夫する
-
科目テーブルに「小計行」をレコードとして持たせる
たとえば「売上総利益」という行を一つの「仮想科目コード」にして扱い、その下位科目(売上高、売上原価)をツリー構造で管理。こうすることで、マトリックスで科目階層を展開すると小計行が自動的に表示される仕組みを作れます。-
この場合、計算列やメジャーで「もしAccountCodeが’GP’なら売上総利益を計算する」などのロジックを加える。
-
-
DAXスイッチメジャー
売上総利益行だけ特別計算をする、その他の科目はFactテーブルの合計を返す、というようなSWITCH(TRUE(), ..., ..., ..., ...)
構文で書く方法もあります。
3.4 行の並び順をカスタマイズする
ExcelのP/Lでは、売上→原価→販管費→営業利益…という固有の順番で科目が並びますが、Power BIのマトリックスはデフォルトではアルファベット順や科目コード順になります。そこで科目マスタに「SortOrder」列を設け、Sort by Column
機能を使って科目表示を制御します。
-
DimAccount
テーブルにSortOrder
列を追加(1: 売上高, 2: 売上原価, 3: 売上総利益…など)。 -
Power BI Desktopの「データビュー」で、
AccountName
を選択 →「列ツール」→「並べ替えの列」でSortOrder
を指定。 -
これにより、マトリックスで行アイテムが想定通りの順番で並ぶ。
4. 表示の応用:年度比較や予算実績比較
4.1 年度・月比較
損益計算書を月次で並べたり、前年同月と比較したい場合、マトリックスの「列」にYear-Monthを配置します。具体的には「Year」「Month」を個別に入れて階層化するか、「YYYYMM」フォーマットの列を作ってそれを並べ替え列に使う方法などがあります。
さらにDAXのタイムインテリジェンス関数(SAMEPERIODLASTYEAR
やDATEADD
)を組み合わせると、前年同月比や累計などを手軽に計算できます。
前年同月比売上メジャーの例
Measure_Sales_PY =
CALCULATE(
[Measure_Sales],
SAMEPERIODLASTYEAR(DimDate[Date])
)
このメジャーと比較することで、営業利益やその他指標も同様に前年対比を表示できるようになります。
4.2 予算と実績の比較
実務では、予算(Budget)と実績(Actual)を並べて表示し、乖離分析を行うケースが多いです。実装方法としては、FactテーブルをActualとBudgetの2種類に分け、「バージョン」ディメンション(Actual / Budget / Forecast など)を設けるアプローチが一般的です。
-
DimVersion
-
VersionCode:ACT / BUD / FCST
-
VersionName:Actual / Budget / Forecast
-
-
FactFinance
-
ここにVersionCode列を追加し、「ACT」「BUD」などを識別できるようにする。
-
マトリックスの列にVersionNameを入れれば、左列にActual、右列にBudget、さらにその差分をDAXメジャーで算出して表示する、といった作り方ができます。
5. ビジュアルの拡張:グラフやKPI表示
5.1 KPIカードやゲージを組み合わせる
損益計算書の数値を表形式だけでなく、重要指標(例えば売上高や営業利益)についてはKPIカードやゲージビジュアルで強調すると、ダッシュボードとしての訴求力が高まります。
-
KPIカードに「当期売上高」「予算比」「前年同月比」などを置き、一目で状況を把握。
-
ゲージを使って、予算に対する進捗率を可視化する。
5.2 水平や垂直の棒グラフで費用構造を可視化
販管費や人件費など、複数の費用項目がある場合、マトリックスだけでは見にくいことがあります。棒グラフやドーナツチャートで費用項目の内訳を可視化すれば、どの費用が大きな比率を占めているのか直感的に分かります。
費用項目を軸にして、縦軸を金額、もしくは構成比にするなど、用途に応じて工夫しましょう。
5.3 ドリルスルー機能で明細へ遷移
Power BIのドリルスルー (Drill Through) 機能を使えば、P/Lの科目をクリックして、その科目に該当する明細仕訳を別ページに一覧表示することが可能です。たとえば「交通費」が増えているので、どの部門が使っているのか明細を参照する、といった分析が簡単にできます。
これにより、ExcelでいうVLOOKUPやピボットテーブルの逆参照に相当する分析を、直観的な操作で実現できるわけです。
6. よくある課題・トラブルシューティング
6.1 小計行が二重計上される
DAXで小計を計算するメジャーを作り、それを科目テーブルの小計行にも割り当てていると、二重計上になってしまう場合があります。
-
原因:CALCULATEで特定の科目範囲を足し引きしている際、マトリックスの小計ロジックと干渉する。
-
対策:
-
ISINSCOPE
関数などで、現在の行コンテキストが特定の階層なのかを判定して処理を分岐する。 -
または、前述の「仮想科目コードを用いた小計行」を用い、SWITCH文などで科目コードごとに計算ロジックを分ける。
-
6.2 科目の順番がExcelと違う
Power BIでは基本的に文字列のアルファベット順か、数値ソートしか選べません。科目マスタ側で並び順を示す列 (SortOrder) を必ず用意し、AccountName
を「Sort by Column」で紐づけるようにしましょう。
6.3 円グラフやドーナツチャートが科目数多すぎで読みにくい
費用科目が多いと、グラフが細切れになってしまい、視認性が低下します。
-
対策:
-
大項目ベースに集約する、上位5項目だけを表示して残りはOthersにまとめる、などフィルタリングを行う。
-
Power BIのトップNフィルター機能や「Others」グルーピング機能を活用する。
-
6.4 特殊な会計基準への対応
IFRSやUS-GAAPなど、企業によって勘定科目の区分や計算ロジックが異なることがあります。こうした場合も、基本的には「科目マスタ (DimAccount)」をしっかり整備し、必要に応じて別のアカウントツリーを持たせるか、複数の科目マスタを用意するアプローチで対応可能です。Power BIのフィルターやモデリングの工夫で、複数の会計基準を切り替えて表示することも理論上は可能です。
7. まとめ
Power BIで損益計算書(P/L)を構築する際のポイントをざっと整理すると、以下のようになります。
-
データモデルの基本
-
Factテーブル(仕訳明細や月次集計)とDimテーブル(科目マスタ、日付、部門など)を用意し、1対多のリレーションを結ぶ。
-
科目マスタに「階層」「SortOrder」「小計行コード」などを持たせるとレポート作成がスムーズ。
-
-
DAXで小計や特定科目のメジャーを定義
-
ただの合計だけでなく、
CALCULATE
でフィルタを指定したり、SWITCH
を使って特定の科目だけ計算するなど、柔軟にP/L特有のロジックを表現する。
-
-
マトリックスビジュアルでP/Lを表形式表示
-
行に科目階層を割り当て、列に期間やバージョン(Actual/Forecastなど)を置く。
-
小計行の表示や、行の並び順カスタマイズにも注意。
-
-
応用でKPIカードやグラフ表現を追加
-
売上高や営業利益などの主要指標をKPIとしてハイライト表示。
-
棒グラフやドーナツチャートで費用構造を可視化し、マトリックスだけでは得られないインサイトを獲得。
-
-
フィルタやドリルスルーで深堀り分析
-
部門やプロダクト、地域など、さまざまな切り口のスライサーを用意すれば、ユーザーが自由にデータを絞り込むことができる。
-
特定の科目をクリックして明細仕訳をドリルスルー表示すると、Excel以上に素早く原因を突き止められる。
-
-
整合性とパフォーマンスに気を配る
-
会計ソフトやERPからのデータ抽出が適切に行われているかを確認する。
-
データ量が多い場合は、集計単位(たとえば月次レベルや科目・月次レベル)を適度に落とし込むなど工夫が必要。
-
Excelでは手作業での計算や表組みが中心になりますが、Power BIではデータモデルとDAXメジャーを設計してしまえば、自動的に集計された損益計算書が更新され続けるという大きなメリットがあります。
さらに、単純な金額表だけでなく、ドリルダウンやグラフ、予算実績比較などをスムーズに実現できるため、経営層や現場担当者にとっても情報を得やすいBIレポートになります。
最後に
以上が、Power BIを使った損益計算書作成の基礎から応用までの概要です。手順をまとめると、
-
勘定科目マスタ(DimAccount) と会計明細(FactFinance) を正しくリレーション
-
DAXメジャーで必要な科目合計や小計、差分計算を実装
-
マトリックスビジュアルで科目階層をRowsに、期間やバージョンをColumnsに配置
-
並び順や小計のロジックを調整し、表形式のP/Lを完成
-
KPIカードやグラフ、ドリルスルーを組み合わせて見やすいダッシュボードを構築
一度仕組みを作っておけば、月次や四半期ごとに最新データを取り込むだけで、P/Lが自動でアップデートされる利点は非常に大きいです。
導入初期はDAXやモデル設計に多少の学習コストがかかるかもしれませんが、慣れてしまえばExcelより高速に、かつミスなく作業ができるようになります。ぜひ本記事を参考にしつつ、Power BIで効率的な損益計算書レポートを実装してみてください。
弊社について セミナーで学ぶ!DAX 関数の実践スキル
箱ひげ図をはじめ、Power BIを使いこなすうえで欠かせないのがDAX関数の知識です。DAXをしっかり学ぶことで、データの前処理から複雑な指標の算出までスムーズにこなせるようになります。そんなDAXとデータモデル設計を効率よく学習できるハンズオンセミナーを開催しています。
🔰 Power BIハンズオンセミナー初級編
-
短時間でデータモデリングの基礎を身につける
-
実務にすぐ活かせるレポート作成を実践形式で学ぶ
-
少人数制なので、つまずきポイントを都度フォロー
🚀 Power BIハンズオンセミナー中級編
-
DAX関数 × データモデル設計 の実践的なノウハウを習得
-
複雑な分析要件にも対応できる応用力を身につける
-
即戦力として業務効率アップや社内評価向上に直結
👉 詳細はこちら
もし困り事があるなら、まずは無料相談を
「Power BI で箱ひげ図を使って詳細分析をしたいが、データモデルやDAX設計が複雑でわからない…」「Power Automate を併用してデータ更新フローを自動化したいが、どこから手を付ければいいのかわからない」といったお悩みをお持ちの方も多いのではないでしょうか。
私たちは、Power BIやPower AutomateなどのMicrosoft製品の導入・運用支援、およびデータ活用コンサルティングを行っています。
-
具体的な設定や開発代行
-
社内教育のための伴走型支援
-
有料プランへの移行タイミングやROIの判断支援
など、さまざまなニーズに合わせたサービスをご用意しています。まずはお気軽に「無料相談」へお申し込みください。下記のリンクからお問い合わせいただけます。
DAXをしっかりマスターすると、箱ひげ図のような高度な可視化においても、必要なデータを柔軟に加工・集計できるようになります。結果的に、組織全体のデータドリブン化をリードできる存在となり、キャリアアップにも大いに役立ちます。
コメント