Power QueryでCSVを読み込んだのに、列名が「Column1」「Column2」…のままになることがあります。データの1件目が見出しになり、本来の見出しや最初のデータが消えたように見えることもあります。どちらも、多くは「CSVのどの行を、どのステップで見出しに昇格させているか」がずれていることが原因です。

Power Queryでは、Csv.Document がCSVを列に分けます。そのあとの Table.PromoteHeaders が、1行目を見出しに昇格させます。昇格のステップがあるか、2つのステップの間に何があるかを確認すれば、たいていは直せます。

症状から原因の見当をつける

見えている状態 考えられる原因 最初に見る場所
列名が Column1, Column2… のまま 見出しを昇格するステップがない 適用したステップ
Column1 の1列だけになり、値の中にタブやセミコロンが残っている 区切り文字の指定が違う 「ソース」ステップの Delimiter
タイトル行や空行が見出しになり、本来の見出しが1件目のデータとして残る 先頭の余分な行を消す前に昇格している ステップの順番
データの1件目が見出しになり、件数が1件少ない 見出しのないCSVを昇格している、または昇格を2回している CSVの1行目とステップの数
一部の列だけ Column3 や「金額_1」のような名前になる 見出し行に空欄や同じ名前がある CSVの見出し行

CSVの先頭をテキストエディターで確認する

まず、CSVの先頭数行をメモ帳などのテキストエディターで開きます。Excelで直接開くと、空行や区切り文字の違いが見えにくくなります。

確認するのは次の3点です。

  • 1行目が本当に見出しか(タイトル、出力日時、空行が先に来ていないか)
  • 見出しが何行目にあるか
  • 区切り文字がカンマか、タブやセミコロンか

たとえば、システムから出力したCSVが次のようになっていることがあります。

売上明細(2026年9月分)
出力日時,2026/10/01 09:00

日付,取引先,金額
2026/09/01,A商事,12000
2026/09/02,B工業,8500

この例では、見出しは4行目です。1行目をそのまま昇格すると「売上明細(2026年9月分)」が見出しになり、本来の「日付,取引先,金額」はデータの途中に残ります。

適用したステップの順番を見る

Power Queryエディターの右側にある「適用したステップ」で、ステップの並びを確認します。「データ」タブの「テキストまたはCSVから」で取り込んだ場合は、次の並びになることが多いです。

  1. ソース(Csv.Document)
  2. 昇格されたヘッダー数(Table.PromoteHeaders)
  3. 変更された型(Table.TransformColumnTypes)

「ホーム」タブの「詳細エディター」を開くと、同じ内容をM言語で確認できます。

let
    ソース = Csv.Document(File.Contents("C:\data\sales.csv"),[Delimiter=",", Columns=3, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    #"昇格されたヘッダー数" = Table.PromoteHeaders(ソース, [PromoteAllScalars=true]),
    #"変更された型" = Table.TransformColumnTypes(#"昇格されたヘッダー数",{{"日付", type date}, {"取引先", type text}, {"金額", Int64.Type}})
in
    #"変更された型"

ステップ名や引数の値は、Excelのバージョンや取り込んだファイルによって変わります。見るべきなのは次の2点です。

  • Table.PromoteHeaders があるか
  • Table.PromoteHeaders の最初の引数が、どのステップを受け取っているか

各ステップは、引数に書かれたステップの結果を受け取ります。ステップを追加しても、昇格のステップが古いステップ名を参照したままだと、追加した処理は結果に反映されません。

原因別の直し方

昇格のステップがない

Csv.Document だけでは見出しは作られず、列名は Column1, Column2… になります。「テキストまたはCSVから」は見出しの有無を自動で判定しますが、内容によっては見出しと判定されないことがあります(たとえば、全列が文字列のデータ)。編集中に昇格のステップを削除した場合も、同じ状態になります。

直し方は次のとおりです。

  1. 「適用したステップ」で「ソース」を選ぶ
  2. 「ホーム」タブの「1行目をヘッダーとして使用」を押す
  3. ステップを途中に挿入するか確認されたら「挿入」を選ぶ

昇格より前に「変更された型」がある場合は注意が必要です。Column1, Column2… に型を設定してから昇格すると、見出しの文字列が数値や日付の列に入ってエラーになることがあります。型の設定が意図どおりに引き継がれない場合もあります。昇格前の型変換ステップは削除し、昇格のあとで型を設定し直します。

先頭に余分な行がある

見出しより前にタイトル行、出力日時、空行がある場合は、それらを削除してから昇格します。

  1. 「適用したステップ」で「ソース」を選ぶ
  2. 「ホーム」タブの「行の削除」から「上位の行の削除」を選ぶ
  3. 削除する行数(上の例なら3)を入力する
  4. そのあとに「昇格されたヘッダー数」が来ていることを確認する

M言語では次の並びになります。

    ソース = Csv.Document(File.Contents("C:\data\sales.csv"),[Delimiter=",", Columns=3, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    #"削除された上位の行" = Table.Skip(ソース, 3),
    #"昇格されたヘッダー数" = Table.PromoteHeaders(#"削除された上位の行", [PromoteAllScalars=true]),

詳細エディターで手で書き足した場合は、Table.PromoteHeaders の最初の引数を ソース から #"削除された上位の行" に書き換えたかを必ず確認します。ソース のままだと、行を削除したステップが飛ばされます。

月によってタイトル行の数が変わるCSVでは、行数を固定すると前提が崩れます。その場合は、見出しの最初の列名が現れるまで飛ばす書き方にします。

    #"削除された上位の行" = Table.Skip(ソース, each [Column1] <> "日付"),

Table.Skip に条件を渡すと、条件を満たしている間の行を飛ばします。この例では、Column1 が「日付」になる行の手前までを削除します。ただし、「日付」と完全に一致する行が見つからないと、すべての行が飛ばされて空の表になります。見出しの前後に空白が入っていないかも含め、結果の件数を確認してください。

あわせて、「ソース」ステップの Columns= の数が実際の見出しの列数と合っているかも見ておきます。数が少ないと、右側の列が読み込まれません。

区切り文字が違う

値がすべて Column1 の1列に入り、中にタブやセミコロンが見えている場合は、区切り文字が合っていません。「ソース」ステップの歯車アイコンから区切り記号を選び直すか、Delimiter を書き換えます。タブ区切りなら Delimiter="#(tab)"、セミコロン区切りなら Delimiter=";" です。区切り文字を直すと列数も変わるため、Columns= の値も確認します。

見出しのないCSVを昇格している

見出し行がなく1行目からデータが始まるCSVを昇格すると、1件目のデータが列名になり、データが1件減ります。この場合は昇格のステップを削除し、列名を自分で付けます。

Csv.Document の Columns には、列数の代わりに列名のリストを渡せます。こうすると、ソースの段階で列名が決まります。

    ソース = Csv.Document(File.Contents("C:\data\sales.csv"),[Delimiter=",", Columns={"日付","取引先","金額"}, Encoding=65001, QuoteStyle=QuoteStyle.None]),

ステップを分けたい場合は、昇格の代わりに Table.RenameColumns で Column1 などの名前を変えても構いません。

昇格が2回入っている

「1行目をヘッダーとして使用」を2回押すと、正しい見出しのあとに、データの1件目まで見出しに上がります。「適用したステップ」に昇格のステップが2つないかを確認し、後ろの1つを削除します。

フォルダーから複数のCSVを結合している場合は、昇格の重なりにも注意します。「サンプル ファイルの変換」などの補助クエリで昇格したうえで、結合後のクエリでもう一度昇格していることがあります。どのクエリで昇格しているかを確認し、1回にそろえます。

一部の列名だけおかしい

昇格の順番は正しいのに一部の列名だけおかしい場合は、CSVの見出し行そのものを確認します。

  • 見出しが空欄の列は、Column3 のような仮の名前のまま残ることがある
  • 同じ名前の見出しが複数あると、「金額_1」のように末尾に番号が付くことがある
  • 1列目の名前の先頭に見慣れない記号が付く場合は、Encoding の指定がファイルの文字コードと合っていない可能性がある

空欄や重複は、昇格のあとに列名を変更するか、出力元で見出しを直してもらいます。

直したあとに確認すること

見出しが正しく見えても、次の点を確かめてから使います。

  • 列名がCSVの見出しと一致している(全角・半角、前後の空白も含む)
  • 最初のデータ行が消えていない(CSVで見出しの次にある行が、1行目に入っている)
  • 件数が「CSVの行数 − 余分な行 − 見出し1行」と合っている(Excelに読み込んだあとのテーブルの行数で確認)
  • 型変換のあとに、数値や日付の列にエラーが出ていない
  • データの途中に、見出しと同じ値(「日付」「取引先」など)の行が混ざっていない
  • 翌月のCSVで余分な行の数が変わっても、同じ手順で読み込める

型変換のステップは列を名前で指定しています。見出しを直して列名が変わった場合は、型変換のステップも作り直します。古い列名が残っていると、更新時にエラーになります。

おすすめの記事