- ベストアンサー
VBAで複数行の転記を簡潔に!
- Excel VBAで複数行のデータを一行で転記する方法を紹介します。
- YouTubeで紹介された手法を応用し、変数を使用せずに値の転記を行う具体例を解説します。
- 初心者でもできる簡潔なVBAコードを使って、効率的にデータを転記する方法について考察します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
回答No.1の訂正です。 If分があるのを見落としてました Sub Test() Dim i As Long Dim CtrRow As Long CtrRow = 2 For i = 2 To 62 If Worksheets("領収証").Range("B" & i).Value = "南1班" Then Worksheets("領収証班別").Range("A" & CtrRow & ":E" & CtrRow).Value = Worksheets("領収証").Range("A" & i & ":E" & i).Value CtrRow = CtrRow + 1 End If Next End Sub もしくは Sub Test2() Dim i As Long Dim CtrRow As Long Dim Ws1 As Worksheet, ws2 As Worksheet Set Ws1 = Worksheets("領収証班別") Set ws2 = Worksheets("領収証") CtrRow = 2 For i = 2 To 62 If Worksheets("領収証").Range("B" & i).Value = "南1班" Then Ws1.Range(Ws1.Cells(CtrRow, "A"), Ws1.Cells(CtrRow, "E")).Value = ws2.Range(ws2.Cells(i, "A"), ws2.Cells(i, "E")).Value CtrRow = CtrRow + 1 End If Next '中略 Set Ws1 = Nothing Set ws2 = Nothing End Sub
その他の回答 (1)
- kkkkkm
- ベストアンサー率66% (1733/2603)
次の '出力行の開始位置を設定 CtrRow = 24 がなぜ24なのか分かりませんが 2行目から62行目までを代入でしたら CtrRow = 2 i = 62 「領収証」の範囲A2からE62を「領収証班別」の範囲A2からE62に代入するとして CtrRow = 2 i = 62 Worksheets("領収証班別").Range("A" & CtrRow & ":E" & i).Value = Worksheets("領収証").Range("A" & CtrRow & ":E" & i).Value でいいのではないでしょうか。 以下のようにすると、以後シート名はWs1とかWs2とかで記載できます Sub Test() Dim i As Long Dim CtrRow As Long Dim Ws1 As Worksheet, ws2 As Worksheet Set Ws1 = Worksheets("領収証班別") Set ws2 = Worksheets("領収証") CtrRow = 2 i = 62 Ws1.Range(Ws1.Cells(CtrRow, "A"), Ws1.Cells(i, "E")).Value = ws2.Range(ws2.Cells(CtrRow, "A"), ws2.Cells(i, "E")).Value 中略 Set Ws1 = Nothing Set ws2 = Nothing End Sub
お礼