기본 내장 함수 외 나만의 함수를 만들면 어떨까요?
행렬의 배열과 반복적인 작업을 코드를 작성하여 수행한다면 정말 효율적이겠죠?
오늘는 엑셀의 VBA를 활용한 특정 범위의 값을 판별하는 개인 함수 만들어 보겠습니다. 먼저 코드를 수정할 수 있는 엑셀 확장자 명인 매크로 사용 통합문서(//.xlsm)로 저장합시다. 그런 다음 코드를 수정하기 위해 다음의 절차를 따라주세요.
📍VBA 코드를 편집하기 위해서는 아래 그림과 같이, [EXCEL → 개발 도구 → 코드 보기]에서 모듈 추가하기 하면 된다.
MSC Patran/Nastran 해석 결과 유한 요소(Quad4)의 면내 쉘 포스(Shell Force)의 최대/최소 주응력 판별하는 VBA 함수 만들어 보겠습니다. 여기서 MSC Patran/Nastran은 컴퓨터 공학 엔지니어링 CAE 구조 해석 시뮬레이션 프로그램입니다. 구조 해석 결과는 텍스트 파일로 얻을 수 있고, 수계산으로 최대 최소 주응력을 판별해야하는 번거로움이 있습니다. 부득이하게도 엑셀의 일반 내장 함수로도 해결이 불가능할 경우와 지속적인 반복작업을 수행하는 경우, 우리는 엑셀의 파워풀한 매크로를 작성할 수 있습니다.
엑셀 워크시트(Worksheet)에 내장된 기본 함수(Function)은 아래 식과 같이 사용할 수 있습니다. 매크로 문법중 하나인 Application.WorksheetFunction.OOO 문법을 적용하면 매크로를 활용해 엑셀 시트에서 수식을 적용할 수 있다. 즉 코드만으로 엑셀 시트를 컨트롤 하는 것 이다. 다음은 코드의 전문이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Function principal(inputRange As Range) As Double 'range의 max principal 및 min principal 값 찾기 max_val = Application.WorksheetFunction.Max(inputRange) min_val = Application.WorksheetFunction.Min(inputRange) ' 절댓값 취하여 스칼라값 만들기 abs_max_val = Math.Abs(max_val) abs_min_val = Math.Abs(min_val) ' 스칼라 값 판별하여 벡터 크기 찾기 If abs_max_val >= abs_min_val Then principal = max_val Else principal = min_val End If End Function |
사용자가 정의한 동적 범위에서 최대/최소 주응력을 찾을 수 있는 간단한 함수를 만들어 보았다. 함수는 엑셀의 Cell에서 principal 함수를 명령하여 사용하면 된다.
댓글
댓글 쓰기