Home
Blog
Inquire

VBA

VBA--- エクセル:データを別のシートにバックアップ


 以下は、「データ」シートのA列に「○」が入力されているデータを「backupData」シートに移記し、元のデータを削除(説明は省略)

 Sub data_backup()
  Dim orowcnt,endrowcnt,rowcnt,endcolcnt,colcnt As Long
  orowcnt = Worksheets("backupData").Range("A1048576").End(xlUp).Row + 1
  With Worksheets("データ")
   endrowcnt = .Range("A1048576").End(xlUp).Row
   For rowcnt = 1 to endrowcnt
    If .Cells(rowcnt,1) = "○" Then
     endcolcnt = .Range("XFD" & rowcnt).End(xlToLeft).Column
     Worksheets("backupData").Cells(rowcnt,1) = Now()
     For colcnt = 2 to endcolcnt
      Worksheets("backupData").Cells(orowcnt,colcnt) = .Cells(rowcnt,colcnt)
     Next colcnt
     orowcnt = orowcnt + 1
    End If
   Next rowcnt
   For rowcnt = endrowcnt To 2 step -1
    If .Cells(rowcnt,1) = "○" Then
     .Rows(rowcnt).delete
    End If
   Next rowcnt
  End With
 End Sub

 以下は、「データ」シートの下方に「backupData」シートから抽出したデータのうち復元したい行にカーソルを合わせて、マクロを実行すると 上方の表の最終行の次行に「backupData」シートから移記

 Sub restoreData()
  Dim rowcnt,endcolcnt,colcnt As Long
  rowcnt = ActiveCell.Row
  With Worksheets("データ")
   endrowcnt = .Range("A1").End(xlDown).Row + 1
   endcolcnt = .Range("XFD" & rowcnt).End(xlToLeft).Columns
   For colcnt = 1 To endcolcnt
    .Cells(endrowcnt,colcnt) = .Cells(rownt,colcnt)
   Next colcnt
  End With
 End Sub
    
   


©2018KanazawaNoSakai