VBA Macro/VBA Excel

[엑셀VBA] 1차원 배열의 역배열(Reverse Array) 반환하기

루아흐뉴마 2022. 11. 5. 21:05
반응형
  • 1차원 배열의 역순으로 바뀐 배열을 반환하는 함수이다.
  • Sub 모듈은 함수를 테스트하는 용도로 넣어본 모듈이다.
  • Function 내용은 주석을 참고하면 된다.


매크로 Output(없음)

 


VBA Code

 
Option Explicit
Sub test()  '함수 테스트용 모듈
 
Dim x() As Variant
Dim y() As Variant
Dim i As Long
 
x = Array(1, 2, 3, 4, 5)
y = getReverseArr(x)
 
For i = LBound(y) To UBound(y)
  Debug.Print y(i)  '5, 4, 3, 2, 1
Next
 
End Sub
 
Public Function getReverseArr(src As Variant, Optional period As Long) As Variant
 
Dim srcTemp() As Variant
Dim size As Long
Dim i As Long
 
If period > 0 Then  'period를 옵션으로 넣을 경우 해당값만큼만 잘라서 반환
  size = period
Else
  size = UBound(src)  'period를 생략하면 원본배열 전체를 역순으로 반환
End If
 
ReDim Preserve srcTemp(size)  '역순으로 담을 임시배열
 
For i = LBound(srcTemp) To UBound(srcTemp)  '원본 배열의 역순으로 임시배열에 삽입
  srcTemp(i) = src(UBound(srcTemp) - i + LBound(srcTemp))
    'Option Base가 1인 경우, 즉 배열 Index가 1로 시작하는 경우를 고려하여 LBound(srcTemp)를 더해줌
Next i
 
getReverseArr = srcTemp
 
End Function


매크로 실행 동영상(없음)

 

 

 Copyright (2022) Ruahneuma. All Rights Reserved.

 

반응형