반응형
수식 값의 범위를 복사하여 다른 시트의 특정 범위에 붙여넣는 방법은 무엇입니까?
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)을 가지고 있다면, 만약 당신의 파일을 가지고 있다면 오류가 발생할 것입니다.lastrow
3이 더 클 것입니다.
대신 이 코드를 사용해 보십시오.
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
반응형
'sourcecode' 카테고리의 다른 글
GCC 앨리어싱 확인/제한 포인터 포함 (0) | 2023.10.25 |
---|---|
WooCommerce 관리자 -> 주문 | 각 상품에 추가 확인란 (0) | 2023.10.25 |
Angular CLI를 로컬로 설치하는 방법(-g 플래그 없이) (0) | 2023.10.25 |
실행 중인 도커 구성에서 새 포트 추가 (0) | 2023.10.25 |
(빈 구조)의 크기와 (빈 배열을 가진 구조)의 크기의 차이? (0) | 2023.10.20 |