728x90

엑셀의 최신 버전인 Microsoft Office 365나 EXCEL2019 혹은 그 이상 버전에서 작동하는 함수입니다.

LAMBDA 함수는 특수한 함수로 최신 버전에서만 동작합니다.

사용자가 직접 정의한 함수를 만들어서 복잡하거나 반복되는 수식을 쉽게 처리할 수 있습니다.

 

LAMBDA([parameter1, parameter2, …], calculation) : 매개변수인 parameter를 활용하여 calculation에 입력된 계산을 수행합니다. 한번 입력하면 두번째에는 매개변수만으로 동작합니다.

 

  • [parameter1, parameter2, …] : 파라미터로 문자열을 입력하고 함수에 입력할 숫자를 나타냅니다. 최대 253개의 매개변수를 입력할 수 있고, 매개변수의 이름에는 마침표(.)의 사용이 불가능합니다.
  • calculation : 매개변수를 사용해서 만들공식입니다. 사칙연산과 지수를 포함하여 계산 함수들도 사용할 수 있고 PI() 같은 상수함수도 입력이 가능합니다. 다만 명확하게 결과가 나오게 구성해야 합니다.
  • 명확하게 결과만 나오면 Array 형태의 여러가지 값이 반환되도록 구성할 수도 있습니다.

 

타원의 넓이 S = A x B x  π

 

예를 들기 위해서 타원의 넓이 공식을 사용해 보겠습니다.

넓이 "S = A x B x π" 이고 이걸 LAMBDA함수로 만드는 법을 알아 보겠습니다.

 

320x100

 

 

<사용법>

 

① 먼저 [수식] - [이름 정의]를 선택합니다.

 

다른방법으로 이름을 정의해도 무방합니다.

어떻게든 "새 이름" 창만 만들면 됩니다.

 

이름정의를 클릭합니다.

 

 

② 새 이름에서 LAMBDA 함수를 입력합니다.

 

"이름"에는 새로 만들 함수의 이름을 입력하고, "참조대상" 부분에 LAMBDA 함수를 사용합니다.

여기에 참조대상을 입력할 때는 오타가 나기 쉬우니 다른 곳에 먼저 작성하여 복사 붙여넣기하는 것이 좋습니다.

 

새 이름 매뉴

 

 

③ 만든 함수를 사용한다.

 

Area라는 이름으로 만들었으니 그대로 사용하면됩니다.

만들어진 함수에도 일반 함수처럼 가이드가 달립니다.

이번에는 매개변수가 두 개니까 숫자 두 개를 입력하면 받아서 입력한 계산을 수행합니다.

 

함수 사용하기

 


 

예시로는 단순한 공식을 사용했지만 상당히 긴 공식도 사용할 수 있습니다.

게다가 이름으로 남기면 다른 파일로 전달하기도 쉽습니다.

다만, 최신버전에서만 작동하는 점은 주의가 필요합니다.

반응형
728x90
320x100

 

VBA를 써서 가장 많이 하는 일중 하나는 함수를 만드는 것입니다.

엑셀에서 없는 함수를 한번 만들어서 문서에 저장해두면 여러 번 사용할 수 있습니다.

 

 

① 개발도구를 엽니다.

 

개발도구를 활성화 시키는건 링크 참고바랍니다.

(링크 : 엑셀(EXCEL) 개발 도구 활성화하고 VBA 시작하기, Visual Basic Application 에디터 열기)

활성화된 [개발도구] 탭에서 [Visual Basic]을 선택합니다.

 

개발도구

 

 

② 모듈을 추가합니다.

 

보통 프로젝트 탐색기가 열려있습니다.

하지만 닫혀 있다면, [상단매뉴] - [보기] - [프로젝트 탐색기]를 활성화 시키면 됩니다.

그리고 VBAProject를 오른쪽 클릭해서 [삽입] - [모듈]을 만듭니다.

 

새 모듈 만들기

 

 

③ 새 모듈을 활성화 시킵니다.

 

열면 활성화 됩니다.

더블클릭해서 열 수도 있습니다.

 

모듈 활성화 하기

 

 

④ 이제 소스코드를 입력합니다.

 

"Function 함수명(매개변수) 리턴 형식"으로 프로젝트를 열면 함수로 입력됩니다.

 

Function Changestar(inputString As String) As String
    Dim outputString As String
    Dim i As Integer
    Dim charCount As Integer
    
    q = 3    '"*"으로 변경할 확률입니다. 1이면 100%, 숫자가 커질수록 확률이 낮아 집니다.
    k = 1
   
    For i = 1 To Len(inputString)
        If Mid(inputString, i, 1) <> " " Then ' 공백 문자는 변경하지 않음
            charCount = Int((q * Rnd()) + 1)    '랜덤함수는 1, 2, 3 ~ q까지입니다.
            outputString = outputString & IIf(charCount = 1, "*", Mid(inputString, i, 1))   'charCount가 1이면 글자가 *로 바뀝니다.
            k = k + IIf(charCount = 1, 1, 0)
        Else
            outputString = outputString & Mid(inputString, i, 1)
        End If
    Next i
    
    If k = 1 Then   '하나도 변하지 않을 때는 첫번째 글자 하나만 *으로 변경합니다.
    
        outputString = "*" & Right(outputString, Len(outputString) - 1)
    
    End If
    
    
    Changestar = outputString '출력할 값을 지정합니다.
End Function

 

 

⑤ 함수를 확인합니다.

 

이제 엑셀 시트에가서 함수를 확인합니다.

새로운 함수를 인식하고 바로 고침해주고 

 

함수가 작동합니다.

 

예시01.xlsm
0.02MB

 

 

 

 

반응형

+ Recent posts