목차
값의 열이나 행을 2차원 배열로 변환하는 가장 빠른 방법은 WRAPCOLS 또는 WRAPROWS 함수를 사용하는 것입니다.
Excel 초창기부터 숫자를 계산하고 분석하는 데 매우 능숙합니다. 그러나 배열을 조작하는 것은 전통적으로 어려운 일이었습니다. 동적 배열의 도입으로 배열 수식의 사용이 훨씬 쉬워졌습니다. 이제 Microsoft는 배열을 조작하고 재구성하는 새로운 동적 배열 함수 세트를 출시합니다. 이 튜토리얼에서는 WRAPCOLS 및 WRAPROWS와 같은 두 가지 함수를 사용하여 열 또는 행을 2D 배열로 즉시 변환하는 방법을 알려줍니다.
Excel WRAPCOLS 함수
Excel의 WRAPCOLS 함수는 값의 행 또는 열을 행당 지정된 값 수에 따라 2차원 배열로 변환합니다.
구문에는 다음과 같은 인수가 있습니다.
WRAPCOLS(vector, wrap_count, [pad_with])여기서:
- vector (필수) - 소스 1차원 배열 또는 범위.
- wrap_count (필수) - 열당 최대 값 수.
- pad_with (선택) - 채울 항목이 충분하지 않은 경우 마지막 열로 채울 값입니다. 생략하면 누락된 값이 #N/A(기본값)로 채워집니다.
예를 들어 범위 B5:B24를 열당 5개의 값이 있는 2차원 배열로 변경하려면 수식:
=WRAPROWS(B5:B24, 5)
벡터 인수는 1차원 배열이 아닙니다.
#NUM! error
wrap_count 값이 0 또는 음수이면 #NUM 오류가 발생합니다.
#SPILL! error
대부분의 경우 #SPILL 오류는 빈 셀이 충분하지 않아 결과를 유출할 수 없음을 나타냅니다. 이웃 셀을 지우면 사라집니다. 오류가 계속 발생하면 Excel에서 #SPILL의 의미와 해결 방법을 확인하십시오.
엑셀에서 WRAPCOLS 및 WRAPROWS 함수를 사용하여 1차원 범위를 2차원 배열로 변환하는 방법입니다. 읽어 주셔서 감사합니다. 다음 주 블로그에서 뵙기를 바랍니다!
다운로드용 실습 워크북
WRAPCOLS 및 WRAPROWS 기능 - 예제(.xlsx 파일)
모든 단일 셀에 수식을 입력하면 자동으로 필요한 만큼 많은 셀에 쏟아집니다. WRAPCOLS 출력에서 값은 wrap_count값을 기준으로 위에서 아래로 세로로 정렬됩니다. 개수에 도달하면 새 열이 시작됩니다.
Excel WRAPROWS 함수
Excel의 WRAPROWS 함수는 지정한 행당 값의 수에 따라 값의 행 또는 열을 2차원 배열로 변환합니다.
구문은 다음과 같습니다.
WRAPROWS(vector, wrap_count, [pad_with])여기서:
- vector (필수) - 소스 1차원 배열 또는 범위.
- wrap_count (필수) - 행당 최대 값 수.
- pad_with (선택) - 채울 값 채울 항목이 충분하지 않은 경우 마지막 행으로. 기본값은 #N/A입니다.
예를 들어 범위 B5:B24를 각 행에 5개의 값이 있는 2D 배열로 변환하려면 수식은 다음과 같습니다.
=WRAPROWS(B5:B24, 5)
유출 범위의 왼쪽 상단 셀에 수식을 입력하면 다른 모든 셀이 자동으로 채워집니다. WRAPROWS 함수는 wrap_count 값을 기준으로 값을 왼쪽에서 오른쪽으로 가로로 정렬합니다. 개수에 도달하면 새 행을 시작합니다.
WRAPCOLS 및 WRAPROWS 가용성
두 기능 모두 Microsoft 365용 Excel(Windows 및 Mac) 및 웹용 Excel에서만 사용할 수 있습니다.
이전버전에서는 기존의 더 복잡한 수식을 사용하여 열에서 배열로 및 행에서 배열로 변환을 수행할 수 있습니다. 이 자습서에서는 대체 솔루션에 대해 자세히 설명합니다.
팁. 2D 배열을 단일 열 또는 행으로 변경하는 것과 같은 반전 작업을 수행하려면 각각 TOCOL 또는 TOROW 함수를 사용하십시오.
Excel에서 열/행을 범위로 변환하는 방법 - 예
이제 기본 사용법을 파악했으므로 몇 가지 구체적인 사례를 자세히 살펴보겠습니다.
열 또는 행당 최대 값 수 설정
원래 데이터의 구조에 따라 열(WRAPCOLS) 또는 행(WRAPROWS)으로 재정렬하는 것이 적합할 수 있습니다. 어떤 함수를 사용하든 각 열/행의 최대 값 수를 결정하는 것은 wrap_count 인수입니다.
예를 들어 범위 B4:B23을 2D 배열로 변환하려면 각 열에 최대 10개의 값이 있도록 다음 수식을 사용합니다.
=WRAPCOLS(B4:B23, 10)
각 행에 최대 4개의 값이 있도록 동일한 범위를 행별로 재정렬하려면 수식은 다음과 같습니다. :
=WRAPROWS(B4:B23, 4)
아래 이미지는 이것이 어떻게 보이는지 보여줍니다.
결과 배열에서 누락된 값 채우기
채울 값이 부족한 경우 결과 범위의 모든 열/행, WRAPROWS 및 WRAPCOLS는 2D 배열의 구조를 유지하기 위해 #N/A 오류를 반환합니다.
기본값을 변경하려면동작을 위해 선택적 pad_with 인수에 대한 사용자 정의 값을 제공할 수 있습니다. 채울 데이터가 충분하지 않은 경우 대시가 있는 행에 다음 수식을 사용합니다.
=WRAPROWS(B4:B21, 5, "-")
누락된 값을 길이가 0인 문자열(공백)로 바꾸려면 수식은 다음과 같습니다.
=WRAPROWS(B4:B21, 5, "")
pad_with 가 생략된 기본 동작(D5의 공식)과 결과를 비교하십시오.
여러 행을 2D 범위로 병합
몇 개의 개별 행을 단일 2D 배열로 결합하려면 먼저 HSTACK 함수를 사용하여 행을 수평으로 쌓은 다음 WRAPROWS 또는 WRAPCOLS를 사용하여 값을 래핑합니다.
예를 들어 3개의 행(B5:J5, B7:G7 및 B9:F9)과 각각 10개의 값을 포함하는 열로 줄 바꿈합니다. 수식은 다음과 같습니다.
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
여러 행의 값을 각 행에 5개의 값이 포함된 2D 범위, 수식은 다음 형식을 취합니다.
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
C 여러 열을 2D 배열로 ombine
여러 열을 2D 범위로 병합하려면 먼저 VSTACK 함수를 사용하여 세로로 쌓은 다음 값을 행(WRAPROWS) 또는 열(WRAPCOLS)로 래핑합니다.
예를 들어 3개 열(B5:J5, B7:G7 및 B9:F9)의 값을 각 열에 10개의 값이 포함된 2D 범위로 결합하려면 공식은 다음과 같습니다.
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
동일한 열을 각 행에 5개의 값이 포함된 2D 범위로 변환하려면 다음 공식을 사용합니다.
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
배열 래핑 및 정렬
소스 범위에 값이 있는 경우 출력을 임의 순서로 정렬하려면 다음과 같이 진행하십시오.
- SORT 기능을 사용하여 원하는 방식으로 초기 배열을 정렬합니다.
- 정렬된 배열을 WRAPCOLS에 제공합니다. 또는 WRAPROWS.
예를 들어 범위 B4:B23을 각각 4개의 값이 있는 행으로 래핑하고 결과 범위를 A부터 Z까지 정렬하려면 다음과 같은 수식을 구성합니다.
=WRAPROWS(SORT(B4:B23), 4)
동일한 범위를 각 열에 10개의 값으로 묶고 출력을 사전순으로 정렬하려면 공식은 다음과 같습니다.
=WRAPCOLS(SORT(B4:B23), 10)
결과는 다음과 같습니다. :
팁. 결과 배열의 값을 내림차순 으로 정렬하려면 SORT 함수의 세 번째 인수( sort_order )를 -1로 설정합니다.
Excel 365용 WRAPCOLS 대안 - 2010
WRAPCOLS 함수가 지원되지 않는 이전 Excel 버전에서는 고유한 수식을 작성하여 1차원 배열의 값을 열로 래핑할 수 있습니다. 이것은 5개의 서로 다른 기능을 함께 사용하여 수행할 수 있습니다.
행을 2D 범위로 변환하는 WRAPCOLS 대안:
IFERROR(IF(ROW(A1)> n , "" , INDEX( row_range , , ROW(A1) + (COLUMN(A1)-1)* n )), "")열을 2D로 변환하기 위한 WRAPCOLS 대안 범위:
IFERROR(IF(ROW(A1)> n ,"", INDEX( column_range , ROW(A1) + (COLUMN(A1)-1)* n )), "")여기서 n 는 열당 최대 값 수입니다.
아래 이미지에서 다음 수식을 사용하여 1행 범위(D4:J4)를 3행 배열로 변환합니다.
=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")
그리고 이 공식은 1열 범위(B4:B20)를 5행 배열로 변경합니다.
=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")
위 솔루션은 유사한 WRAPCOLS 공식을 에뮬레이트합니다. 동일한 결과를 생성합니다:
=WRAPCOLS(D4:J4, 3, "")
및
=WRAPCOLS(B4:B20, 5, "")
동적 배열 WRAPCOLS 함수와 달리 기존 수식은 다음을 따릅니다. 하나의 공식 하나의 셀 접근 방식. 따라서 첫 번째 수식을 D8에 입력하고 아래로 3행, 오른쪽으로 3열을 복사합니다. 두 번째 수식을 D14에 입력하고 아래로 5행, 오른쪽으로 4열을 복사합니다.
이 수식이 작동하는 방식
두 수식의 핵심에는 행 및 열 번호를 기반으로 제공된 배열에서 값을 반환하는 INDEX 함수가 사용됩니다.
INDEX(array, row_num, [column_num])1행 배열을 다루므로 row_num 인수를 생략할 수 있으므로 기본값은 1입니다. col_num 수식이 복사되는 각 셀에 대해 자동으로 계산됩니다. 이를 수행하는 방법은 다음과 같습니다.
ROW(A1)+(COLUMN(A1)-1)*3)
ROW 함수는 A1 참조의 행 번호(1)를 반환합니다.
COLUMN 함수는 다음의 열 번호를 반환합니다.역시 1인 A1 참조. 1을 빼면 0이 됩니다. 그리고 0에 3을 곱하면 0이 됩니다.
그런 다음 ROW에서 반환된 1과 COLUMN에서 반환된 0을 더하면 결과가 1이 됩니다.
이렇게 하면 위의 INDEX 공식이 -대상 범위(D8)의 왼쪽 셀은 다음 변환을 거칩니다.
INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3))
이
INDEX($D$4:$J$4, ,1)
로 변경되고 첫 번째 열의 값을 반환합니다. 지정된 배열의 D4.
수식이 D9 셀에 복사되면 상대 셀 참조는 행과 열의 상대 위치에 따라 변경되지만 절대 범위 참조는 변경되지 않습니다.
INDEX($D$4:$J$4,, ROW(A2)+(COLUMN(A2)-1)*3))
은
INDEX($D$4:$J$4,, 2+(1-1)*3))
이
INDEX($D$4:$J$4,, 2))
으로 바뀌고 E4에서 "Apricots"인 지정된 배열의 두 번째 열.
IF 함수는 행 번호를 확인하고 지정한 행 수(이 경우 3)보다 크면 빈 문자열( ""), 그렇지 않으면 INDEX 함수의 결과:
IF(ROW(A1)>3, "", INDEX(…))
마지막으로 IFERROR 함수는 #REF! 수식이 실제로 필요한 것보다 더 많은 셀에 복사될 때 발생하는 오류입니다.
열을 2D 범위로 변환하는 두 번째 수식은 동일한 논리로 작동합니다. 차이점은 INDEX에 대한 row_num 인수를 파악하기 위해 ROW + COLUMN 조합을 사용한다는 것입니다. 이 경우에는 col_num 매개변수가 필요하지 않습니다.소스 배열의 한 열.
WRAPROWS Excel 365의 대안 - 2010
Excel 2019 및 이전 버전에서 1차원 배열의 값을 행으로 래핑하려면 다음을 사용할 수 있습니다. WRAPROWS 함수에 대한 다음 대안.
행을 2D 범위로 변환:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( row_range , , COLUMN(A1)+(ROW(A1)-1)* n )), "")열을 2D 범위로 변경:
IFERROR(IF( COLUMN(A1)> n , "", INDEX( column_range , COLUMN(A1)+(ROW(A1)-1)* n )) , "")여기서 n 은 행당 최대 값 수입니다.
샘플 데이터 세트에서 다음 수식을 사용하여 한 행 범위(D4 :J4)를 3열 범위로 변환합니다. 수식이 D8 셀에 들어간 다음 3열과 3행에 복사됩니다.
=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")
1열 범위(B4:B20)를 5열 범위로 변경하려면 D14에 아래 수식을 입력하고 5열 4행으로 드래그합니다.
=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")
Excel 365에서 동등한 WRAPCOLS 수식을 사용하여 동일한 결과를 얻을 수 있습니다.
=WRAPROWS(D4:J4, 3, "")
및
=WRAPROWS(B4:B20, 5, "")
이 수식이 작동하는 방식
본질적으로 이러한 수식은 이전 예에서와 같이 작동합니다. 차이점은 INDEX 함수에 대한 row_num 및 col_num 좌표를 결정하는 방법에 있습니다.
INDEX($D$4:$J$4,, COLUMN(A1)+(ROW(A1)-1)*3))
대상 범위(D8)의 왼쪽 셀에 다음을 사용합니다.식:
COLUMN(A1)+(ROW(A1)-1)*3)
이 다음으로 변경됨:
1+(1-1)*3
및 제공 1.
결과적으로 아래 수식은 "Apples"인 지정된 배열의 첫 번째 열에서 값을 반환합니다.
INDEX($D$4:$J$4,, 1)
지금까지 결과는 이전과 동일합니다. 예시. 그러나 다른 셀에서는 어떤 일이 발생하는지 살펴보겠습니다...
D9 셀에서 관련 셀 참조는 다음과 같이 변경됩니다.
INDEX($D$4:$J$4,, COLUMN(A2)+(ROW(A2)-1)*3))
따라서 수식은 다음과 같이 변환됩니다.
INDEX($D$4:$J$4,, 1+(2-1)*3))
은
INDEX($D$4:$J$4,, 4))
이 되고 G4에서 "Cherries"인 지정된 배열의 4번째 열에서 값을 반환합니다.
IF 함수는 열 번호를 확인하고 지정한 열 수보다 크면 빈 문자열("")을 반환하고, 그렇지 않으면 INDEX 함수의 결과:
IF(COLUMN(A1)>3, "", INDEX(…))
마무리로 IFERROR는 #REF를 방지합니다! 실제로 필요한 것보다 더 많은 셀에 수식을 복사하면 "추가" 셀에 오류가 표시되지 않습니다.
WRAPCOLS 또는 WRAPROWS 기능이 작동하지 않음
"래핑" 기능을 사용할 수 없는 경우 Excel에서 오류가 발생하거나 오류가 발생하면 다음 이유 중 하나일 가능성이 큽니다.
#NAME? error
Excel 365에서 #NAME? 함수 이름을 잘못 입력하여 오류가 발생할 수 있습니다. 다른 버전에서는 해당 기능이 지원되지 않음을 나타냅니다. 해결 방법으로 WRAPCOLS 대안 또는 WRAPROWS 대안을 사용할 수 있습니다.
#VALUE! error
다음과 같은 경우 #VALUE 오류가 발생합니다.