본문 바로가기
지난 게시글

[VBA] 엑셀 매크로 & VBA 기초(원하는 영역 복사, 참조와 복사)

by yyDandy 2023. 2. 22.
반응형
안녕하세요. yyDandy입니다.

 


1. 원하는 영역 복사하기

 

이전 글에서 Select을 이용하여 C4:C7까지 영역을 복사하는 방법을 알려드렸는데요. 그런데 만약 C8, C9 .. 더 늘어난다면 매번 코드를 수정해야 할까요? 한 번에 지정하는 방법이나 혹은 Ctrl+A 같은 기능이 있다면 편하지 않을까요? 오늘 알려드릴 게 바로 그런 기능인데요.

 

Range("C3").CurrentRegion.Copy

 

을 입력해볼게요. 그리고 F5를 눌러서 실행해보면..! E4부터 E7까지 복사된게 보이실텐데요. 그런데 문제가 생겼죠?

이렇게 한줄씩 밀려서 복사가 되셨을텐데요. 그건 바로 복사위치 때문이에요. 이전 글에서 복사 위치지정을 E4로 했어요. 그리고 복사되는 영역이 C4:C7 이었지만, CurrentRegion 은 Ctrl+A 랑 같은 역할이라서 C3부터 C7까지 복사가 되게 되죠. 따라서 위치를 수정해주셔야 해요 !

 

Range("E3").Select
ActiveSheet.Paste

 

 

그런데 만약 열이 여러 개라면 어떻게 해야할까요? 혹은 전체범위에서 일부만 옮기고 싶다면 어떻게 할까요?

 

Range("C3").CurrentRegion.Columns(1).Copy

 

그럴 때는 이런식으로 활용하게 되는데요. 바로 CurrentRegion. 뒤에 Columns(열번호)를 붙여주는 거에요. 열번호 1이라는 것은 C3에서 Ctrl+A를 눌렀을 때 제일 왼쪽에 해당하는 열이겠죠? 2개 이상을 지정할 때는 ("A:B") 이렇게 활용도 가능해요. 이렇게 실행을 해보면 1,3,5,7 적힌 부분이 B열에 있지만, 상대적인 위치는 1번에 해당하니 A열이 아닌 B 데이터가 복사돼요. 그리고 데이터를 붙여 넣으려는데 마지막 위치가 항상 달라질 경우에 어떻게 하는지 알려드릴게요.

 

Range("C3", Range("C1048576").End(xlUp)).Select

 

우선 이렇게 입력을 해보면 C열 전체가 선택이 돼요. 설명을 해드리면 C3에서 마지막까지 밑에서 위로 선택이에요.

 

 

2. 참조와 복사

데이터의 값만 복사하고 싶은 경우가 있을텐데요. 그럴 땐 값만 복사하기(PasetSpecial Paste:=xlPasteValues)를 이용할 수도 있지만, 수식은 따라가지 않는다는 점이 있어요. 그럴 땐 참조를 이용할 수 있는데요. 참조에 대해 알아볼게요. 하지만 참조를 알기 전에는 복사에 대해 먼저 알 필요가 있어요. 복사는 Ctrl + C에요. 엄청 많이 해보셨을텐데요.

 

Range("Cell").Value = Range("Cell").Value

 

반응형

 

말 그대로 Range("Cell")의 값(Value)를 지정된 곳에 그대로 옮기는 것 뿐이에요. 참조를 하기 위해서는 단순히 Cell 이 아닌 Range(Row:Column)을 이용하게 돼요.

 

Range("Cell:Cell").Value = Range("Cell:Cell").Value

 

그냥 해서는 차이를 모를 수 있지만 채우기를 한 상태에서 두 개를 비교해보면

 

 

이렇게 차이가 있어요. 참조와 복사를 때에 맞춰 쓴다면 더 효율적인 작업을 할 수 있겠죠?

반응형