Excel

【Excel】VBAマクロで数式を値に一括変換(シート全体、列、複数範囲など)する方法

当サイトでは記事内に広告を含みます
いつも記事を読んでいただきありがとうございます!!! これからもお役に立てる各情報を発信していきますので、今後ともよろしくお願いします(^^)/

この記事では、Excel VBAマクロを使用して数式を値に一括変換する方法(シート全体、複数範囲、列など)について解説していきます。

ポイントとしては、

`Range.Value`、

`Worksheets`、

`Cells`

を使用することです。

初心者の方でも理解できるよう、変数名を少々変わった名称で示しております。

それでは、詳しく見ていきましょう!

VBAマクロで数式を数値に一括変換する方法【Range.Value】

それではまず、シングル範囲における数式を数値に一括変換する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub ShikiToAtai()
    ' B列2行目から最終行までの範囲を指定
    Dim hajime As Range
    Set hajime = Sheets("Sheet1").Range("B2:B" & Sheets("Sheet1").Cells(Rows.Count, 2).End(xlUp).Row)

    ' 数式を値に変換する処理
    hajime.Value = hajime.Value
End Sub

コードのAlt+F8を押し、マクロ選択画面でShikiToAtai関数を実行します。

このコードでは、B列の2行目から最終行までの範囲を取得し、その範囲のセルに入っている数式を値に変換しています。

これにより、数式を保持しているセルが数値だけを保持するようになります。

 

VBAマクロで複数範囲(3列ごと)で数式を数値に変換する方法【Range.Value, For Next】

続いては、複数の範囲にわたって数式を数値に一括変換する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub ShikiToAtaiMultipleRange()
    Dim i As Long
    For i = 2 To 10 Step 3
        ' それぞれの範囲で数式を値に変換
        Dim hajime As Range
        Set hajime = Sheets("Sheet1").Range(Cells(2, i), Cells(Sheets("Sheet1").Cells(Rows.Count, i).End(xlUp).Row, i))
        hajime.Value = hajime.Value
    Next i
End Sub

コードのAlt+F8を押し、マクロ選択画面でShikiToAtaiMultipleRange関数を実行します。

ここでは、2列目から10列目までの範囲を3列ごとに数式を数値に変換しています。

For Nextループを利用して、範囲を動的に指定して変換作業を行っております。

 

VBAマクロでシート全体の数式を数値に変換する方法【Cells, Worksheets】

最後に、シート全体の数式を数値に変換する方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub ShikiToAtaiSheet()
    ' シート全体の数式を値に変換
    Dim zenbuSheet As Worksheet
    Set zenbuSheet = Sheets("Sheet1")
    zenbuSheet.UsedRange.Value = zenbuSheet.UsedRange.Value
End Sub

コードのAlt+F8を押し、マクロ選択画面でShikiToAtaiSheet関数を実行します。

このコードは、シート全体の使用範囲内のセルに入っている数式を値に変換します。

UsedRangeプロパティを使用してシートの使用範囲を取得し、その範囲内のセルの数式を値に変換しています。

まとめ

Excel VBAマクロを使用して数式を値に変換する方法を一緒に見てきました。

初心者でも簡単に取り組めるよう、変数名を分かりやすくしております。

今後は自身で変数名を英語表記に変更して活用していただき、Excel作業の効率化に役立ててください。

この知識を利用して、Excelの使い方をさらにマスターしていきましょう!