Power Queryでデータを取り込んだ際に、セルの値が意図したデータ型にならないことがあります。
たとえば、数値や日付として認識されず、期待した計算や表示ができないといった現象です。
私の場合、「手動でセルをダブルクリックしEnterを押す(=F2+Enter)」ことで正しい型に変換されることを確認しました。
今回は、その操作をすべてのセルに対してVBAで自動実行する方法を試してみました。
なぜ”F2+Enter”が必要になるのか
Power Queryから取り込んだデータは、見た目は正しく表示されていても、内部的には文字列として扱われていることがあります。
この状態では、以下のような問題が起こることがあります。
- 数式が正しく動作しない
- 日付や数値として認識されない
- フィルタや並べ替えが期待通りに機能しない
このようなとき、手動でセルを編集モードにして確定する(F2→Enter)ことで正しく型変換されることがよくあります。
VBAでF2+Enter相当の処理を全セルに適用する
今回は、手動操作をVBAで自動化するマクロを作成しました。
処理時間はややかかるものの、すべてのセルを対象に「F2 → Enter」相当の処理を実行できます。
実装したVBAコード
以下が今回使用したコードです。
Sub EditAndEnterAllCells()
Dim ws As Worksheet
Dim cell As Range
' 最初のシートをアクティブに設定
Set ws = ThisWorkbook.Sheets(1)
ws.Activate
' すべての使用されているセルに対して操作を実行
For Each cell In ws.UsedRange
cell.Activate
cell.Value = cell.Value
Next cell
End Sub
コードの説明
ThisWorkbook.Sheets(1)
対象とするのはブック内の最初のシート(インデックス番号1)です。
必要に応じて"Sheet1"などに変更可能です。ws.UsedRange
シート内で実際に使用されているセル範囲(空白を除く)を対象としています。cell.Value = cell.Value
セルの内容を上書きすることで、Excelに再評価させる働きを持たせています。
これは実質的に「F2→Enter」と同等の動作を実現します。
注意点と処理の影響
このマクロは、使用範囲が広いほど実行に時間がかかります。
処理対象が数千セルに及ぶ場合は、一部範囲ごとに分割して処理するなどの工夫も有効です。
また、データ型の問題がPower Queryの段階で発生している場合は、Mコード側で型指定を明示的に行うほうが根本的な解決になります。
ただし、それが難しい場合や一時的な対応としては、本マクロは非常に有効です。
まとめ
ExcelのPower Queryで取り込んだデータが期待する型にならない場合、「F2→Enter」で型が正しく反映されるケースがあります。
その操作をVBAで一括実行することで、大量のセルにも簡単に対応できます。
UsedRangeを使って全セルを対象にするcell.Value = cell.Valueで再評価を強制- 型の変換・数式の再認識に効果あり
同様の悩みを抱える方の参考になれば幸いです。
最後までお読みいただき、ありがとうございました。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
