반환 배열에 VBA 기능을 만들기
제목에서 알 수 있듯이 Excel에서 배열을 반환하는 사용자 정의 함수를 만드는 방법을 배웁니다. 우리는 이미`link : / vba-user-defined-functions [VBA에서 사용자 정의 함수 생성]`방법을 배웠습니다. 따라서 시간을 낭비하지 않고 자습서를 시작하겠습니다.
배열 함수 란 무엇입니까?
배열 함수는 사용될 때 배열을 반환하는 함수입니다. 이 함수는 CTRL + SHIFT + ENTER 키 조합과 함께 사용되며 이것이 배열 함수 또는 수식을 CSE 함수 및 수식으로 호출하는 것을 선호하는 이유입니다.
엑셀 배열 함수는 종종 다중 셀 배열 수식입니다. 한 가지 예는`link : / mathematical-functions-excel-transpose-function [TRANSPOSE function]`입니다.
VBA에서 UDF 배열 함수 만들기
따라서 시나리오는 ThreeEven () 함수를 사용하여 처음 3 개의 짝수를 반환하려는 것입니다.
코드는 다음과 같습니다.
Function ThreeEven() As Integer() 'define array Dim numbers(2) As Integer 'Assign values to array numbers(0) = 0 numbers(1) = 2 numbers(2) = 4 'return values ThreeEven = numbers End Function
워크 시트에서이 함수를 사용하겠습니다.
You can see that, we first select three cells (horizontally, for vertical we have to use two-dimensional array. We have it covered below.). Then we start writing our formula. Then we hit CTRL+SHIFT+ENTER. This fills the selected cells with the array values.
참고 :
-
실제로 얼마나 많은 세포가 필요한지 알 수 없습니다. 이 경우 항상 예상 배열 길이보다 많은 셀을 선택하십시오. 이 함수는 셀을 배열로 채우고 추가 셀은 # N / A 오류를 표시합니다.
-
기본적으로이 배열 함수는 값을 수평 배열로 반환합니다.
세로 셀을 선택하려고하면 모든 셀에 배열의 첫 번째 값만 표시됩니다.
어떻게 작동합니까?
배열 함수를 만들려면이 구문을 따라야합니다.
Function functionName(variables) As returnType() dim resultArray(length) as dataType 'Assign values to array here functionName =resultArray End Function
함수 선언은 위에 정의 된 것과 같아야합니다. 이것은 그것이 배열 함수임을 선언했습니다.
워크 시트에서 사용하는 동안 Ctrl + Shift + Enter 키 조합을 사용해야합니다. 그렇지 않으면 배열의 첫 번째 값만 반환합니다.
수직 배열을 반환하는 VBA 배열 함수
UDF 배열 함수가 수직으로 작동하도록하려면 많은 작업을 수행 할 필요가 없습니다. 배열을 2 차원 배열로 선언하기 만하면됩니다. 그런 다음 첫 번째 차원에서 값을 추가하고 다른 차원은 비워 둡니다. 이것이 당신이하는 방법입니다 :
Function ThreeEven() As Integer() 'define array Dim numbers(2,0) As Integer 'Assign values to array numbers(0,0) = 0 numbers(1,0) = 2 numbers(2,0) = 4 'return values ThreeEven = numbers End Function
이것이 워크 시트에서 사용하는 방법입니다.
===
UDF Array Function with Arguments in Excel* In the above examples, we simply printed sum static values on the sheet.
함수가 범위 인수를 받아들이고 일부 작업을 수행하고 결과 배열을 반환하기를 원한다고 가정 해 보겠습니다.
예
범위의 모든 값에 “-done”추가 이제이 작업을 쉽게 수행 할 수 있지만 사용자 정의 VBA 배열 함수를 사용하여 문제를 해결하는 방법을 보여 드리려고합니다.
그래서 여기에서는 범위를 인수로 취하고 범위의 모든 값에 “-done”을 추가하는 배열 함수를 원합니다. 이것은`link : / tips-concatenate-formula-in-microsoft-excel [concatenation function]`을 사용하여 쉽게 수행 할 수 있지만 여기서는 배열 함수를 사용합니다.
Function CONCATDone(rng As Range) As Variant() Dim resulArr() As Variant 'Create a collection Dim col As New Collection 'Adding values to collection On Error Resume Next For Each v In rng col.Add v Next On Error GoTo 0 'completing operation on each value and adding them to Array ReDim resulArr(col.Count - 1, 0) For i = 0 To col.Count - 1 resulArr(i, 0) = col(i + 1) & "-done" Next CONCATDone = resulArr End Function
설명 :
위의 함수는 범위를 인수로 받아들이고 범위의 각 값에 “-done”을 추가합니다.
여기에서 VBA 컬렉션을 사용하여 배열의 값을 보유한 다음 각 값에 대해 작업을 수행하고 2 차원 배열에 다시 추가 한 것을 볼 수 있습니다.
네, 이것이 배열을 반환 할 수있는 사용자 지정 VBA 배열 함수를 만드는 방법입니다. 충분히 설명이 되었기를 바랍니다. 이 기사와 관련하여 질문이 있으시면 아래 댓글 섹션에 입력하십시오.
작업 파일을 다운로드하려면 아래 링크를 클릭하십시오.
`link : /wp-content-uploads-2019-12-Create-VBA-Function-to-Return-Array-1.xls [__ 배열을 반환하는 VBA 함수 생성]
관련 기사 :
link : / vba-user-defined-function [VBA를 통한 사용자 정의 함수 생성 방법]
| Excel`link : / custom-functions-userdefined-functions-from-other-workbooks-using-vba-in-microsoft-excel | Excel의 다른 통합 문서에서 사용자 정의 함수 사용`link : / custom-functions-return-error-values-from-user-defined-functions-using-vba-in-microsoft-excel [Return error values from user-defined Microsoft Excel에서 VBA를 사용하는 함수]
| 사용자 정의 함수에서 오류 값을 반환하는 방법 알아보기
인기 기사 :
link : / keyboard-formula-shortcuts-50-excel-shortcuts-to-increase-your-productivity [50 Excel 단축키로 생산성 향상]
link : / formulas-and-functions-introduction-of-vlookup-function [Excel의 VLOOKUP 함수]
link : / tips-countif-in-microsoft-excel [Excel 2016의 COUNTIF]
link : / excel-formula-and-function-excel-sumif-function [Excel에서 SUMIF 함수 사용 방법]