No.2ベストアンサー
- 回答日時:
こんにちは。
maruru01です。こんな感じで出来ます。
Select Case 得点
Case Is >= Range("D1").Value
評価 = Range("E1").Value
Case Is >= Range("D2").Value
評価 = Range("E2").Value
・・・
End Select
早々の解答ありがとうございます。
質問の仕方が悪かったと思います。
上のケースですと、Range("D1").Value で、D1と設定されてしまいますよね。
そうではなくて条件がDの列に並んでいるんです。
つまり、条件が変数なのですが。
No.10
- 回答日時:
#8,#9です。
もうひとつ。もしかしたら、D列にテストの点数があって、E列に評価をだす。これを1行毎にやる、ということでしょうか。
もしそうなら、こんなかんじでしょうか。
Sub test()
For p = 0 To 56635
With Range("E1").Offset(p)
Select Case Range("D1").Offset(p)
Case Is = ""
Exit Sub
Case Is >= 90
.Value = "優"
Case Is >= 80
.Value = "良"
Case Is >= "70"
.Value = "可"
Case Else
.Value = "不可"
End Select
End With
Next p
End Sub
No.8
- 回答日時:
横から失礼します。
ひょっとして、こういうことでしょうか?
下の例ではD1、E1を起点に、それぞれ一つずつ下のセルを参照していきます。
Set Score = Range("D1")
Set Result = Range("E1")
Select Case 得点
Case Is >= Score.Value
評価 = Result.Value
Case Is >= Score.Offset(1, 0).Value
評価 = Result.Offset(1, 0).Value
Case Is >= Score.Offset(2, 0).Value
評価 = Result.Offset(2, 0).Value
End Select
もし、D1を100、D2を99・・・D100を1とした場合、100点満点の成績を10点刻みで評価するなら、
Set Score = Range("D10")
Case Is >= Score.Value
Case Is >= Score.Offset(10, 0).Value
Case Is >= Score.Offset(20, 0).Value
5点刻みなら、
Set Score = Range("D5")
Case Is >= Score.Value
Case Is >= Score.Offset(5, 0).Value
Case Is >= Score.Offset(10, 0).Value
となります。
こう書いていると、マクロを実行中にしきい値を変えたくなってきますが、Offset()の中の数字はSelect Caseの中に入ってしまうと変えようが無いので、それぞれ変数にしてSelect Caseの前で数を割り当てるとか、Select Caseの中は固定しておいてD列の数字を変えてしまう方法が考えられます。
ご質問の文や#6での返信を素直に読むと、誰が見ても#2さんの回答になると思います。もう少し表現を工夫されたほうがいいのでは。(^_^;)
いろいろ書きましたが、わたしもご質問の意図を読み取っているかどうか自身がありません。(^^ゞ
No.7
- 回答日時:
A1セルに例えば「55」
B1:B3に(区分け表)
80
60
40
と入れて、下記を実行すると
60-40と出ます。
A1の値を変えて実行すると、MSGBOX表示が
それなりに出ます。
こう言うことを出来れば良いのでしょうか。
Sub test01()
Select Case Range("a1")
Case Is >= Range("b1")
MsgBox Range("b1") & "以上"
Case Is >= Range("b2")
MsgBox Range("b1") & "-" & Range("b2")
Case Is >= Range("b3")
MsgBox Range("b2") & "-" & Range("b3")
Case Else
MsgBox Range("b3") & "以下"
End Select
End Sub
No.6
- 回答日時:
>次の行に行った場合に、Range("D1").Value のD1はD1では無くて、D2なのです。
どこを変化させたいのかよくわかりません。
Case Is >= Range("D1").Value
Case Is >= Range("D2").Value
Case Is >= Range("D3").Value
・・・
ということではないのでしょうか?
それとも、bin-chanさんのを拝借すると、
n行 = n行 + 1
得点 = Range("C" & n行).Value
Select Case 得点
Case Is >= Range("D" & n行).Value
評価 = Range("E" & n行).Value
Case Is >= 70
評価 = Range("E" & n行).Value
Case Is >= 60
評価 = Range("E" & n行).Value
・・・
End Select
という感じで先頭のCaseだけを可変にしたいのでしょうか?
その場合、評価はどこから持ってくるのでしょうか?
もっと具体的にセル位置を提示して下さい。
bin-chanさんへ
それだと、Case句が全部同じ条件になってしまいますね。
やはり、もっと具体的な条件を提示してもらわないと、これ以上は無理ですね。
Case Is >= Range("D1").Value
Case Is >= Range("D2").Value
Case Is >= Range("D3").Value
・・・
こういうことです。
また、これにともなって、返す値も、
評価 = Range(E1).Value
評価 = Range(E2).Value
評価 = Range(E3).Value
・・・
のように変化します。
No.5
- 回答日時:
横から失礼します。
cacheさんは「行単位」で処理なさりたいのですね?
n行 = n行 + 1
得点 = Range("C" & n行).Value
のような記述が事前にある、ということでは?
そうであるなら、maruruさんのNo.2を
n行 = n行 + 1
得点 = Range("C" & n行).Value
Select Case 得点
Case Is >= Range("D" & n行).Value
評価 = Range("E" & n行).Value
Case Is >= Range("D" & n行).Value
評価 = Range("E" & n行).Value
・・・
End Select
とすれば良いと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- Excel(エクセル) Excel コンボボックス バックカラー 1 2023/02/18 08:06
- Visual Basic(VBA) いつもお世話になります 下記のコード実行すると エラーになります わかるかた教えてくれませんでしょう 6 2022/12/17 15:01
- Visual Basic(VBA) Excelのマクロについて教えてください。 3 2022/06/30 09:36
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- Visual Basic(VBA) ワークシートチェンジで曜日を表示する方法 1 2023/03/04 21:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAについての質問です
-
Excelにいついて質問です。
-
CSVファイルについて質問です。
-
エクセルの「入力規則」のプル...
-
一つのセルに(例えばA1)入力...
-
Excelの関数について教えてくだ...
-
エクセルファイルがファイルの...
-
【マクロ】名前を保存する際に...
-
エクセル共有したが、アクセス...
-
エクセル vbaについて教えてく...
-
Excel 複数列 A列B列C列一致 D...
-
エクセルであるセルに数字を入...
-
エクセルのデーターが2か月前の...
-
UNIQUE関数が使えないバージョ...
-
Excelについて教えてください
-
エクセル初心者です 関数の入れ...
-
Excelでセルの値が同じか...
-
Excelはなんで先頭の0を消すん...
-
【Excel】数字を3倍にし、なお...
-
エクセルで年休を管理する方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報