hiko-blog

VBA業務改善

MENU

Sheet1からSheet2に列AからGのデータをコピーする方法の例

Sub CopyData1()
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Dim lastRow As Long
    
    ' ソースシート(コピー元のシート)とターゲットシート(コピー先のシート)を設定
    Set sourceSheet = ThisWorkbook.Sheets("Sheet1")
    Set targetSheet = ThisWorkbook.Sheets("Sheet2")
    
    ' ソースシートの最終行を取得
    lastRow = sourceSheet.Cells(sourceSheet.Rows.Count, "A").End(xlUp).Row
    
    ' ソースシートからデータをコピーしてターゲットシートに貼り付け
    sourceSheet.Range("A2:G" & lastRow).Copy targetSheet.Range("A2")
    
    ' コピーが完了したことをメッセージボックスで通知
    MsgBox "Data has been copied successfully.", vbInformation
End Sub

 

'//転記先が連続した列でない場合

Sub CopyData2()
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Dim lastRow As Long
    Dim targetColumn As Integer
    
    ' ソースシート(コピー元のシート)とターゲットシート(コピー先のシート)を設定
    Set sourceSheet = ThisWorkbook.Sheets("Sheet1")
    Set targetSheet = ThisWorkbook.Sheets("Sheet2")
    
    ' ソースシートの最終行を取得
    lastRow = sourceSheet.Cells(sourceSheet.Rows.Count, "A").End(xlUp).Row
    
    ' ターゲットシートの開始列を指定
    targetColumn = 1 ' 例:A列から開始
    
    ' ソースシートからデータをコピーしてターゲットシートに貼り付け
    sourceSheet.Range("A2:G" & lastRow).Copy targetSheet.Cells(2, targetColumn)
    
    ' コピーが完了したことをメッセージボックスで通知
    MsgBox "Data has been copied successfully.", vbInformation
End Sub

 

'//各列の転記先が連続ではなく、指定された列に転記される場合

Sub CopyData2()
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Dim lastRow As Long
    Dim targetColumn As Integer
    Dim i As Integer
    
    ' ソースシート(コピー元のシート)とターゲットシート(コピー先のシート)を設定
    Set sourceSheet = ThisWorkbook.Sheets("Sheet1")
    Set targetSheet = ThisWorkbook.Sheets("Sheet2")
    
    ' ソースシートの最終行を取得
    lastRow = sourceSheet.Cells(sourceSheet.Rows.Count, "A").End(xlUp).Row
    
    ' ターゲットシートにおける各列の開始位置を設定
    Dim targetColumns() As Variant
    targetColumns = Array("C", "G", "J", "L", "O", "R", "U")
    
    ' ソースシートからデータをコピーしてターゲットシートに貼り付け
    For i = 1 To 7 ' ソースシートの列数
        sourceSheet.Range(sourceSheet.Cells(2, i), sourceSheet.Cells(lastRow, i)).Copy targetSheet.Cells(2, targetColumns(i - 1))
    Next i
    
    ' コピーが完了したことをメッセージボックスで通知
    MsgBox "Data has been copied successfully.", vbInformation
End Sub

 

'//各列の転記先に特定の値を転記する条件を追加

Sub CopyData()
    Dim sourceSheet As Worksheet
    Dim targetSheet As Worksheet
    Dim lastRow As Long
    Dim targetColumn As Integer
    Dim i As Integer
    
    ' ソースシート(コピー元のシート)とターゲットシート(コピー先のシート)を設定
    Set sourceSheet = ThisWorkbook.Sheets("Sheet1")
    Set targetSheet = ThisWorkbook.Sheets("Sheet2")
    
    ' ソースシートの最終行を取得
    lastRow = sourceSheet.Cells(sourceSheet.Rows.Count, "A").End(xlUp).Row
    
    ' ターゲットシートにおける各列の開始位置を設定
    Dim targetColumns() As Variant
    targetColumns = Array("C", "G", "J", "L", "O", "R", "U")
    
    ' ソースシートからデータをコピーしてターゲットシートに貼り付け
    For i = 1 To 7 ' ソースシートの列数
        sourceSheet.Range(sourceSheet.Cells(2, i), sourceSheet.Cells(lastRow, i)).Copy targetSheet.Cells(2, targetColumns(i - 1)).Resize(lastRow - 1)
    Next i
    
    ' 追加の条件:特定の値を特定の列に転記
    targetSheet.Range("D2:D" & lastRow).Value = 111
    targetSheet.Range("H2:H" & lastRow).Value = 222
    targetSheet.Range("I2:I" & lastRow).Value = 333
    targetSheet.Range("M2:M" & lastRow).Value = 444
    targetSheet.Range("P2:P" & lastRow).Value = 555
    targetSheet.Range("S2:S" & lastRow).Value = 666
    targetSheet.Range("V2:V" & lastRow).Value = 777
    
    ' コピーが完了したことをメッセージボックスで通知
    MsgBox "Data has been copied successfully.", vbInformation
End Sub