|
▼泉 道男 さん:
こんにちは。
>下の数字がA1からA70まで並んでいます。実はA2からA1を引き結果は-19になります。それを繰り返すと次は1となり、更に-5、6、17となるはずですが文字列に1をかけても数値に変わらないので困っています。尚、マクロのことも知らない初心者です。よろしくお願いいたします。
>
> 1,200
> 1,181 -19
> 1,182 1
> 1,177 -5
> 1,183 6
> 1,200 17
> 1,220
> 1,208
> 1,215
> 1,211
> 1,227
> 1,244
> 1,239
> 1,238
> 1,268
> 1,248
> 1,227
> 1,243
> 1,225
> 1,226
このデータがアクティブなシートのセルA1から入力されていたとすると・・、
標準モジュールに
'===========================================================
Sub main()
Dim rng As Range
Dim crng As Range
Set rng = Range("a1", Cells(Rows.Count, "a").End(xlUp))
For Each crng In rng
crng.Offset(0, 1).Value = get_num(crng.Value)
Next
End Sub
'===========================================================
Function get_num(mystr As Variant) As Variant
With CreateObject("VBScript.RegExp")
.Pattern = "[0123456789,\.]+"
.IgnoreCase = True
.Global = True
Set Matches = .Execute(mystr)
get_num = False
If Matches.Count > 0 Then
On Error Resume Next
get_num = CDbl(Replace(Matches(0).Value, ",", ""))
If Err.Number <> 0 Then
get_num = False
End If
End If
End With
End Function
として、mainを実行してみてください。
対応するB列に数字のみを抜粋します。
例
A1 B1
1,200 1200
関数get_numは、ちょっとチェックが甘いけど、まあよいでしょう!!
試して見てください
|
|