Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3224 / 13646 ツリー ←次へ | 前へ→

【63481】数字と漢字について ちょこり 09/11/10(火) 21:34 質問[未読]
【63482】Re:数字と漢字について ichinose 09/11/10(火) 21:53 発言[未読]
【63484】Re:数字と漢字について ちょこり 09/11/10(火) 22:48 発言[未読]
【63486】Re:数字と漢字について ponpon 09/11/10(火) 23:20 発言[未読]
【63487】Re:数字と漢字について よろずや 09/11/10(火) 23:31 発言[未読]
【63488】Re:数字と漢字について ponpon 09/11/10(火) 23:46 発言[未読]
【63489】Re:数字と漢字について ponpon 09/11/10(火) 23:49 発言[未読]
【63490】Re:数字と漢字について ichinose 09/11/10(火) 23:49 発言[未読]
【63491】Re:数字と漢字について ちょこり 09/11/11(水) 7:04 お礼[未読]
【63493】Re:数字と漢字について Jaka 09/11/11(水) 10:32 発言[未読]
【63494】Re:数字と漢字について ちょこり 09/11/11(水) 14:16 お礼[未読]

【63481】数字と漢字について
質問  ちょこり  - 09/11/10(火) 21:34 -

引用なし
パスワード
   こんにちは。
思いつかないので、お聞きします。

文字データが数字の場合と漢字の場合がありますが、
数字かそれ以外かを調べるにはどうしたら良いのでしょうか?

【63482】Re:数字と漢字について
発言  ichinose  - 09/11/10(火) 21:53 -

引用なし
パスワード
   ▼ちょこり さん:
>こんにちは。
>文字データが数字の場合と漢字の場合がありますが、
>数字かそれ以外かを調べるにはどうしたら良いのでしょうか?

標準モジュールに

Option Compare Text
Sub test()
  Dim g0 As Long
  Dim data As String
  Dim result As Boolean
  data = "123坂本龍馬987"
  For g0 = 1 To Len(data)
   result = False
   If Mid(data, g0, 1) Like "[0-9]" Then
     result = True
   End If
   MsgBox Mid(data, g0, 1) & IIf(result, " は数字です", " 数字ではありません")
  Next
  
End Sub

こんなことですか?

【63484】Re:数字と漢字について
発言  ちょこり  - 09/11/10(火) 22:48 -

引用なし
パスワード
   ▼ichinose さん:

レスありがとうございます。
説明が悪かったようですね。

 A
1 123
2 りんご
3 357

上記のような場合のことです。

すいません。

【63486】Re:数字と漢字について
発言  ponpon  - 09/11/10(火) 23:20 -

引用なし
パスワード
   ▼ちょこり さん:
> A
>1 123
>2 りんご
>3 357
>
>上記のような場合のことです。

こんなんでは?

Sub test()
 Dim r As Range
 
 With Sheets("Sheet1")
  For Each r In .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
   If IsNumeric(r.Value) Then
     MsgBox r.Address & "は、数字です"
   Else
     MsgBox r.Address & "は、数字ではありません"
   End If
  Next
 End With

End Sub

【63487】Re:数字と漢字について
発言  よろずや  - 09/11/10(火) 23:31 -

引用なし
パスワード
   ▼ponpon さん:
>▼ちょこり さん:
>> A
>>1 123
>>2 りんご
>>3 357
>>
>>上記のような場合のことです。
>
>こんなんでは?
>
>Sub test()
> Dim r As Range
> 
> With Sheets("Sheet1")
>  For Each r In .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
>   If IsNumeric(r.Value) Then
>     MsgBox r.Address & "は、数字です"
>   Else
>     MsgBox r.Address & "は、数字ではありません"
>   End If
>  Next
> End With
>
>End Sub

セルに 1E1 と入力してみてください。
値が 10 になりますね。
次のセルに '1E1 と入力してみましょう。
1E1 と表示されますね。
その状態で、上のプロシージャを実行してみましょう。

【63488】Re:数字と漢字について
発言  ponpon  - 09/11/10(火) 23:46 -

引用なし
パスワード
   ▼よろずや さん:
>セルに 1E1 と入力してみてください。
>値が 10 になりますね。
>次のセルに '1E1 と入力してみましょう。
>1E1 と表示されますね。

確かに文字列なのに数字と判定されますネ・・・

【63489】Re:数字と漢字について
発言  ponpon  - 09/11/10(火) 23:49 -

引用なし
パスワード
   ↓としたら、文字列で判定されました。
Sub test()
 Dim r As Range
 
 With Sheets("Sheet1")
  For Each r In Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))
   If Application.IsNumber(r.Value) Then
    ~~~~~~~~~~~~~~~~~~~~~~
     MsgBox r.Address & "は、数字です"
   Else
     MsgBox r.Address & "は、数字ではありません"
   End If
  Next
 End With

End Sub

【63490】Re:数字と漢字について
発言  ichinose  - 09/11/10(火) 23:49 -

引用なし
パスワード
   Isnumericは、数字と解釈できる文字列もTrueですからねえ・・・。

www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=52445;id=excel

こんな投稿をしたことがありました。

【63491】Re:数字と漢字について
お礼  ちょこり  - 09/11/11(水) 7:04 -

引用なし
パスワード
   皆さんありがとうございます。

参考にさせていただきます。

初心者なので簡単なことを聞いたつもりだったのですが、
意外に難しかったんですね。

【63493】Re:数字と漢字について
発言  Jaka  - 09/11/11(水) 10:32 -

引用なし
パスワード
   解決した後だけど一言。
数字と数値は、区別しておいた方が良いですね。

数字
文字列なども含む。
="10"
等他。

数値
直接計算に使えるもの。
=10
ただ、加算、乗算他などで
= ○ + ○
とかで書くとエクセルが自動で数値として計算してしまう時があるので、
SUM関数で計算できる物と考えた方が良い。

数値か数字に関しては、突っ込むと色々あるのでこの辺で。

【63494】Re:数字と漢字について
お礼  ちょこり  - 09/11/11(水) 14:16 -

引用なし
パスワード
   ▼Jaka さん:
>解決した後だけど一言。
>数字と数値は、区別しておいた方が良いですね。

忠告を添えていただいてありがとうございます。
確かにうっかりミスも起きますよね。
助かります。

3224 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free