Excelの数式を一括で値に変換する方法!「値の貼り付け」とVBAでまとめて変換

Excelの数式を一括で値に変換する方法!
Excelの数式を一括で値に変換したいときはないでしょうか。

特に見積書など金額を社外へ提示する時に多いかと思います。

けど、そんな中で悩むことは、

・Excelの数式を一括で値に変換したいがやり方がわからない。
・ショートカットやVBAで効率的に行いたいがやり方がわからない。

ですよね。

今回はそんなお悩みを解決する

・Excelの数式を一括で値に変換する基本操作
・Excelの数式を一括で値に変換するショートカット
・Excelの数式を一括で値に変換するVBA

についてまとめます!

Excelの数式を一括で値に変換する基本操作

数式があるセルを選択します。

右クリックし[コピー]を選択します。

右クリックし、[形式を選択して貼り付け]>[値]を選択し[OK]をクリックします。

または[ホーム]>[値の貼り付け]>[値]を選択します。

数式が値に変換されました。

数式が値に変換されましたね。

Excelの数式を一括で値に変換するショートカット

Excelの数式を一括で値に変換するショートカットは以下の順序で実施します。

数式を値に変換

計算式のセルを選択
Ctrl + C

Alt + H

Alt + V

Alt + V

もしくは

Ctrl + C

Ctrl + Alt + V

[値]を選択し[OK]をクリック

もしくは

計算式のセルをWクリック

F9

タカヒロ
タカヒロ
「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 を使います。

さいごに

いかがでしょうか。

今回は、

・数式を一括で値に変換する方法(値の貼り付けとVBA)

についてまとめました。

値の貼り付けは、覚えておくと配布用ファイルづくりがぐっとラクになります。
まずは今回のサンプル表で、ぜひ一度試してみてください。
また、他にも便利なExcelの時短テクニックがありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。






コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA ImageChange Image