Excelの数式を一括で値に変換したいときはないでしょうか。
特に見積書など金額を社外へ提示する時に多いかと思います。
けど、そんな中で悩むことは、
・ショートカットやVBAで効率的に行いたいがやり方がわからない。
ですよね。
今回はそんなお悩みを解決する
・Excelの数式を一括で値に変換するショートカット
・Excelの数式を一括で値に変換するVBA
についてまとめます!
Excelの数式を一括で値に変換する基本操作
もくじ
数式があるセルを選択します。
右クリックし[コピー]を選択します。
右クリックし、[形式を選択して貼り付け]>[値]を選択し[OK]をクリックします。
または[ホーム]>[値の貼り付け]>[値]を選択します。
数式が値に変換されました。
数式が値に変換されましたね。
Excelの数式を一括で値に変換するショートカット
Excelの数式を一括で値に変換するショートカットは以下の順序で実施します。
数式を値に変換
計算式のセルを選択
Ctrl + C
Alt + H
Alt + V
Alt + V
もしくは
Ctrl + C
Ctrl + Alt + V
[値]を選択し[OK]をクリックもしくは
計算式のセルをWクリック
F9
Excelの数式を一括で値に変換するVBA
ExcelVBAでExcelの数式を一括で値に変換する方法について説明します。
サンプルのVBAは以下の通りです。
数式を値に変換(シート全体選択)
Cells.Selectですべてを選択します。
次に、Selectionで選択範囲を対象とし、
PasteSpecialメソッドで数式を値に変換します。
Sub 数式を値に変換_シート全体選択()
'すべて選択
Cells.Select
'コピー
Selection.Copy
'数式を値に変換
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
PasteSpecialメソッドのパラメータ「Paste」に値変換のプロパティを設定していますが、値以外にも設定は可能です。
| 貼り付け対象 | プロパティ | 値 |
| すべて | xlPasteAll(既定) | -4104 |
| 数式 | xlPasteFormulas | -4123 |
| 値 | xlPasteValues | -4163 |
| 書式 | xlPasteFormats | -4122 |
| コメント | xlPasteComments | -4144 |
数式を値に変換(シートとレンジ指定)
数式を値に変換したいシート及びセルの範囲が決まっている場合は以下のようにします。
ThisWorkbook.Worksheets(“<シート名>”).Range(“<セルの範囲>”).ClearContents
Sub 数式を値に変換_シートとレンジ指定()
'数式を値に変換_シート指定
ThisWorkbook.Worksheets("Sheet1").Range("C1:D8").Select
'コピー
Selection.Copy
'数式を値に変換
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
数式を値に変換(ブック全体)
数式を値に変換する対象をブック全体とする場合は、存在するシート分処理を繰り返すようにします。
Sheets.Countプロパティでシートの件数を取得し、
Sheets(num)でシートのインデックスを指定し、指定レンジ「”C1:D8″」を対象に書式をクリアにします。
なお、コピーメソッドはシートをアクティブにしないと機能しないため、都度Sheets(num).Selectメソッドで選択しています。
Sub 数式を値に変換_ブック全体()
Dim num As Integer
'数式を値に変換_ブック全シート対象
For num = 1 To Sheets.Count
'シート選択
Sheets(num).Select
'レンジ選択
Sheets(num).Range("C1:D8").Select
'コピー
Selection.Copy
'数式を値に変換
Selection.PasteSpecial Paste:=xlPasteValues
Next
End Sub
VBAの実装手順
実装手順は以下の通りです。
今回はExcel側にこのVBAを実装します。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
※完了メッセージやステータス管理など必要に応じて実装してもらえばと思います。
うまくいかないときの対処法(トラブルシュート)
実際に試すと、思ったように動かないこともあるかもしれません。
よくあるつまずきと対処法をまとめました。
| 症状 | 原因 | 対処 |
|---|---|---|
| まだ数式が見えている | 「数式の表示」がONになっている | 数式 タブ → 数式の表示 のチェックを外す |
| 3桁の区切りが崩れた | 貼り付け時に書式がリセットされた | 「値と書式を貼り付け」(V)や「値のみ(書式はそのまま)」を選ぶ |
| 一部だけ値になっている | 選択範囲がズレている | 数式バーで数式が残っているセルを確認し、その範囲だけやり直す |
| 貼り付け先が斜めにズレた | アクティブセルがずれた状態で貼り付けた | 貼り付け先の左上のセルを選んでから貼り付ける |
| 合計が合わない | 表示は丸めでも実値はそのまま、または値にした後で元データを直した | 丸めたいときは ROUND を使ってから値にする |
関数の説明
今回の作業で一緒に使うと便利な機能と関数です。
値の貼り付け(機能)
| できること | コピーしたセルの結果だけを貼り付けます(数式は残りません)。 |
|---|---|
| ショートカット | Ctrl+Alt+V → V → Enter |
| こんなときに | 配布用・提出用のファイルを作るとき。 |
| 注意 | 値にした後は、参照元を変更しても自動で更新されません。 |
ROUND関数(ラウンド)
| 書式 | =ROUND(数値, 桁数) |
|---|---|
| できること | 指定した桁数で四捨五入します。 |
| 戻り値 | 丸めた数値。 |
| こんなときに | 値に変換する前に、表示と実値を一致させたいとき。 |
| ポイント | 切り捨てなら ROUNDDOWN、切り上げなら ROUNDUP を使います。 |
さいごに
いかがでしょうか。
今回は、
についてまとめました。
値の貼り付けは、覚えておくと配布用ファイルづくりがぐっとラクになります。
まずは今回のサンプル表で、ぜひ一度試してみてください。
また、他にも便利なExcelの時短テクニックがありますので、よろしければご参照頂ければと思います。








コメントを残す