사용자 정의 함수를 구현해서 데이터를 리턴 받을 때 하나의 데이터가 아닌 배열로 받을 수 있습니다. 편리하게도 엑셀에서는 배열로 리턴 해도 시트에서 배열로 받지 않으면 첫 번째 인덱스의 값만 출력이 됩니다. 그럼 VBA 에서 배열을 리턴 하는 경우 전체 값을 받아서 표현할 수 있는 방법은 무엇일까요?
▼ 다음과 같이 사용자 정의 함수에서 배열을 리턴하는 경우 시트에서는 어떻게 받아야 모든 데이터를 출력할 수 있을 까요?
Function ArrayReturn() ArrayReturn = Array("최연혁", "김한석", "황준영", "권민지", "백세미", "민성식") End Function |
▼ ArrayReturn() 함수를 출력해 보겠습니다. fx 를 눌러 함수 마법사를 띄운 뒤 사용자 정의 범주로 가면 배열을 리턴하는 함수 ArrayReturn 이 있습니다.
▼ 결과는 위에서 이야기 했듯이 배열의 첫 번째 항목만 출력하고 에러는 나지 않습니다. 그럼 배열 전체를 출력하려면 어떻게 해야 할까요?
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 시트에서 데이터 셀 영역 구하기 ▶ 엑셀 VBA 셀 데이터 검색해서 찾기 ▶ 엑셀 VBA 입력된 값 형식 확인 Information 관련 함수 모음 ▶ 엑셀 VBA 날짜 데이터를 비교하거나 연산하기 ▶ 엑셀 VBA 데이터 분리해서 다른 시트에 붙여 넣기 |
▼ 이전에 “배열 수식”이라는 용어를 들어 보셨을 겁니다. 배열 수식은 배열에 있는 하나이상의 항목에서 여러 계산을 수행할 수 있는 수식으로 여러 결과를 반환할 수도 있고 하나의 결과만 반환할 수도 있습니다. 그러니까 수식에서 결과값이 배열로 리턴 되는 경우 모든 데이터를 표현할 수 있는 수식입니다. 표시하고 싶은 영역을 선택하고 Ctrl + Shift + Enter 를 누릅니다.
▼ 그럼 ArrayReturn() 에 배열 수식 표시가 됩니다. 수식 입력기 양쪽에 대괄호 “{} “ 로 둘러 싸는 것이죠. 리턴 받은 값은 선택한 영역만큼 출력이 됩니다.
▼ 삭제를 할 때도 배열 영역에서 하나의 셀만 삭제할 수는 없습니다. 그림과 같이 “배열의 일부분을 변경할 수 없다”는 에러가 납니다. 전체 영역을 선택하고 삭제를 해야 셀에서 제거할 수가 있습니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 시트에서 데이터 셀 영역 구하기 ▶ 엑셀 VBA 셀 데이터 검색해서 찾기 ▶ 엑셀 VBA 입력된 값 형식 확인 Information 관련 함수 모음 ▶ 엑셀 VBA 날짜 데이터를 비교하거나 연산하기 ▶ 엑셀 VBA 데이터 분리해서 다른 시트에 붙여 넣기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 마지막 행과 열의 수 찾기 (3) | 2023.06.22 |
---|---|
엑셀 VBA 셀에서 연속된 데이터 한 번에 선택 CurrentRegion, UsedRange 사용 (0) | 2023.06.21 |
엑셀 VBA 나머지를 구하기 위한 Mod 연산자와 몫 구하는 연산자 사용법 (0) | 2023.06.21 |
엑셀 VBA 함수 실행 중에 오류 처리하는 구문 On Error GoTo 사용하기 (0) | 2023.06.11 |
엑셀 VBA On Error GoTo 반복문에서 에러 거르기 (0) | 2023.06.09 |
엑셀 VBA 배열의 크기를 알아 내기 (0) | 2023.05.29 |
엑셀 VBA 반복문 Do Until 사용하기 (0) | 2023.05.28 |
엑셀 VBA 셀 데이터 검색해서 찾기 (8) | 2023.05.23 |