Power Queryのフォルダー結合で取り込み漏れ・旧版混入を確認する方法

Power Queryで複数のCSVをまとめたら、合計や行数に加えて「取り込む予定だったファイル」「フォルダーに実際にあるファイル」「Power Queryが選んだファイル」「結果の出所」を照合します。 必要なファイルが抜け、代わりに旧版が入っていても、行数と金額合計が同じになることがあります。

この記事では、同じ列構造の部門別CSVを集める担当者向けに、入力元の確認表を完成させる方法を紹介します。対象はローカルフォルダー内の小さなCSVです。確認できない箇所は「未確認」と残し、次に調べる場所まで記録します。

操作案内はMicrosoftの公式説明に基づきます。第4・6節と確認表の補足は、Windows版Excel 16.0.20430.20092の英語UIで架空6CSVを確認した範囲の実証です。更新動作、[Close & Load]、xlsx保存・再開、他のExcel環境は未検証です。数値例と版・提出条件はすべて架空です。

4行・合計4,000でも、正しいファイルとは限らない

2026年9月分の集計に必要なのは、A部門とB部門の確定CSV各1件とします。CSVには record_id と amount の2列があり、データ行は次のとおりです。表のパスは説明用に短くした相対パスで、実際の確認には自分の環境の保存先を使います。

ファイルのパスと名前 データ行の金額 今回の扱い
input/A_202609.csv 700、1,300 対象のA部門確定版
input/B_202609.csv 900、1,100 対象のB部門確定版
input/archive/A_202609.csv 600、1,400 対象外のA部門旧版
input/summary_202609.csv 700、1,300、900、1,100 対象外の過去の集計出力

正しくAとBを取り込んだ場合も、誤ってAと旧Aを取り込んだ場合も、行数と金額合計は同じです。

  • A+B:4行、金額合計4,000
  • A+旧A:4行、金額合計4,000。ただしBが欠落し、旧Aが混入

「前回と同じ件数」「合計が予定どおり」だけでは、この違いを見つけられません。Aと旧Aはファイル名も同じなので、名前だけの照合でも区別できません。

また、サブフォルダーの旧版だけを除いても、同じ階層に保存された summary_202609.csv は残り得ます。フォルダーの階層、拡張子、ファイル名のどれか一つだけで対象を決めず、事前に決めた一覧へ照合するのが、この確認の目的です。

1 取り込む前に対象と正しい版の根拠を決める

まず原本を上書きせずに残し、今回使用するファイルと、対象にした理由を記録します。フォルダーに今あるものをそのまま「予定一覧」にすると、届いていないファイルを発見できません。提出予定や確定版の連絡など、集計結果とは別の情報を基準にしてください。

最低限、次の情報をそろえます。

  • 対象期と対象部門:例は2026年9月、A・Bの2部門
  • 必要なファイルの保存先と名前:同名別パスを区別できる形
  • 版の根拠:対象期、版番号、確定版の受領記録など、後からたどれるもの
  • 原本の確認結果:この例では各2データ行・各2,000。ヘッダーは行数に含めない

更新日時は補助情報です。更新日時が新しいことだけを、正しい版の根拠にはしません。 同じパスの中身が差し替わることも想定し、確認した原本の版と照合日時を残します。版が判断できない場合は、元の提出記録や作成担当者に確認するまで未確認です。

入力専用フォルダーと出力先を分けると整理しやすくなります。元の資料を削除する必要はありません。保管用の旧版や集計結果を、今回選択する入力から外します。

2 フォルダーに実際にあるファイルを記録する

次に、エクスプローラーなどで入力フォルダーとその配下を確認し、実際に存在する名前と保存先を記録します。この時点では、取り込む対象かどうかにかかわらず、旧版や集計出力も見つけたものとして残します。

例ではA・B・旧A・集計出力の4ファイルが存在します。そのうち予定している入力はA・Bの2件です。存在するファイルをすべて対象にする必要はありませんが、予定したファイルが存在しない場合は、その不足を残します。

  • Bがフォルダーにない:受領記録と保存先を調べる。未提出か、別の場所に保存したかを切り分ける
  • Bは存在するが、後のPower Queryの選択一覧にない:参照先と絞り込み条件を調べる

存在を確認できていない箇所は「未確認」です。「ない」と断定したり、Power Queryで見えたファイルだけを実在一覧に置き換えたりしません。原本が途中で差し替わった場合は、その版から照合し直します。

3 結合直前のファイル一覧を予定一覧と照合する

Microsoftの説明では、フォルダー接続の一覧にはサブフォルダー内のファイルも含まれます。不要ファイルを除く場合は、最初に「データの変換」を選び、結合前の一覧で絞り込みます。Microsoft Learn:フォルダーコネクタ

Windows版Excelの操作位置は、公式手順では次の流れです。表記や利用できる機能は環境によって異なるため、画面が対応しない場合は利用中の版の案内を確認してください。

  1. 「データ」→「データの取得」→「ファイルから」→「フォルダーから」で入力先を選ぶ
  2. ファイルの一覧で「データの変換」を選ぶ
  3. Power Queryエディターの一覧で、拡張子やフォルダーパスなどの列を絞り込む
  4. 残った各ファイルの名前と保存先を、予定一覧と1件ずつ照合する
  5. 対象がそろったことを確認してから、バイナリが入ったContent列の「ファイルの結合」へ進む

操作位置の出典:Microsoft Support:フォルダー内の複数ファイルを取り込む

今回なら、結合直前の選択一覧に必要なのはAとBだけです。確認は両方向で行います。

  • 予定一覧のA・Bは、どちらも選択一覧にあるか
  • 選択一覧の各ファイルは、どれも予定一覧の対象か

Bがなければ、受領漏れ、保存先の違い、絞り込み条件を調べます。旧Aや集計出力が残っていれば、対象外として除外します。予定と選択のファイル数が両方2件でも、構成が違えば不一致です。

結合前に、選択した名前とパスを確認表へ記録してください。プレビューの先頭数件だけを見て、一覧全体を確認したことにはしません。

4 結合後に、どのファイルの行が入ったかを確認する

選択一覧にあることと、結果に取り込まれたことは別々に確認します。結果の行から元ファイルをたどれる出所情報を使い、各対象ファイルに対応するデータがあるかを調べます。

名前だけでは、別フォルダーの同名ファイルを区別できません。2026年10月4日、Windows版Excel 16.0.20430.20092の英語UIで架空6CSVを確認しました。フォルダー一覧の Name と Folder Path を残し、保存先セルを選んだ画面下部の詳細表示で、入力直下と input\archive\ の同名Aを識別できました。列上の省略表示だけで完全パスを判断しません。

出所列は、結合後にも自動で残るとは限りません。 本環境では Content・Name・Folder Path を残してから結合しても、生成された Removed Other Columns1 が Transform File だけを残し、名前と保存先を削除していました。[Advanced Editor]でその Table.SelectColumns 行を確認し、保持列を {"Name", "Folder Path", "Transform File"} に変更しました。第6節の補助チェックを使う場合は、この行の入力ステップも変更します。

変更後は結果プレビューに Name・Folder Path・record_id・amount が残り、旧Aの結果行を選んでも完全な archive の保存先を確認できました。ここで示す生成ステップ名・列名は本環境のものです。実際のコードに同じものがあるか確認し、特定できなければ「結果の出所未確認」と残します。Microsoftの説明も確認してください。

出所を識別できる状態なら、結果を入力元ごとに絞り、原本と照らします。この架空例では次の2組を確認します。

  • A確定版由来:2データ行、700と1,300、合計2,000
  • B確定版由来:2データ行、900と1,100、合計2,000

第1〜3節はA・Bを対象とする例です。今回の実証では、正常0件の確認用にCも対象へ加える選択条件を別に確認しました。展開前にCの0件を確認し、結果へのデータ行寄与を0としました。結果プレビューはA・Bの4行でした。一方、名前が A_202609.csv という条件だけで選ぶと、直下Aと旧Aが入り、Bは選択から外れました。反例も4行で、700・1,300・600・1,400の足算は4,000です。行数と合計だけでは取り違えを判別できません。出所を保持・識別できる状態で再確認するまでは完了にしません。

ここで確認するのは入力元と、そのファイルのデータが結果に対応していることです。すべての行・値の正しさや、業務上の提出承認まで保証するものではありません。

5 確認表に不一致と次の行動を残す

次は、架空6CSVの実GUIで、名前がAのファイルだけを選び、直下Aと旧Aの4行が入った反例に対応する記入例です。表にはそのうちA・B・旧A・集計出力の4件を載せています。反例のBは実在2行・金額変換エラー0でも、補助列 Selected が FALSE で、結果に寄与しませんでした。「受領記録」などの版の根拠は架空の設定、判定・次の行動は記事の実務整理です。正常0件のCとエラーのEは第6節で区別します。

この表をコピーし、自分のファイル名と確認結果へ置き換えて使えます。対象ファイルは1件1行とし、フォルダー内や選択一覧、結果で見つけた予定外ファイルも行を追加します。表の上には対象期・対象範囲・照合日時を記入してください。

対象期:2026年9月/対象範囲:A・B部門の確定CSV/照合日時:実際に確認した日時を記入

確認対象のパスと名前 予定・版の根拠 フォルダーに存在 PQの選択 結果の出所確認 判定・次の行動
input/A_202609.csv 対象。9月確定版の受領記録 あり あり A確定版の2行・2,000 一致
input/B_202609.csv 対象。9月確定版の受領記録 あり なし 寄与なし 不一致。参照先・絞り込みを確認
input/archive/A_202609.csv 対象外。旧版保管先 あり あり 旧Aの2行・2,000 不一致。選択から除外
input/summary_202609.csv 対象外。過去の集計出力 あり なし 寄与なし 対象外として除外を確認

表の各欄は、次の証拠から記入します。「確認対象のパスと名前」「フォルダーに存在」は一覧の Name と完全な Folder Path、「予定・版の根拠」は受領・提出などの業務記録、「PQの選択」は第6節の Checked Selection にある Selected を見ます。「結果の出所確認」は名前と保存先を保持した結果プレビューの行・値を原本と照らします。正常0件では、展開前の変換テーブルと展開後の状態も別に記録します。「判定・次の行動」は、この4段階の一致・不一致・未確認から決めます。

この時点の結論は、「4行・4,000だが、B欠落・旧A混入で確認未完了」です。合計が一致したことを理由に、表の不一致を消しません。

修正後は、変更した選択一覧と、その変更を反映した結果をもう一度照合します。Bが選択された画面だけでは、Bが結果に入った確認まで終わっていません。更新や確認ができなければ、どの段階まで済んだかを残します。

6 0件・エラー・対象未確定を空欄にしない

本環境で追加したファイル単位の補助チェック

DataRows・AmountErrorRows・Selected は、標準で表示される列ではありません。この実証で追加した補助列です。本環境では、6CSVから結合用クエリが生成された後、そのクエリへ次の4ステップを追加しました。ファイルごとのチェックを残したうえで、結果への展開前に選択条件を適用しています。

  1. [Advanced Editor]で、各ファイルの [Content] に生成関数を適用し、Transform File 列にテーブルを作る行を探します。本環境の行は #"Invoke Custom Function1" = Table.AddColumn(..., "Transform File", each #"Transform File"([Content])), でした。この行の直後、次の列選択・展開ステップより前に、下の4行を挿入します。
  2. 下の完全パスは表示用プレースホルダーです。そのまま実行しません。 予定一覧と Folder Path の実セルで確認した入力直下の完全パスへ、末尾の \ も含めて置き換えます。A・B・Cというファイル名の選択は本架空例の条件です。
  3. 既存の Removed Other Columns1 行を、#"Removed Other Columns1" = Table.SelectColumns(#"Selected Nonempty Files", {"Name", "Folder Path", "Transform File"}), に変更します。後続の Expanded Table Column1 はこの行を参照する形を保ちます。
  4. 既存の Changed Type 行で、amount の型指定を {"amount", Int64.Type} にします。本例の金額は整数です。ステップ名・関数名・テーブル列が異なるコードへ、同じ名前があると推測して貼り付けないでください。
    #"Counted Rows" = Table.AddColumn(#"Invoke Custom Function1", "DataRows", each Table.RowCount([Transform File]), Int64.Type),
    #"Counted Amount Errors" = Table.AddColumn(#"Counted Rows", "AmountErrorRows", each Table.RowCount(Table.SelectRowsWithErrors(Table.TransformColumnTypes([Transform File], {{"amount", Int64.Type}}), {"amount"})), Int64.Type),
    #"Checked Selection" = Table.AddColumn(#"Counted Amount Errors", "Selected", each List.Contains({"A_202609.csv", "B_202609.csv", "C_202609.csv"}, [Name]) and [Folder Path] = "<入力直下の完全パス・末尾の\を含む>", type logical),
    #"Selected Nonempty Files" = Table.SelectRows(#"Checked Selection", each [Selected] and [DataRows] > 0),

プレビューで Checked Selection ステップを選ぶと、展開前の6ファイルの Name・Folder Path・追加した3補助列を確認できました。DataRows はファイルごとの変換テーブルの行数、AmountErrorRows はその amount を整数型へ変換したときのエラー行数です。Selected は予定に合わせて自分で設定した選択条件の結果で、正しい版かを自動判定する列ではありません。必要な型を確認して、エラー行選択の一次仕様も参照してください。

この補助式を確認したのは、Windows版Excel 16.0.20430.20092・英語UI・UTF-8の小さな架空6CSV・record_id と整数の amount という2列です。別の列構造、金額型、区切り文字、カルチャー、生成コード、Excel環境への共通動作保証ではありません。今回の実測はエディター内の一覧・結果プレビューまでで、[Close & Load]やxlsx保存・再開は検証していません。

ヘッダーだけの0件ファイル

たとえば、C部門から「当月実績なし」としてヘッダーだけのCSVが届く運用なら、Cも予定一覧に必要です。結果のデータ行が0件でも、未提出とは限りません。

架空試験では、Cの内容は見出し record_id,amount だけでした。Invoke Custom Function1 のCのテーブルセルを選ぶと、詳細欄に This table is empty と表示されました。補助チェックでも DataRows=0・AmountErrorRows=0。正選択条件にCも含めたので Selected=TRUE でした。

この空テーブルをそのまま展開すると、本環境ではnullの1行ができました。 Cのデータ行0件は、展開後の行数だけで判定しません。上の Selected Nonempty Files は、選択済みかつ DataRows>0 のファイルだけを展開へ渡すため、Cを選択確認済みとして残しながら、結果へのデータ行寄与を0にしました。結果の空欄行を一括削除したという意味ではありません。

Cの確認行には、次を別々に記録します。

  • 事前対象・版の根拠:Cは提出対象。当月0件という提出記録を確認
  • フォルダーに存在:Cのファイルを実際に確認
  • 結合直前の選択:Cの名前と保存先がある
  • 結果の確認:原本はヘッダーのみ。対象ファイルを読み込んだ結果が0件で、エラーやスキップによる欠落でないことをファイル単位で確認
  • 判定:これらを確認できた場合は「一致(0件の根拠あり)」、判別できなければ「未確認」

結果の表にCの行がないことだけでは、0件の正常入力と、読込失敗・欠落を区別できません。 0件ファイルは結果行とは別に、存在と処理の確認記録を残します。ファイル自体が存在しない場合も、勝手に0件扱いにはしません。

数値変換エラーと選択漏れを区別する

架空Eは E01,not_a_number というデータ行を持ちます。標準の型検出では amount がtextになり、その文字も取り込まれました。整数型へ明示変換すると、EのErrorセルの詳細に DataFormat.Error: We couldn't convert to Number. と原因値 not_a_number が表示されました。ファイル別チェックは DataRows=1・AmountErrorRows=1 です。これは実際に確認した整数型変換エラーで、ファイル読込失敗の実証ではありません。

反例のBは DataRows=2・AmountErrorRows=0 でも Selected=FALSE。正常に変換できるファイルを選択から落とした状態です。Cの正常0件、Eの変換エラー、Bの選択漏れを「結果にない」という一つの扱いにまとめません。

本試験のEは予定対象外として選択しませんでした。必要ファイルなら、エラーを理由に黙って除外せず原因を解消して対応を確認します。ファイルを読めない・CSVの構文が不正といったエラーは今回未検証です。上の補助式がそれらをすべて捕捉・分類すると扱わず、処理が止まる、エラー内容や必要ファイルを特定できない場合は「未確認」を残します。

エラーファイルをスキップした場合

以下はMicrosoft公式仕様の説明で、この選択肢を使った除外は今回の実機試験では未検証です。 ファイル結合には、エラーが発生したファイルを結果から除外する「Skip files with errors」の選択肢があります。今回Eで確認した整数型変換エラーとは別に扱います。Microsoft Learn:ファイル結合の概要

この選択肢を使った場合、画面のエラーが消えたことだけで、必要ファイルをすべて取り込めたとは判断できません。必要ファイルが存在・選択されていても、エラーで結果に入らなかった場合は「存在あり/選択あり/結果未確認または欠落/エラー原因を確認」と残します。これは一般的な記録例です。今回の反例Bはエラー0・選択なしで、エラースキップではありません。

どのファイルが除外されたか不明なら、その範囲も未確認です。原因を解消して対象ファイルを処理し、結果との対応を確認するまで、全件完了にはしません。

何が必要か、まだ決まっていない場合

「今月はAとBだけでよいのか」「Cも提出対象か」が不明なら、必要ファイルが欠けていないとは判定できません。対象範囲を決める記録や担当者へ確認し、予定一覧を確定させます。

対象未確定のまま選択一覧と結果が一致していても、表の結論は「未確認」です。分からない対象を一覧から消して、見かけ上の一致にしないでください。

どこまで確認できたら終わりにするか

今回の入力元確認は、次を記録できた範囲で完了とします。

  1. 対象期・対象部門と、必要なファイル・版の根拠が確定している
  2. 予定した各ファイルの存在を確認でき、その版が結合直前の選択一覧にあり、予定外のファイルが選択に残っていない
  3. 各対象ファイルと結果の出所を対応付けられ、予定外の出所もない。0件ファイルは別の確認記録がある
  4. エラー・スキップ・出所不明などの未解決事項が残っていない

確認表は、そのときの原本と処理結果に対する記録です。ファイルを追加・差し替えたり、クエリの条件を変更したりした後の結果は、改めて照合します。

番号自体が取り込みで変わる問題は、CSVの先頭ゼロ・長い管理番号を保持する方法で確認できます。対象ファイルがそろった後に、2つの台帳の行や値を比べる必要がある場合は、Excelで2つの台帳を照合する方法へ進んでください。

合計が合うことに加え、「何を取り込み、何がまだ分からないか」を確認表に残すと、次に調べるファイルと作業が明確になります。

タイトルとURLをコピーしました