배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Excel 버전:   공통
검색어:   참조
제목:   만수산 드렁칡같은 참조 끊기
     
 

New Page 2
  STEP> 따라하기


복잡한 작업을 엑셀로 하다 보면 많은 자료가 생기고 하나 이상의 엑셀파일을 이리 엮고 저리 참조하고 만수산 드렁칡만큼 복잡하게 됩니다. 그래서 참조하는 파일의 신변에 문제가 생기면 제대로 파일작업을 할 수 없게 됩니다.

오늘은 만수산 드렁칡같이 얽히고 설킨 참조와 피참조 관계를 청산하는 프로시져를 소개하고자 합니다.

다음의 프로시져는 외부 파일을 참조한 수식을 값으로 변경하여 외부 파일에 대한 의존을 없애는 작업을 합니다.

 Sub ReplaceExternalLinksWithValue()
    Dim rngCell As Range

    For Each rngCell In ActiveSheet.UsedRange.SpecialCells(xlFormulas)
      If InStr(rngCell.Formula, "[") Then
        rngCell.Formula = rngCell.Value
      End If
    Next
 End Sub

위의 코드에서

ActiveSheet.UsedRange.SpecialCells(xlFormulas)

은 현재 워크시트의 사용한 셀 영역중 수식이 있는 셀 영역을 가리킵니다. 즉 수식만 있는 작업대상영역을 지정하는 것이죠. 그래서 이 셀 영역에서 For Each~Next문을 사용하여 영역내 각 셀을 순회하게 됩니다.

그러나 수식이 있는 셀에 모두 외부참조를 하는 것은 아닐 겁니다. 그중에는 동일한 워크북 내 다른 워크시트는 다른 셀 영역을 참조하는 수도 있을 겁니다. 따라서 For루프를 도는 동안 외부 셀 참조의 신호라고 할 수 있는 [ 을 찾습니다.

If InStr(rngCell.Formula, "[") Then

이 문자가 발견된다는 것은 외부 셀을 참조하고 있다는 의미로 해석합니다. 문자열에서 특정 문자를 찾는 방법은 InStr()함수를 사용합니다.

 [ 를 발견하게 되면 해당 셀의 수식을 해당 셀의 값으로 바꾸면 됩니다. 다음의 코드는 실제로 수식의 연산결과를 값으로 변경하는 내용입니다.

rngCell.Formula = rngCell.Value

필자도 이러한 프로시져를 실제 사용하기도 하는데, 외부 셀을 참조하여 값을 가져오고 다시 셀 연결을 끊기 위해 사용했습니다. 빠르고 유용한 방법이라 여러분에게 권하고 싶었습니다.