PowerQueryを使って血圧手帳を作ってみた-(3)血圧手帳の仕様と動作

(3)血圧手帳の仕様と動作

血圧手帳のダウンロード

Power Queryを使った 血圧手帳のダウンロード

「Power Query」を使った血圧手帳の紹介

エクセルで日々の血圧を管理することができます

左右見開きで2週間分の血圧手帳を印刷することができます

動作確認は以下の環境でのみです
OS:Windows11 Pro
エクセル:Microsoft365 Apps for business、Microsoft Office Professional Plus 2019

ダウンロード

ダウンロードにあたり下記事項(免責・禁止事項・注意事項)を確認してダウンロードしてください。
当ソフトウェアを使用しての責任は一切受け付けません。

免責・禁止事項・注意事項

・免責

身体の安全を守る血圧手帳のネタ記事なので、もしこの記事を参考にして、ハッキング・データ破損等の被害により健康被害にあったとしても、有限会社さくらシステム及び製作者はその責を一切負いません。
この記事は、あくまで技術検証のための記事であり、エクセルを始めとするいかなるソフトウェアについて利用方法を推奨・保証するものではありません。
また、バグ等でいかなる損害を被っても当方は一切の責任負いません。

・禁止事項

有限会社さくらシステム及び製作者に許可なく、あらゆるメディア・コンテンツに再掲することを禁じます。

・注意事項

当モジュール及びサンプルプログラムは、技術検証を目的として作成されていますので、負荷試験を始めとする製品化を行うための基準を満たすための試験を一切行っておりませんので、予期せぬ結果を招く場合があります。
その場合であっても、上記免責事項により有限会社さくらシステム及び製作者はその責を一切負いません。

ダウンロードされた BloodPressureNotebook.zip を展開してください
BloodPressureNotebook フォルダが展開されます

フォルダ内には 血圧手帳_完成.xlsx と 血圧手帳_元データが格納されています

BloodPressureNotebook ( フォルダ )

  • 血圧手帳_完成.xlsx
    ( 血圧手帳の完成形PowerQuery作成済み )
  • 血圧手帳_元データ.xlsx
    ( 血圧手帳のソースデータのみ )

血圧手帳の仕様

  • 使用ツール
    Excel 2019 , Power Query
  • 血圧手帳最終印刷イメージ (エクセル「手帳」シート)
    A4 横 左右2ページ印刷
    1ページに1週間分印刷
    欠測日や欠測回は空白にする
    各ページの最後に朝と夜の1週間の平均を印刷する
    1週間の平均を計算するときは欠測日を考慮すること
  • 血圧計測記録 (エクセル「計測記録」シート)
    毎日朝夜の2回計測
    朝夕のそれぞれ2回計測する
    最高血圧、最低血圧、脈拍を記録する
    メモにはテキスト文字を入力する — 体重〇〇kg・旅行・飲酒…など
  • 条件指定 (エクセル「条件」シート)
    血圧手帳を作成する開始日を指定する
    開始日より最大14日分の血圧手帳を作成する
  • グラフ作成用データ
    日別の朝・夜の平均データ ( エクセル「日別平均データ」シート )
    週別の朝・夜の平均データ ( エクセル「週間平均データ」シート・日別データ7日分 )
    年別の朝・夜の平均データ ( 週別データ52週分 ) ※将来実装予定

血圧手帳の動作

Power Query の動作が理解しやすいように
完成した血圧手帳を動作させてみましょう

次の章でPower Query の説明をしますので
「Power Query で、こんな事ができるんだ」
「Power Query は、こんなふうにつかわれるんだ」
ぐらいで、アウトラインを掴んでもらえればよいかと思います

  • ダウンロードした、BloodPressureNotebook フォルダの
    エクセルファイル 血圧手帳_完成.xlsx を開いてください
  • 「編集を有効にする」をクリックして、編集可能状態にしてください
  • 「コンテンツの有効化」をクリックして、外部データ接続を有効にしてください
  • 「手帳」シートをクリックして、血圧手帳が7月1日から7月14日まで記入されていることを確認してください
  • 「条件」シートの「開始日」を変更して印刷条件を変更してみましょう
    「開始日」を「2026/6/20」に変更します
  • 「データ」-「すべて更新」をクリックして更新します
  • 更新処理終了後に「手帳」シートを開くと、血圧手帳が指定した6月20日から作成されています
  • 「計測記録」シートのソースデータ( 計測データ )から
    「条件」シート「開始日」から14日分抽出して血圧手帳を作成しています
  • 「計測記録」シートから抽出して、血液手帳用に加工した「tbl_手帳データ」を作成
  • 「計測記録」シートから週の平均値を計算して、血液手帳用に加工した「tbl_手帳平均」を作成しています
  • 他にもグラフ作成用のデータとして
    「日別平均データ」シート
    「週別平均データ」シート
    を作成しています

処理フロー

開始日 ( 接続専用 )
エクセル「条件」シートの開始日を返すクエリ
エクセル「条件」シートの開始日を DateTime型 から Date型 への型変換した値を返します
14日リスト ( 接続専用 ) 作成
開始日から14日間の年月日リストを作成するクエリ
血圧の欠測日があっても、その日は手帳上には空白の行として手帳を作成するために、開始日から14日分の年月日リストを返します
T_BPData ( 接続専用 )
計測記録データクエリ
「計測記録」シートテーブルから読み込むクエリです
この後の処理クエリは、この「計測記録データクエリ」をソースデータとしています
抽出データ ( 接続専用 )
血圧手帳を作成するために必要な14日間のデータを抽出したクエリ
「14日リスト」クエリと「T_BPData」クエリをマージすることにより、「T_BPData」クエリから血圧手帳に必要な、14日分のデータ抽出結果を返します
週平均を計算しやすいように、7日毎に週番号をふります
手帳データ ( シート出力 )
「抽出データ」クエリから血圧手帳用に出力フォーマットを整えるクエリ
結果はエクセル「tbl_手帳データ」シートへ出力します
出力印刷用エクセル「手帳」シートは、出力された「tbl_手帳データ」シートをセル参照して、血圧手帳の日々の測定結果を設定します
手帳平均 (シート出力)
「抽出データ」クエリから、血圧・脈拍の週平均を計算して、血圧手帳用に出力フォーマットを整えるクエリ
結果はエクセル「tbl_手帳平均」シートへ出力します
出力印刷用エクセル「手帳」シートは、「tbl_手帳平均」シートをセルして、血圧手帳の週間平均血圧・脈拍を設定します

クエリを見てみよう

  • クエリと接続してみましょう
    「データ」-「クエリと接続」をクリックします
  • 右側に「クエリと接続」ウィンドウが開きます
  • クエリをダブルクリックすると 「Power Query エディター」 が起動します
  • 「Power Queryエディター」の左側のクエリを左クリックすると
    別のクエリを編集することができます
  • 「Power Queryエディター」の左側のクエリを右クリックすると
    クエリの操作メニューが表示されます
  • 「開始日」クエリを右クリックして
    メニューから「詳細エディター」をクリックします
    開始日クエリの詳細エディターが表示されます
let
    ソース = Excel.CurrentWorkbook(){[Name="T_Cond"]}[Content],
    変更された型 = Table.TransformColumnTypes(ソース,{{"開始日", type date}}),
    開始日 = #"変更された型"{0}[開始日]
in
    開始日

このMコードが何をしているかを大雑把に説明すると

  • カレントのExcelワークブックの「T_Cond」テーブルを読み込んで、変数「ソース」に入れる
  • ソース内の「開始日」を DateTime 型から Date 型に型変換して、変数「変更された型」に入れて
  • 「変更された型」の最初のレコードの「開始日」を、変数「開始日」に設定します
  • 開始日クエリは接続専用となっているので
    他のクエリから参照されると「開始日」(Date型)を返します

だいたいこんな感じです
Mコードについては以下を参照してください

補足

「処理フロー」と「クエリを見てみよう」にも出てきた

「接続専用」と「シート出力」って重要なので補足しておきます

「接続専用」と「シート出力」の違い

接続専用クエリの結果

接続専用にしたクエリは、次のような扱いになります

  • クエリの定義だけがブック内に保存される
  • 更新時にだけソースからデータを読み込み、メモリ上で中間結果が展開される
  • 結果はワークシートには保存されず、他のクエリやデータモデルから参照されるためだけに存在する

「接続専用」は、ブック内にデータを持たず、更新時に毎回メモリ上で評価されるクエリ

シートに出力したクエリの結果

テーブルとしてシートに「閉じて読み込む」したクエリは次の通りです

  • クエリ定義はブック内に保存
  • 更新時にソース→Power Queryで変換→結果がシート上のテーブルとして書き込まれる
  • 書き込まれたテーブルの値は、ブックを保存するとファイル自体に保存される

「最終結果をシートに出力」しているクエリは、更新後の値がブック内に保持され、グラフやセル参照はその保存されたテーブルを見ている、という状態になります