2012-12-06 3 views
0

복사 붙여 넣기 매크로를 실행하고 있지만 실행하면 수식의 범위가 마지막 행까지 계속 변경됩니다.VBA 복사 실행시 절대 수식 범위가 변경됨 + 매크로 붙여 넣기

예를 들어 내 원래 VLOOKUP 공식은 $D$2:$G$5000에서 보이지만 매크로를 실행하면 $D$2:$G$1254으로 변경됩니다. 여기서 1254는 데이터가있는 마지막 행입니다.

Sub START1() 

Dim shCurrentWeek As Worksheet 
Dim shPriorWeek As Worksheet 
Dim lr As Long 

Set shCurrentWeek = ActiveWorkbook.Sheets("Current Week") 
Set shPriorWeek = ActiveWorkbook.Sheets("Prior Week") 
lr = shCurrentWeek.Range("A" & Rows.Count).End(xlUp).Row 

'Copies Current Week into Prior Week and deletes Rows in Prior week 

shCurrentWeek.Range("A4:X" & lr).Copy 
shPriorWeek.Range("A2").PasteSpecial xlPasteValues 
shPriorWeek.Range("A" & lr - 2 & ":A10000").EntireRow.Delete 

End Sub 

아이디어 : 여기

는 복사 + 붙여 넣기 기능입니다?

+3

행을 삭제하면 절대 참조를 사용하는 경우에도 삭제 된 행을 참조하는 수식이 Excel에서 자동으로 조정됩니다. 행을 지우지 말고 지우십시오. –

+0

1254에서 5000까지의 행이 어쨌든 삭제되는 경우 왜 중요합니까? 조회는 여전히 1254가 마지막 데이터 행인 것처럼 작동합니다. –

+0

네,하지만 새 데이터를 삽입하는 다른 매크로를 실행하면 새 데이터가 문제가되는 1254 행을 지나칠 수 있습니다. – kmiao91

답변

0

수식은 항상 원하는 행을 참조하므로 INDIRECT() 함수를 사용할 수 있습니다. 당신이 당신의 두 번째 페이지에있는 모든 공식을 받고되지 않습니다하지만 오류의 마지막 행에 놓여 있도록 pastevalues를 사용하는 처음에는

=SUM(INDIRECT("A1:A6")) 
0

: 다음은 간단한 예제 (길 더 자세한 정보를 원하시면 this link를 참조하십시오) 귀하의 코드

shPriorWeek.Range("A" & lr - 2 & ":A10000").EntireRow.Delete 

삭제하려는 범위와 수식이 겹치기 때문에 자동으로 vlookup 수식이 조정됩니다.

값을 붙여 넣기 전에 데이터를 삭제하는 것이 좋습니다.

* 수식이 페이지에 이미있는 경우 주석을 읽은 다음 편집하면이 솔루션이 작동하지 않으며 대신 팀의 제안에 따라 clearcontents를 사용합니다.

관련 문제