振替日はH列から始まるということでよければ
以下と思います。
Option Explicit
Sub sample()
Dim RowCnt As Long
Dim ColCnt As Long
Dim PutCnt As Long
Dim GetWsh As Worksheet
Dim PutWsh As Worksheet
Dim DatCol As Long
With ThisWorkbook
Set GetWsh = .Sheets("Sheet1")
Set PutWsh = .Sheets("Sheet2")
End With
RowCnt = 2
PutCnt = 4
PutWsh.Rows("5:999").Delete '出力行範囲削除
Do
If GetWsh.Cells(RowCnt, 1).Value = "" Then Exit Do
ColCnt = 8 '振替日が埋まる最初の列番号
Do
If GetWsh.Cells(RowCnt, ColCnt).Value = "" Then Exit Do
If GetWsh.Cells(RowCnt, ColCnt).Value >= _
PutWsh.Cells(2, 1).Value Then
PutCnt = PutCnt + 1
PutWsh.Cells(PutCnt, 1).Value = _
GetWsh.Cells(RowCnt, 1).Value
For DatCol = 2 To 6
PutWsh.Cells(PutCnt, DatCol).Value = _
GetWsh.Cells(RowCnt, DatCol + 1).Value
Next DatCol
Exit Do
End If
ColCnt = ColCnt + 2
Loop
RowCnt = RowCnt + 1
Loop
End Sub
・振替日が指定日以降か?をチェックする
・振替日は、E列から右方向、1列おきに、左詰め
という条件、かつ、VBAでよければ
以下のコードでいかがでしょうか。
Sub sample()
Dim RowCnt As Long
Dim ColCnt As Long
Dim PutCnt As Long
Dim GetWsh As Worksheet
Dim PutWsh As Worksheet
With ThisWorkbook
Set GetWsh = .Sheets("Sheet1")
Set PutWsh = .Sheets("Sheet2")
End With
RowCnt = 2
ColCnt = 5
PutCnt = 4
PutWsh.Rows("5:999").Delete '出力行範囲削除
Do
If GetWsh.Cells(RowCnt, 1).Value = "" Then Exit Do
ColCnt = 5
Do
If GetWsh.Cells(RowCnt, ColCnt).Value = "" Then Exit Do
If GetWsh.Cells(RowCnt, ColCnt).Value >= _
PutWsh.Cells(2, 1).Value Then
PutCnt = PutCnt + 1
PutWsh.Cells(PutCnt, 1).Value = _
GetWsh.Cells(RowCnt, 1).Value
PutWsh.Cells(PutCnt, 2).Value = _
GetWsh.Cells(RowCnt, 3).Value
PutWsh.Cells(PutCnt, 3).Value = _
GetWsh.Cells(RowCnt, 4).Value
Exit Do
End If
ColCnt = ColCnt + 2
Loop
RowCnt = RowCnt + 1
Loop
End Sub
質問者
補足
HohoPapa様
本当にありがとうございます。感謝以外の言葉が見つかりません…。
もしお許しいただけるようであれば、今一度お力をお借りすることはできませんでしょうか。
Sheet1のC列「番号」の部分なのですが、現在「銀行名」「支店名」「種目」「口座番号」を合わせたものを記入しています。Sheet1のC列(名前)とD列(口座)の間に、3列足して、それぞれを単独で入力した場合も、Sheet2に同じように抽出することは可能でしょうか。
Sheet1
A B C D E F G
1 契番 契約日 名前 銀行名 支店名 種目 番号
2 11111 2020/1/1 〇 □ △ ● ■
Sheet2
1 振替予定日
2 (日付入力)
3
4 契約番号 名前 銀行名 支店名 種目 番号
5 11111 〇 □ △ ● ■
最初のご回答をいただいただけでも満足しなければならないのは十二分に承知しております。ただ、もし可能ならばと欲がでてしまいました。
本当に申し訳ありません。
今ひとたびのご教示の程、よろしくお願い申し上げます。
お礼
本当にありがとうございます! ただいま出先の為、実際に利用させていただくのは明日となりますが、お礼だけでも先にと投稿させていただきました。 貴重なお時間を使ってご回答・ご教示いただき、心から感謝申し上げます。