A子さん「“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の抽出に便利 | 入力ミスや混在データの補正に使える |

コメント