
「“123円”とか“¥1,000”って、数字っぽいけど文字扱いなんだよね…」
「この中の数字だけ取り出したい時って、どうするの?」



そんなときに活躍するのが Val関数
です!
結論:Val関数で「先頭の数字だけ」を数値として取り出せる!
目次
Val関数とは?
Val(文字列)
は、文字列の先頭から読み取れる数字だけを数値として返すVBA関数です。
Val("123円") ' → 123 Val("¥1000") ' → 0(先頭が記号のため) Val("1000abc") ' → 1000
基本的な使い方
Dim text As String Dim num As Double text = "123円" num = Val(text) MsgBox num ' → 123
実務での活用例:価格や個数などの抽出に便利
Dim raw As String raw = "商品価格:1980円" Dim price As Long price = Val(raw) MsgBox "数値部分は " & price ' → 1980



商品情報やユーザー入力から「数値だけ取り出す」用途に最適です!
注意点:先頭が数字でないと 0 になる
Val("¥1200") ' → 0(最初が¥のため) Val("abc123") ' → 0(文字で始まると読み取れない)
対策:Replaceで記号を除去してから使おう!
Dim raw As String raw = "¥1,200" raw = Replace(raw, "¥", "") raw = Replace(raw, ",", "") Dim valueOnly As Long valueOnly = Val(raw) MsgBox valueOnly ' → 1200
応用:複数セルに適用する場合
Dim i As Long For i = 2 To 10 Dim txt As String txt = Cells(i, 1).Value txt = Replace(txt, "円", "") txt = Replace(txt, "¥", "") txt = Replace(txt, ",", "") Cells(i, 2).Value = Val(txt) Next i



A列に「1,980円」などが入っていても、B列に数値のみを抽出できます。
まとめ:Val関数のポイント
ポイント | 内容 |
---|---|
文字列の先頭から数字だけを取り出す | "123abc" → 123 |
先頭が文字や記号なら 0 | "abc123" → 0 |
カンマや記号は事前に Replace | "¥1,000" → "1000" にしてから使用 |
実務では価格やIDの抽出に便利 | 入力ミスや混在データの補正に使える |
コメント