worksheetfunction에 없는 엑셀함수 사용하기

application.worksheetfuction 을 사용하면, 왠만한 엑셀함수를 VBE에서 사용할수 있다.
문제는 당연히(?) 없는 함수도 있다는 점인데, 그냥 생각해보면 VBA에서 셀에다가 그냥 수식 텍스트가 입력되게 하면 될 것 같다…. 확신은 없지만..

우선, worksheetfuction을 써보자.

Cells(1, 2).Value = Application.WorksheetFunction.Sum(1, 2)



요 식은 이런 텍스트를 쳤을때와 동일한 효과일 것이다.

=sum(1,2)



이런 형태의 수식을 적어보는건 어떨까..?

=HYPERLINK("#’"&“Sheet2”&"’!A1",“GO”)



특수문자는 쌍따옴표 안에 넣어 텍스트로 처리하거나, (=, &, ! 등) chr 함수로 사용할 수 있다. char함수는 엑셀함수에서 아스키코드를 반환하게 되는데, 마찬가지로 vba에서는 chr로 기재를 해줘야 한다.

myimg



수식이 길어지면 헤깔리기 때문에, 나의 경우에는 chr함수를 사용하는 쪽으로 작성했다.
예를 들어, 첫 서두, =HYPERLINK(" 까지를

"=HYPERLINK(""" 이렇게 써도 되고,
Chr(61) & "HYPERLINK(""" 이렇게 써도 된다는 뜻이다.

이런식으로 변환하게 되면 아래와 같다. 하이퍼링크 함수이기 때문에 이런식으로, 미리 txt 변수를 만들어 주었다.

Dim txt As String
txt = Cells(2, 4).Value

myimg



한줄로 쓰면 이런식이 되겠다.

Chr(61) & “HYPERLINK(”"" & Chr(35) & “’”"" & Chr(38) & """" & txt & """" & Chr(38) & “”"’!A1"",““GO””)"



원래 쌍따옴표때문에, 복잡한 수식인데, 더 복잡해 졌다.

Sub test()
Dim txt As String
    txt = Cells(2, 4).Value

    Cells(1, 2).Value = Application.WorksheetFunction.Sum(1, 2)
    Cells(2, 2).Value = _
    "=HYPERLINK(""" & Chr(35) & "'""" & Chr(38) & """" & txt & """" & Chr(38) & """'!A1"",""GO"")"

End Sub


실행해보면, 잘 실행이 되고, 하이퍼링크 기능도 잘 된다.

myimg



그냥 생각만으로 썼는데, 더 쉬운 방법을 알고 계신다면, 그거 사용하시면 될듯 ㅋㅋ

끝.