「ほぼ同じ表」でも、A部署は「売上日」、B部署は「計上日」、C部署は見出しが2行目から始まる。こうした違いがあると、単純なファイル結合は途中で止まります。
違いを無理に一つの処理へ押し込むより、形式ごとの変換を用意し、最後に共通の列へそろえて結合する方が保守しやすくなります。
入力形式を統一できるなら、それが最も簡単です。統一できない場合は、ファイル形式を数種類へ分類し、列名の対応表と必須項目を決めてからPower QueryやVBAで変換します。未知の形式を黙って取り込まず、停止または確認一覧へ出す設計が必要です。
まず「違いの種類」を数える
ファイル数ではなく、形式の種類が難易度を左右します。
- 列名だけが違い、意味は同じ
- 不要な説明行や小計行の位置が決まっている
- ファイル名から部署や取引先を判別できる
- 必須項目と任意項目を分けられる
- 形式が変わったときに気づく確認方法を用意できる
共通の完成形と、形式別の変換を分ける
先に完成形の列を決め、「売上日」「計上日」を共通の「日付」へ対応させます。存在しない列は空欄にするのか、取込エラーにするのかも列ごとに決めます。
新しい形式が届いた際に、既存のどれかへ誤って当てはめると数字は出ても内容がずれます。見出しや列数を確認し、未登録形式として止める仕組みを入れます。
- 1形式を分類する
部署・取引先・システム別に、同じ構成のファイルをまとめます。
- 2列の対応表を作る
元の列名と、統合後の共通列を対応付けます。
- 3未知の形式を検知する
必須列がない、列数が変わった場合は取り込まず通知します。
Power Queryだけで足りるか
形式ごとの変換を画面上で管理できるならPower Queryで対応できます。見出し位置を探す、保護されたブックを開く、複数の特殊な帳票を読み取る場合はVBAや別処理を組み合わせます。
| 方法 | 向いている場面 | 確認したい点 |
|---|---|---|
| Power Query | 数種類の形式を共通列へ変換 | 形式ごとにクエリを分ける |
| VBA | セル位置やシート名を探索して取り込む | 誤判定時に処理を続けない |
| 入力様式の統一 | 社内で配布する様式を変更できる | 旧様式の受付終了日を決める |
CSVの取込・整形で確認しておきたいこと
まずすべてのファイルを並べ、列名・開始行・シート名の違いを一覧にすると、統一できる部分が見えます。
- 同じ意味の列名を一つの名称へ整理する
- 必須列と任意列を分ける
- 各形式の正常サンプルを保管する
- 新しい形式が届いた日を記録する
CSVの取込・整形を相談するときに伝えること
一番きれいなファイルだけではなく、実際に補正が必要だった例を含めます。
- 形式ごとのサンプルファイル
- 共通化したい列の一覧
- 存在しない列の扱い
- 対象外にするシート・行・ファイル
- 完成後の件数と合計の確認方法
CSVの取込・整形をプロに任せる目安
- 形式が5種類以上ある
- 列名だけでなく表の位置も変わる
- 誤った取込が請求・在庫へ影響する
- 提供元の変更を自動で検知したい
CSVの取込・整形で確認しておきたいこと
すべてを一つの巨大な処理にすると、どの形式で止まったか分かりにくくなります。
- 似た列名を意味確認せず統合する
- 存在しない必須項目を空欄のまま通す
- 形式変更を正常データとして処理する
- 補正ルールを担当者の記憶だけに残す
複数ファイルの集約で確認しておきたいこと
列が一つ増えただけでも止まりますか?
設計次第です。任意列なら無視または追加できますが、必須列の名称変更は検知して止める方が安全です。
部署ごとに別の処理を作る必要がありますか?
形式が同じ部署は共通化できます。違いが大きい場合は変換部分だけ分け、統合後を共通にします。
入力様式を統一した方が安いですか?
一般には処理が単純になります。ただし外部取引先など変更できない相手がいる場合は、受取側で変換する設計が必要です。