sourcecode

수식 값의 범위를 복사하여 다른 시트의 특정 범위에 붙여넣는 방법은 무엇입니까?

codebag 2023. 10. 25. 23:18
반응형

수식 값의 범위를 복사하여 다른 시트의 특정 범위에 붙여넣는 방법은 무엇입니까?

Excel 매크로를 작동시키려고 하는데 포뮬러가 포함된 셀에서 값을 복사하는 데 문제가 있습니다.

지금까지 이것이 제가 가지고 있는 것이고 비-포뮬러 세포와 잘 작동합니다.

Sub Get_Data()
    Dim lastrow As Long

    lastrow = Sheets("DB").Range("A65536").End(xlUp).Row + 1

    Range("B3:B65536").Copy Destination:=Sheets("DB").Range("B" & lastrow)
    Range("C3:C65536").Copy Destination:=Sheets("DB").Range("A" & lastrow)
    Range("D3:D65536").Copy Destination:=Sheets("DB").Range("C" & lastrow)
    Range("E3:E65536").Copy Destination:=Sheets("DB").Range("P" & lastrow)
    Range("F3:F65536").Copy Destination:=Sheets("DB").Range("D" & lastrow)
    Range("AH3:AH65536").Copy Destination:=Sheets("DB").Range("E" & lastrow)
    Range("AIH3:AI65536").Copy Destination:=Sheets("DB").Range("G" & lastrow)
    Range("AJ3:AJ65536").Copy Destination:=Sheets("DB").Range("F" & lastrow)
    Range("J3:J65536").Copy Destination:=Sheets("DB").Range("H" & lastrow)
    Range("P3:P65550").Copy Destination:=Sheets("DB").Range("I" & lastrow)
    Range("AF3:AF65536").Copy Destination:=Sheets("DB").Range("J" & lastrow)

End Sub

수식 값을 붙이도록 하려면 어떻게 해야 합니까?

이것을 변경/최적화 할 수 있다면 저도 감사하겠습니다.

변경가능합니다.

Range("B3:B65536").Copy Destination:=Sheets("DB").Range("B" & lastrow)

로.

Range("B3:B65536").Copy 
Sheets("DB").Range("B" & lastrow).PasteSpecial xlPasteValues

그건 그렇고, xls 파일(excel 2003)을 가지고 있다면, 만약 당신의 파일을 가지고 있다면 오류가 발생할 것입니다.lastrow3이 더 클 것입니다.

대신 이 코드를 사용해 보십시오.

Sub Get_Data()
    Dim lastrowDB As Long, lastrow As Long
    Dim arr1, arr2, i As Integer

    With Sheets("DB")
        lastrowDB = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
    End With

    arr1 = Array("B", "C", "D", "E", "F", "AH", "AI", "AJ", "J", "P", "AF")
    arr2 = Array("B", "A", "C", "P", "D", "E", "G", "F", "H", "I", "J")

    For i = LBound(arr1) To UBound(arr1)
        With Sheets("Sheet1")
             lastrow = Application.Max(3, .Cells(.Rows.Count, arr1(i)).End(xlUp).Row)
             .Range(.Cells(3, arr1(i)), .Cells(lastrow, arr1(i))).Copy
             Sheets("DB").Range(arr2(i) & lastrowDB).PasteSpecial xlPasteValues
        End With
    Next
    Application.CutCopyMode = False
End Sub

참고, 위 코드는 비어 있지 않은 마지막 행을 결정합니다.DB난의 시트A()lastrowDB)에서 각 행 열에 대한 마지막 행을 찾아야 할 경우DB시트, 다음 수정 사항 사용:

For i = LBound(arr1) To UBound(arr1)
   With Sheets("DB")
       lastrowDB = .Cells(.Rows.Count, arr2(i)).End(xlUp).Row + 1
   End With

   ' NEXT CODE

Next

대신 다음 접근 방식을 사용할 수도 있습니다.Copy/PasteSpecial.교체하다

.Range(.Cells(3, arr1(i)), .Cells(lastrow, arr1(i))).Copy
Sheets("DB").Range(arr2(i) & lastrowDB).PasteSpecial xlPasteValues

와 함께

Sheets("DB").Range(arr2(i) & lastrowDB).Resize(lastrow - 2).Value = _
      .Range(.Cells(3, arr1(i)), .Cells(lastrow, arr1(i))).Value

시트의 각 열을 다른 시트에 복사하는 경우는 어떻습니까?예: 시트 1의 B행에서 시트 1의 B행으로, 시트 2의 B행에서 C행으로...

언급URL : https://stackoverflow.com/questions/21648122/how-do-i-copy-a-range-of-formula-values-and-paste-them-to-a-specific-range-in-an

반응형