いつもお世話になっております
下記のコードが動きません。
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 SelStart、SelLen教えてく...
-
【VBA】マクロの入ったファイル...
-
A列に記載されているフォルダ...
-
VBA listBoxから
-
ExcelVBA シート名を複数セルか...
-
現在のブックを閉じないで、マ...
-
Outlookの「受信日時」「送信者...
-
ユーザーフォームに別シートか...
-
VBAコンボボックスで選択した値...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
Outlookの「受信日時」「件名」...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
Excelのマクロでワードのテキス...
-
【ExcelVBA】インデックスが有...
-
VBA 別ブックからコピペしたい...
-
VBA実行後に元のセルに戻りたい
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
countifsについての質問
-
HTMLからFLASHへデータを送る
-
FlashからFlashへのPOST送信で...
-
ホームページ作成ソフトKompoZe...
-
SWFが更新されない。
-
▲▲HPのメーラーにフラッシュを...
-
e-taxで送信ファイルの拡張子が...
-
サポートされたファイル形式お...
-
PDFファイルの倍率を変えて保存...
-
個別に違う添付ファイルを付け...
-
【VBA】マクロの入ったファイル...
-
Googleマップに保存した地点が...
-
スマホでtxtファイルを編集する...
-
エクセルで「特定の文字を含む...
-
A4の紙に印刷されている文字を...
-
Fortniteのクラッシュについて
-
ビデオファイルのプロパティの...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
ガラケーからPCへの写真の取り込み
-
情けない話ですが成田エクスプ...
おすすめ情報