目次
概要
本記事では、Power Query(M 言語)の #table
関数を使って、ワークブック外部のデータソースを用いずに 新しいテーブルをコードだけで作成する手順 を解説いたします。テンプレート化しておけば、検証用データの準備やサンプル共有を効率化できます。
前提条件
項目 | 内容 |
---|---|
Excel バージョン | Microsoft 365 または 2016 以降 |
必要アドイン | なし(Power Query 標準機能で完結) |
サンプルコード(M 言語)
以下のコードを Power Query エディタの 「詳細エディター」 に貼り付けてそのまま実行してください。列名・行データは著作権配慮のため変更してあります。
let
// #table で型情報とデータ本体を同時定義
sampleTable = #table(
type table [
RecordID = Int64.Type, // 整数型
Staff = text, // 文字列型
OrderDate = date, // 日付型
Units = Int64.Type // 整数型
],
{
{101, "森", #date(2023, 4, 10), 150},
{102, "林", #date(2023, 4, 11), 80},
{103, "木", #date(2023, 4, 10), 220}
}
)
in
sampleTable
コードのポイント
行 | 説明 |
---|---|
3–7 | type table で列名とデータ型を明示し、後続処理を安定化しています。 |
9–11 | 行データはリスト形式で記述します。必要に応じて追加・削除が可能です。 |
12 | in sampleTable で作成したテーブルを出力しています。 |
応用例
目的 | 実装のヒント |
---|---|
検証用データの自動生成 | RecordID を List.Numbers(1, n) で動的作成し、List.Transform で値を埋め込む方法があります。 |
列の初期値一括設定 | すべての行に共通値を設定したい場合、List.Repeat で行リストを生成し #table に渡すと効率的です。 |
型変更の自動化 | 列定義をレコード化し、Record.ToTable と Table.TransformColumnTypes を組み合わせると汎用化できます。 |
よくある質問
質問 | 回答 |
---|---|
データ行だけを後で差し替えられますか。 | sampleTable を生成するステップを分割し、行リストを別クエリで管理すると差し替えが簡単です。 |
行数が多い場合はパフォーマンスに影響しますか。 | 数百行程度であれば影響は軽微ですが、数千行を超える場合は外部ソースから読み込む方法を検討してください。 |
まとめ
#table
関数を用いると、Power Query 内で完結する形でテーブルを作成できるため、テストデータの用意や関数検証が容易になります。まずは上記コードを実行し、任意の行・列を追加して動作を確認してください。業務に合わせて列構成やデータ内容を調整すれば、再利用性の高いサンプルクエリとして活用できます。