
No.10ベストアンサー
- 回答日時:
10.0以上50.0以下の場合:a
50.1以上70.0以下の場合:b
どちらでもない場合:c
(50.05はc)
数値以外と空白はエラー
上記の条件です。
標準モジュールへ登録してください。
添付図が実行結果です。
Option Explicit
Public Sub 判定()
Dim maxrow As Long
Dim wrow As Long
Dim val As Variant
Dim judge As Variant
maxrow = Cells(Rows.Count, 1).End(xlUp).row
For wrow = 2 To maxrow
judge = ""
val = Cells(wrow, "A").Value
If val = "" Or IsNumeric(val) = False Then
judge = "エラー"
Else
If val >= 10 And val <= 50 Then
judge = "a"
End If
If val >= 50.1 And val <= 70 Then
judge = "b"
End If
End If
If judge = "" Then
judge = "c"
End If
Cells(wrow, "B").Value = judge
Next
MsgBox ("完了")
End Sub

No.12
- 回答日時:
No.5です。
>小数点 第一までで大丈夫です!
つまり、入力データに少数点第一位以下はないと理解しました。
(当方の真意は数値の「穴」や「間」のない表現で指示して欲しいと書いたつもりなのですが、)50.09というようなデータそのものが存在しないのであれば、(そのような事態がおこることはないので)マクロ上はaでもbでもcでもよいということになります。
であれば、前回回答のマクロの「>=51」となっている部分を「>50」に一箇所直すだけです。
Option Explicit
Sub sample()
Dim i As Long
Dim e_row As Long
Dim target As Range
e_row = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To e_row
Set target = Cells(i, 1)
If (target.Value = "") Or Not (IsNumeric(target.Value)) Then
target.Offset(0, 1).Value = "ERROR"
ElseIf (target.Value >= 10) And (target.Value <= 50) Then
target.Offset(0, 1).Value = "a"
ElseIf (target.Value >50) And (target.Value <= 70) Then
target.Offset(0, 1).Value = "b"
Else
target.Offset(0, 1).Value = "c"
End If
Set target = Nothing
Next
End Sub
No.8
- 回答日時:
No.5,7です。
>10.0以上50.0以下の場合:a
>50.1以上70.0以下の場合:b
>どちらでもない場合:c
これだと、50.09の場合はcとなりますがよいのでしょうか?
No.7
- 回答日時:
No.5です。
>50.1など小数点も判定するにはやはり難しいのでしょうか?
難しくはありません。
数値の範囲を指定する場合、「~以上」「~以下」「~より大きい」「~未満」の表現をきちんと組み合わせて、数値の「穴」や「間(はざま)」が発生しないよう指定すれば、ご心配のような問題は発生しません。
ご質問者の場合「~以上~以下」という範囲指定を複数なさったため、「はざま」が発生しています。
逆に「~以上~以下」を複数使用すると、一つの数値がどちらに属するのかわからなくなる「所属不定」となる場合もあります。
きちんと、数値の「穴」「間(はざま)」「所属不定」が発生しないよう指定していただければ問題は解決可能です。
No.6
- 回答日時:
No2です。
>これは50.1など小数点にも使えるのでしょうか?
使えます。但し、現在では、50.1の場合、c設定されます。
10以上50以下の場合:a
51以上70以下の場合:b
上記のどちらでもないので、cになります。
50.1の場合、どうなさりたいかを再提示していただければ
そのように作り替えることは可能です。
その場合は、要件にもれがないように、要件をきちんと書いてください。
No.5
- 回答日時:
No.4です。
注記するつもりで、書き漏らしてしまったので、追記します。
前回回答のマクロは数値についてはご質問者の指定した範囲条件を「忠実」に指定しています。
例えば50以下と51以上のはざまにある数値50.1などはaでもbでもないのでcと判定されます。
ご承知おき願います。
No.4
- 回答日時:
>数式ではなく、マクロを組みたいです!
思わず「何故?」とツッコミたくなるような、他の回答者さんもご指摘のとおり、ご質問者がマクロに拘る理由がいまひとつ不明です。
また、データに数値でないものが入力されていた場合の処理も不明です。
一応数値でないものはERRORを返すような簡単なサンプルは以下のようなものです。
Option Explicit
Sub sample()
Dim i As Long
Dim e_row As Long
Dim target As Range
e_row = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To e_row
Set target = Cells(i, 1)
If (target.Value = "") Or Not (IsNumeric(target.Value)) Then
target.Offset(0, 1).Value = "ERROR"
ElseIf (target.Value >= 10) And (target.Value <= 50) Then
target.Offset(0, 1).Value = "a"
ElseIf (target.Value >= 51) And (target.Value <= 70) Then
target.Offset(0, 1).Value = "b"
Else
target.Offset(0, 1).Value = "c"
End If
Set target = Nothing
Next
End Sub
No.3
- 回答日時:
#1で回答されているように、関数・数式で処理できるものをわざわざVBAで処理する必要があるのですかね。
というより、
>A2の数値が10以上50以下の場合B2にaと表示し、
51以上70以下の場合、bと表示、それ以外はcと表示し、空白はエラーと表示したいです。
なんて基礎の基礎じゃないですか。
>データがある最終行まで処理したい
これも基礎的なものだろうと思います。
質問者さんはVBAは理解されているのですか?
No.2
- 回答日時:
以下のマクロを標準モジュールに登録してください。
Option Explicit
Public Sub sample()
Dim maxrow As Long
Dim wrow As Long
Dim val As Variant
Dim judge As Variant
maxrow = Cells(Rows.Count, 1).End(xlUp).row
For wrow = 2 To maxrow
judge = ""
val = Cells(wrow, "A").Value
If val = "" Then
judge = "エラー"
Else
If IsNumeric(val) = True Then
If val >= 10 And val <= 50 Then
judge = "a"
Else
If val >= 51 And val <= 70 Then
judge = "b"
End If
End If
End If
End If
If judge = "" Then
judge = "c"
End If
Cells(wrow, "B").Value = judge
Next
MsgBox ("完了")
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- PHP phpでこの記述をもっと簡単に書く方法はないでしょうか…? 3 2022/11/16 19:57
- Excel(エクセル) Excelでnullになるような式のセルをマクロで空白行と認識させるにはどうすればいいですか? 3 2023/03/13 13:42
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 16:07
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) Excel 特定セルの数値を参照したセルの0表示が空白にならないのはどうしてか? 3 2022/04/28 22:23
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) 【エクセル】複雑な関数を教えてください 1 2023/06/05 18:09
- Excel(エクセル) Google Spreadsheetのカスタム表示形式について 2 2023/05/20 09:10
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WinSCPでLinux(CentOS6.10)に...
-
Excel マクロの編集がグレーに...
-
VBAで保存しないで閉じると空の...
-
WPSOffice_マクロの有効化について
-
複数のマクロボタンをまとめて...
-
【Excel VBA】マクロでExcel自...
-
エクセル関数>参照ファイル名...
-
Excelのマクロでボタンを押すと...
-
エクセル ボタンに設定したマク...
-
マクロの保存先、開いてるすべ...
-
エクセル マクロ名にブック名...
-
エクセルでマクロ(Excel 4.0)...
-
【マクロ】元データと同じお客...
-
エクセルのvbaにて thisworkboo...
-
EXcelのマクロで相対パスでファ...
-
エクセル;相対パスを絶対パスへ...
-
Excelマクロで、稼働中のマクロ...
-
VBA Shapes コピーと名前
-
エクセルで、「いいね」のよう...
-
エクセルで使用期限付きのブッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同じシート内にイベントプロシ...
-
続・エクセルのユーザー定義で
-
リストボックスで選択したexcel...
-
VBAで保存しないで閉じると空の...
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
複数のマクロボタンをまとめて...
-
エクセル関数>参照ファイル名...
-
【Excel VBA】マクロでExcel自...
-
エクセル ボタンに設定したマク...
-
Excelのマクロでボタンを押すと...
-
マクロの保存先、開いてるすべ...
-
エクセル マクロ名にブック名...
-
エクセルでマクロ(Excel 4.0)...
-
Excelマクロで、稼働中のマクロ...
-
エクセルで、「いいね」のよう...
-
エクセルのvbaにて thisworkboo...
-
Excelでマクロ実行中に画面を固...
-
EXcelのマクロで相対パスでファ...
-
【Excel】マクロの保存先について
おすすめ情報
数式ではなく、マクロを組みたいです!
これは50.1など小数点にも使えるのでしょうか?
50.1など小数点も判定するにはやはり難しいのでしょうか?
10.0以上50.0以下の場合:a
50.1以上70.0以下の場合:b
どちらでもない場合:c
9.9の場合:c
10.0の場合:a
50.1の場合:b
50.0の場合:a
70.1の場合:c
空白の場合:エラー
この様な感じでしたいです。
ややこしくてすみません。
10.0以上50.0以下の場合:a
50.1以上70.0以下の場合:b
どちらでもない場合:c
9.9の場合:c
10.0の場合:a
50.1の場合:b
50.0の場合:a
70.1の場合:c
空白の場合:エラー
この様な感じでしたいです。
小数点 第一までで大丈夫です!
数値でない場合はエラーでお願いします!