컴퓨터/엑셀

Cells(Rows.Count, "A").End(3)(2)의 의미

풍경소리^^ 2017. 9. 27. 16:40

http://blog.naver.com/rosa0189/60145634878




Cells(Rows.Count, "A").End(3)(2) : 제일 뒤의 (2)는 Item property를 이용한 이동이다. Item property에서 셀 이동 좌표는 아래와 같다. 그러므로 제일 마지막의 (2)는 아래로 한 칸 내려간 셀을 선택하라는 의미이다. 즉, 전체 데이터의 마지막행 바로 아래행을 가리킨다(이는 물론 기존 데이터의 제일 마지막행 바로 아래행에 새로운 데이터를 입력 즉 append 할 때 빈번히 사용된다.). 결국, .End(3)(2)는 .End(3)(2, 1)과 동일하며 이를 약식으로 표현한 것이다.

다시말해,
= Cells(Rows.Count,1).End(3).Cells(2,1)
= Cells(Rows.Count, 1).End(3)(2,1)
= Cells(Rows.Count,1).End(3)(2)
위의 3가지 다른 코드표시 방법은 동일한 결과를 얻는다.

(Offset 과의 차이점에 주의 : Item 속성에서의 (1, 1) 은 자기 자신이 되지만, Offset 속성에서의 자기자신은 (0, 0) 이며, Offset(1, 1)은 오른쪽 아래 셀이된다. 일반적으로 Offset을 시킬 때 Offset(2, 0)을 약식으로 표기하면 Offset(2)가 된다. 그리고, Offset(0, 2)의 약식표기는 Offset(, 2) 이다. ) 
 


End(3) : 아래에서 위로 올라가면서 만난 셀
End(3)(2) : 아래에서 위로 올라가면서 만난 셀의 바로 아래셀
End(3)(3) : 아래에서 위로 올라가면서 만난 셀의 2칸 아래셀
End(1)(1, 3) : 오른쪽에서 왼쪽으로 이동하다가 만난 셀의 오른쪽 2칸 떨어진 위치의 셀
End(4) : 아래로 내려가다가 처음 만난 위치의 셀

  1.  
    (참고로, 윗 표에서 초록색 선택하고 ActiveCell(2, 2).Activate 하면
    노란색으로된 "Item"셀이 활성화 되고, 아무셀이나 선택 후 Selection(2, 2).Activate하면 선택영역의 오른쪽 아래셀이 활성화 된다. 에러가 아니다.)
     

종합하면, Cells(Rows.Count, "A").End(3)(2) 는 (1048576, "A") 또는 (1048576, 1) 셀, 다시 말하면 A1048576 셀로 부터 계속하여 윗셀로 위치를 이동하다가 내용이 입력된 셀을 만나면 바로 그 아래셀을 선택하는 것. 즉, 전체 데이터 중 A열의 마지막 데이터 바로 아래에 있는 셀을 가리킨다.