人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルのセルにはいっている値を厳密に、自然数かどうかの判定をしたいのですが、どうするといいのでしょうか? 半角の自然数のみか空白にセルの値をしたいのです。全角、半角を区別は当然ですが、'(アポストロフィーなども)も、間違ったデータがはいっといるとしてたいのです。判別方法によっては、アポストロフィーはスルーされることがあるようです。

●質問者: kaiketsu
●カテゴリ:コンピュータ 科学・統計資料
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
●50ポイント

VBA ですが一応列挙された条件は判定しています。
判定したい範囲を選択して CheckNaturalNumber を実行してください。

Sub CheckNaturalNumber()
 Dim r As Range
 For Each r In Selection
 If isNaturalNumber(r) = False Then
 r.Interior.ColorIndex = 3
 Else
 r.Interior.ColorIndex = xlNone
 End If
 Next
End Sub

Function isNaturalNumber(r As Range)
 isNaturalNumber = False
 If IsNumeric(r.Value) = False Then Exit Function
 If r.Value <= 0 Then Exit Function
 If (r.Value - CLng(r.Value)) <> 0 Then Exit Function
 If StrConv(r.Value, vbNarrow) <> CStr(r.Value) Then Exit Function
 If r.HasFormula = True Then Exit Function
 If r.PrefixCharacter <> "" Then Exit Function
 isNaturalNumber = True
End Function

標準モジュールにおいて実行です。
http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_vbe.html


Mookさんのコメント
セルの値が数式の結果でも問題なければ HasFormula の判定は不要です。

2 ● Baku7770
●50ポイント

ISNUNBER関数がありますので、まず数値かどうかは簡単に判断できます。
http://excel.onushi.com/function/isnumber.htm

後は自然数かどうかですから、正で、int関数との差が0かどうかで判定できます。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ