Excel VBA 質問スレッド №2078 (解決済)
指定した行範囲をループする方法
投稿者 : るふぃ 投稿日時 : 2025/02/08(Sat) 01:12:57 OS : 未指定 EXCEL : 未指定
下記画像のように、縦に日付が続くシートがあります。
この日付列の第1週だけをループするマクロを作りたいのですが、ご教授いただけないでしょうか?
イメージは、4行目~10行目ループした後step25し、35行目~41行目ループした後step25し.....最終行まで繰り返すです。
そもそも無理なことなのかもしれませんが、よろしくお願いします。
画像:https://ibb.co/s9VZQ1CX
作成マクロ:
下記画像のように、縦に日付が続くシートがあります。
この日付列の第1週だけをループするマクロを作りたいのですが、ご教授いただけないでしょうか?
イメージは、4行目~10行目ループした後step25し、35行目~41行目ループした後step25し.....最終行まで繰り返すです。
そもそも無理なことなのかもしれませんが、よろしくお願いします。
画像:https://ibb.co/s9VZQ1CX
作成マクロ:
Sub macro()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim count As Long
Dim test As String
test = "大阪"
Set ws = ThisWorkbook.ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
count = 0
For i = 1 To lastRow
If ws.Cells(i, 2).Value = test Then
count = count + 1
End If
Next i
ws.Cells(1, 3).Value = count
End Sub
スポンサーリンク
[返信 1] Re : 指定した行範囲をループする方法
投稿者 : とおりすがり 投稿日時 : 2025/02/08(Sat) 04:59:16
Forステートメントのいろんな使い方を覚えましょう
Forステートメントのいろんな使い方を覚えましょう
Sub sample()
For i = 4 To Cells(Rows.Count, "B").End(xlUp).Row Step 31
For j = i To i + 6
Debug.Print j; Cells(j, "B")
Next
Next
End Sub
[返信 2] Re : 指定した行範囲をループする方法
投稿者 : ピロリ 投稿日時 : 2025/02/08(Sat) 11:33:45
■[質問] るふぃさん(2025-02-08 01:12:57)の記事
> イメージは、4行目~10行目ループした後step25し、35行目~41行目ループした後step25し.....最終行まで繰り返す
1つのループで上のような考え方なら↓下のようにも記述できますが、[返信 1] とおりすがりさんの2重ループの方が
分かり易いコードですね。
■[質問] るふぃさん(2025-02-08 01:12:57)の記事
> イメージは、4行目~10行目ループした後step25し、35行目~41行目ループした後step25し.....最終行まで繰り返す
1つのループで上のような考え方なら↓下のようにも記述できますが、[返信 1] とおりすがりさんの2重ループの方が
分かり易いコードですね。
Sub macro()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim count As Long
Dim test As String
Dim d As Long 'これを追加
test = "大阪"
Set ws = ThisWorkbook.ActiveSheet
lastRow = ws.Cells(ws.Rows.count, "A").End(xlUp).Row
count = 0
d = 1 'これを追加
For i = 4 To lastRow '4行目からループさせましょう
If ws.Cells(i, 2).Value = test Then
count = count + 1
End If
If d = 7 Then 'ここから、
i = i + 24
d = 0
End If
d = d + 1 'ここまで追加
Next i
ws.Cells(1, 3).Value = count
End Sub
[返信 3] Re : 指定した行範囲をループする方法
投稿者 : 通行人 投稿日時 : 2025/02/09(Sun) 14:40:21
CountIf関数を使って、こんな感じでも。
CountIf関数を使って、こんな感じでも。
Sub macro2()
Dim ws As Worksheet
Dim i As Long
Dim count As Long
Dim test As String
test = "大阪"
Set ws = ThisWorkbook.ActiveSheet
count = 0
For i = 4 To ws.Cells(Rows.count, "A").End(xlUp).Row Step 31
count = count + WorksheetFunction.CountIf(ws.Cells(i, "B").Resize(7, 1), test)
Next i
ws.Cells(1, "C").Value = count
End Sub
[返信 4] Re : 指定した行範囲をループする方法
投稿者 : るふぃ 投稿日時 : 2025/02/12(Wed) 12:12:51
とおりすがり様
ピロリ様
通行人様
おかげさまで解決いたしました。
ありがとうございます。
とおりすがり様
ピロリ様
通行人様
おかげさまで解決いたしました。
ありがとうございます。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2026-01-30 07:03:34 )