차례:
비디오: [엑셀_배열수식]vba에서 엑셀의 배열수식를 사용할 수 있는 방법이 있는지? 2024
배열 수식은 Excel의 가장 강력한 기능 중 하나입니다. 배열 수식에 익숙하다면 배열을 반환하는 VBA 함수를 만들 수 있다는 것을 알게되어 기쁩니다.
달 이름 배열 반환하기
간단한 예제부터 살펴 보겠습니다. MonthNames 함수는 12 요소 배열을 - 당신이 추측 한 - 달 이름을 반환합니다.
기능 MonthNames () MonthNames = Array ("January", "February", "March", "April", "May", "June", "July", "August" 10 월, 11 월, 12 월) End Function
워크 시트에서 MonthNames 함수를 사용하려면 12 셀 배열 수식으로 입력해야합니다. 예를 들어, A2: L2 범위를 선택하고 = MonthNames () 를 입력하십시오. 그런 다음 Ctrl + Shift + Enter를 눌러 선택한 12 개의 셀 모두에 배열 수식을 입력하십시오. 결과를 확인하십시오.
월 이름을 열에 표시하려면 열에서 12 개의 셀을 선택하고이 배열 수식을 사용하십시오.
= TRANSPOSE (MonthNames ())
배열에서 한 달을 선택할 수도 있습니다. 4 월 배열의 네 번째 요소 인 4 월을 표시하는 수식 (배열 수식 아님)이 있습니다.
= INDEX (MonthNames (), 4)정렬 된 목록 반환
다른 셀 범위에서 정렬 된 순서로 표시하려는 이름 목록이 있다고 가정합니다. 워크 시트 함수를 사용하는 것이 좋지 않습니까?
이 사용자 정의 함수는 다음을 수행합니다. 인수로 단일 열의 셀 범위를 취한 다음 정렬 된 셀의 배열을 반환합니다. 범위 A2: A13은 일부 이름을 포함합니다. 범위 C2: C13에이 멀티 셀 배열 수식이 포함되어 있습니다. Ctrl + Shift + Enter를 눌러 수식을 입력해야한다는 것을 기억하십시오.
Sorted 함수의 코드는 다음과 같습니다.
함수 Sorted (범위로 범위 지정) Dim SortedData () Variant로 Dim Cell As 범위 Dim Temp Variant로, i As Long, j As Long Long NonEmpty As Long '데이터가 RED에있는 각 셀에 대해 IsEmpty (셀)이 아닌 경우 NonEmpty = NonEmpty + 1 ReDim Preserve SortedData (1 To NonEmpty) SortedData (NonEmpty) = Cell. Value End If Next Cell '배열을 정렬합니다. i = 1 To NonEmpty For j = i + 1 To NonEmpty If SortedData (i)> SortedData (j) 그런 다음 Temp = SortedData (j) SortedData (j) = SortedData (i) SortedData (i) = Temp End if 다음 j 다음 i '배열을 조 변경하고 그것을 반환 Sorted = Application.Transpose (SortedData) End Function
Sorted 함수는 SortedData라는 배열을 만들어서 시작합니다. 이 배열에는 인수 범위에있는 비 공백 값이 모두 들어 있습니다. 그런 다음 SortedData 배열은 버블 정렬 알고리즘을 사용하여 정렬됩니다. 배열은 가로 배열이므로 함수에 의해 반환되기 전에이 배열을 옮겨야합니다.
정렬 된 함수는 단일 열 또는 행에있는 한 모든 범위의 범위에서 작동합니다. 정렬되지 않은 데이터가 행에 있으면 수식에서 Excel의 TRANSPOSE 함수를 사용하여 정렬 된 데이터를 가로로 표시해야합니다. 예:
= TRANSPOSE (정렬 (A16: L16))