先般、下記のvbaのコーディング事例の回答を頂きました。
再度ご質問させて頂きたく、よろしくお願いします。
質問1
a列に点数を入力すると同時にb列に表示させたい。
→This workbookのPrivate Sub Workbook_Open()にvbaを登録するのでしょうか?
質問2
a列に点数が入力された場合のみb列を表示させたい。
===================
a1~a100のセルに点数が入力されているとします。
その点数を元に下記の通りb列にランクを自動的に付ける場合の
vbaのコーディングはどうなりますか?
ss(95以上)
a(90-94)
b(85-89)
c(80-84)
d(75-79)
e(70-74)
f(65-69)
g(60-64)
h(55-59)
i(50-54)
j(50以下)
No.3ベストアンサー
- 回答日時:
こんばんは。
こんな感じでどうでしょうか?
'シートモジュール(シートタブを右クリック--コードの表示)
'-------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ret As Variant
If Target.Column <> 1 Then Exit Sub
If Target.Count > 1 Then Exit Sub
If IsNumeric(Target.Value) = False Then Exit Sub
Ret = RankLookUp(Target.Value)
If Ret = 0 Then Exit Sub
Application.EnableEvents = False
Target.Offset(, 1).Value = Ret
Application.EnableEvents = True
End Sub
Function RankLookUp(arg As Variant) As String
Dim Data(10)
Dim Chars(10)
Dim i As Long, j As Long, k As Variant
'除外項目
If IsNumeric(arg) = False Then Exit Function
If arg < 0 Then RankLookUp = 0: Exit Function
If arg > 100 Then RankLookUp = 0: Exit Function
Data(10) = 95: Chars(10) = "ss"
Data(0) = 0: Chars(0) = "j"
For i = 50 To 90 Step 5
j = j + 1
Data(j) = i
Chars(j) = Chr(106 - j)
Next i
On Error Resume Next
k = Empty
k = Application.Match(arg, Data, 1)
On Error GoTo 0
If Not IsEmpty(k) Then
RankLookUp = Chars(k - 1)
End If
End Function
No.2
- 回答日時:
前回のURLを貼った方が質問内容の理解促進に役立ちます。
≪前回質問≫
今日からトライしているexcel vbaの初心者です。
http://oshiete1.goo.ne.jp/qa5577697.html
質問1と質問2を実現するには、シートのイベントプロシージャを利用します。
≪参考≫
ワークシートのイベント
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
色々ありますが、Worksheet_Changeイベントが使えると思います。
No.1
- 回答日時:
こんにちは。
標準モジュールを追加し次のようにしてください。
Option Explicit
Sub Sample()
Dim I As Integer
Dim Ret As String
For I = 1 To 100
Select Case Range("A" & I).Value
Case Is >= 95
Ret = "SS"
Case Is >= 90
Ret = "A"
Case Is >= 85
Ret = "B"
Case Is >= 80
Ret = "C"
Case Is >= 75
Ret = "D"
Case Is >= 70
Ret = "E"
Case Is >= 65
Ret = "F"
Case Is >= 60
Ret = "G"
Case Is >= 55
Ret = "H"
Case Is >= 50
Ret = "I"
Case Else
Ret = "J"
End Select
Range("B" & I).Value = Ret
Next I
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Visual Basic(VBA) VBAで列の再表示設定 1 2023/04/25 10:19
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
- Excel(エクセル) Excleマクロ セル値の代入と文字列の結合について 3 2022/10/05 16:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
【スプレッドシート】指定の日...
-
マイクロソフト オフィスについて
-
エクセルで例えば、関数を使っ...
-
マイクロソフト 一時使用コード...
-
会社PCのメールが更新されない
-
大学のレポート A4で1枚レポー...
-
エクセルで例えば、A1に㈱ベ...
-
SUMIFS関数について
-
Outlookを立ち上げたらGoogleロ...
-
office365って抵抗感ないですか?
-
エクセルで英文字に入れた下線...
-
英数字のみ全角から半角に変換
-
Outlook で宛先が複数の場合の人数
-
Outlookでの時間指定送信機能に...
-
EXCELのセルへの色づけ
-
Microsoft365で写真をアルバム...
-
jpgで保存した表があるのですが...
-
Microsoft Formsの「個人情報や...
-
<条件追加/スプレッドシート>...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
マイクロソフト 一時使用コード...
-
英数字のみ全角から半角に変換
-
Office2021を別のPCにインスト...
-
Microsoft Formsの「個人情報や...
-
officeビジネス型のワードやエ...
-
会社PCのメールが更新されない
-
【スプレッドシート】指定の日...
-
Microsoft Officeを2台目のPCに...
-
何このステータスバー
-
2つのシートの一致する行のセ...
-
会社のTeamsのことで相談です。...
-
エクセルにリンクされるのをし...
-
Windows 11で、IME言語バー(IM...
-
office2010とoffice365の共存で...
-
Microsoftのパソコンです。 エ...
-
エクセルでXLOOKUP関数...
-
Excel関数について質問ですm(__)m
-
VBA
-
自分の専門分野の仕事。初見で...
おすすめ情報