
いつもお世話になっております
下記のコードが動きません。
B列に数字が入力されています。
F列には添付ファイルのように
1000刻みで入力されています。
個数を調べたいのですが、
わかる方おしえてくれませんでしょうか
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim st As String
Dim wf As Object
Dim r As Range
Dim a As Long, b As Long, c As Long
Set wf = WorksheetFunction
With Target
st = .Address(False, False)
st = Left(.Address(0, 0), IIf(.Address(0, 0) Like "[A-Z][A-Z]*", 2, 1))
Select Case st
Case "B"
For Each r In Range("B2", Cells(Rows.Count, 2).End(xlUp))
If r.Value <> "" Then
a = wf.CountIfs(r, "<=1000")
b = wf.CountIfs(r, ">1000", r, "<=2000")
c = wf.CountIfs(r, ">2000", r, "<=3000")
End If
Next
Range("G3").Value = a
Range("G4").Value = b
Range("G5").Value = c
Set wf = Nothing
End Select
End With
End Sub

No.2ベストアンサー
- 回答日時:
こんにちは
処理ロジックを考え直す
For Each r In Range("B2", Cells(Rows.Count, 2).End(xlUp))
ループする必要はないように思います
ループで最後に条件 If r.Value <> "" Then に合致し、処理された結果のみが出力されています
Next
Range("G3").Value = a
Range("G4").Value = b
Range("G5").Value = c
rはループの要素なので範囲のセル要素ですね
COUNTIF(S)関数は範囲に対して条件でカウントします
= COUNTIFS(条件範囲1,"条件1",条件範囲2,"条件2",条件範囲3,"条件3"…)
ご質問の場合、条件範囲1・条件範囲2・・・は同じ範囲
これを踏まえて 簡単な添削をすると(ご質問の部分だけ)
Select Case st
Case "B"
Set r = Range("B2", Cells(Rows.Count, 2).End(xlUp))
If .Value <> "" Then
a = wf.CountIf(r, "<=1000") 'COUNTIF
b = wf.CountIfs(r, ">1000", r, "<=2000") 'COUNTIFS
c = wf.CountIfs(r, ">2000", r, "<=3000")
End If
Range("G3").Value = a
Range("G4").Value = b
Range("G5").Value = c
Set wf = Nothing
End Select
End With
いつもお世話になっております
a = wf.CountIf(r, "<=1000") 'COUNTIF
b = wf.CountIfs(r, ">1000", r, "<=2000") 'COUNTIFS
の使い分けが必要なのですね
ありがとうございました。
No.3
- 回答日時:
>下記のコードが動きません。
動かないを 正しく解が得られないと解釈した回答ですが
他の意味なら Changeイベントを使用するためのエラー回避策がコードにないので色々と問題があります
「動きません」の意味・事象を提示してください
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) Worksheet_Change 4 2023/03/12 21:54
- Visual Basic(VBA) ワークシートチェンジで曜日を表示する方法 1 2023/03/04 21:51
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
エクセルのマクロについて教え...
-
vbsでのwebフォームへの入力制限?
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
Vba セルの4辺について罫線が有...
-
【マクロ】並び替えの範囲が、...
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】開いているブックの...
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
算術演算子「¥」の意味について
-
VBA 入力箇所指定方法
-
【マクロ】モジュール変数の記...
-
Vba FileSystemObject オブジェ...
-
Excelのマクロについて教えてく...
-
【ExcelVBA】値を変更しながら...
-
vbaにてseleniumを使用したedge...
-
【ExcelVBA】値を変更しながら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Flash素材の設置方法についてお...
-
flashが表示されない・・:;
-
HTML
-
外部swfを読み込むとき、座標指...
-
別のファイル.swfへジャンプは...
-
フラッシュ画像が表示できません。
-
flash(.swf)を順番に切り替えし...
-
CSSにswfを埋め込む記述
-
flashでcgiなどからflashのtext...
-
HTMLからFLASHへデータを送る
-
ホームページビルダー10とフラ...
-
.swf のランダム表示の html記...
-
flash動画の保存方法
-
[FLASH] flashvarsについて教え...
-
フルFlash、swfファイルの読み...
-
▲▲HPのメーラーにフラッシュを...
-
FLASHバナーのjavascript化
-
.swfを自動再生されないように...
-
外部ムービーが読み込まれない
-
【VBA】マクロの入ったファイル...
おすすめ情報