11/05/2022

Excel。VBA。データを読み込んだら、数値に円がついてるけど合計させたい【Val】

Excel。VBA。データを読み込んだら、数値に円がついてるけど合計させたい

<Excel VBA:Val関数>

データを読み込んだら、次のように、数値に「円」がついていました。


SUM関数をつかって、合計値を算出したくても、文字型データの為、エラーが表示されてしまいます。


「円」を削除する。

または、削除した後に、表示形式のユーザー定義をつかって、「円」を表示すれば、数値型になるので、合計値を算出することはできます。

ただ、少し処理が面倒ですね。


そこで、Excel VBAでプログラムをつくることで、「円」がついた文字型であっても、サクッと合計値を算出することができます。


次のように、プログラムをつくってみました。

Sub 円付き数値()

    Dim total As Long

    Dim i As Long

    

    For i = 2 To 6

        total = total + Val(Cells(i, "b"))

    Next


    Range("b7").Value = total

    Range("b7").NumberFormat = "#,##0""円"""

End Sub


まずは実行して確認してみます。


B7には、合計値を算出してあり、数式バーを確認すると数値が入力されていることがわかります。


B7には、「円」がついていますので、表示形式のユーザー定義を設定してある状態ということもわかります。


それでは、プログラム文を確認しておきましょう。


最初はお馴染みの変数宣言です。

Dim total As Long

Dim i As Long


For to Next文で数値を合計していきます。

For i = 2 To 6

    total = total + Val(Cells(i, "b"))

Next


ポイントは、「Val(Cells(i, "b"))」

SUM関数では文字型だったので、算出することはできません。


しかし、Excel VBAにある「Val関数」をつかうことで、文字型であっても、そのセル内の数値と認識できる部分があれば、数値として算出することができるという、優れた関数があります。


最後の2行。

Range("b7").Value = total

Range("b7").NumberFormat = "#,##0""円"""


変数のtotalに合計値が集計されていますので、それをB7に表示させています。

あとは、算出した値に「円」を最後につけたいので、表示形式を設定してみました。


このように、Excelでは面倒なことも、Excel VBAをつかってプログラムをつくることで解決できる場合もありますので、色々試してみるといいかもしれませんね。