【パワークエリ×VBA】”F2″+”Enter”を全セルに自動適用するマクロの作り方

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円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。

[Kindle Unlimited 読み放題プランをチェックする]


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次