Excel & IT Info

아이엑셀러 닷컴, 엑셀러TV

Excel

정말 대단한 Excel MAP 함수

권현욱(엑셀러) 2026. 2. 4. 17:00
반응형

들어가기 전에

Excel에서 같은 수식을 수백 행에 걸쳐 복사하는 것은 매우 지루하고 효율과는 거리가 먼 작업입니다. Excel의 MAP 함수는 한 번에 한 셀씩 수식을 적용하는 대신, 전체 데이터 범위를 한 번에 처리함으로써 시트를 깔금하게 만들고 작업 속도를 높일 수 있습니다. Excel의 MAP 함수를 사용하는 방법을 소개합니다.

 

참고로, MAP 함수는 Excel의 동적 배열 함수의 일부이며, Microsoft 365(Excel 365) 또는 Excel 2021 이상 버전에서 사용할 수 있습니다.

권현욱(엑셀러) | 아이엑셀러 닷컴 대표 · Microsoft MVP · 엑셀 솔루션 프로바이더 · 작가

 

아이엑셀러


이 글은 아래 기사 내용을 토대로 작성되었습니다만, 필자의 개인 의견이나 추가 자료들이 다수 포함되어 있습니다.

  • 원문: Excel’s MAP function is genius
  • URL: https://www.makeuseof.com/excel-map-function/

Excel MAP 함수 작동 방식

muo

 

MAP 함수는 다양한 데이터를 입력받아 전체 데이터 세트에 사용자 지정 계산을 한 번에 적용하며, 사용 구문은 다음과 같습니다.

=MAP(array, lambda)

 

  • array: 처리할 셀 범위. 단일 열, 여러 열 또는 전체 표일 수 있음. MAP 함수는 이 범위의 각 값을 반복
  • lambda: 계산을 정의하는 곳. MAP에 각 값을 어떻게 처리할지 알려주는 간단한 수식이라고 생각하면 되며, Excel의 LAMBDA 함수를 사용하면 수식을 반복하지 않고도 사용자 정의 논리를 사용하여 사람처럼 수식을 작성할 수 있음.

 

MAP을 실행하면 배열의 모든 셀에 람다 함수를 적용하여 새로운 결과 집합을 반환합니다. 출력은 입력 값의 크기와 모양과 일치하므로, 10개의 행을 입력하면 10개의 결과가 반환됩니다.

MAP이 기존 수식과 다른 점은 복사할 때 셀 참조가 바뀌는 것에 의존하지 않는다는 것입니다. 함수 내부에 로직이 고정되어 있기 때문에 셀을 이동할 때 실수로 수식이 손상될 위험이 없습니다.

 

MAP 함수가 실제로 작동하는 모습 보기

muo

 

제품 가격 목록이 있고 각 목록에 10%의 가격 인상을 추가해야 한다고 가정해 보겠습니다. 기존 방식이라면 =B2*1.1과 같은 수식을 작성하여 아래로 드래그하는 것이었을 것입니다.

 

하지만 MAP 함수는 이를 다르게 처리합니다. 개별 수식을 작성하는 대신 전체 가격 열을 처리하는 하나의 MAP 함수를 만듭니다.

=MAP(B2:B11, LAMBDA(price, price*1.1))

 

다음과 같은 작업이 수행됩니다. MAP은 B2:B11(가격 범위)의 각 값을 가져와 LAMBDA 함수에 전달합니다. LAMBDA는 각 값을 "price" 변수에 할당하고 1.1을 곱한 후 결과를 반환합니다. 이 모든 과정이 한 번에 이루어집니다.

이 방법의 장점은 여러 개의 수식을 만들지 않아도 되고, 데이터가 변경되면 MAP 함수가 자동으로 다시 계산된다는 것입니다.

LAMBDA 변수 이름은 원하는 대로 지정할 수 있습니다. 저는 명확해서 "price"를 사용했지만, "p"나 "x"도 똑같이 사용할 수 있습니다. 이 변수는 MAP이 배열을 처리할 때 각 값을 나타내는 자리 표시자일 뿐입니다.

 

MAP 함수에 더 많은 논리 추가하기

muo

 

MAP은 단순한 계산에만 국한되지 않습니다. LAMBDA 함수 내에 Excel 조건부 함수를 추가하여 데이터에 따라 다양한 시나리오를 처리할 수 있습니다.

가격에 따라 다른 마크업 비율을 적용하고 싶다고 가정해 보겠습니다. 100달러 이상 상품에는 10%, 그 이하 상품에는 15%의 마크업이 적용됩니다. 다음과 같이 작성합니다.

=MAP(B2:B11, LAMBDA(price, IF(price>=100, price*1.1, price*1.15)))

 

IF 문은 MAP이 각 가격을 처리할 때 이를 확인합니다. 가격이 100달러 이상이면 1.1을 곱하고, 그렇지 않으면 1.15를 곱합니다.

 

필요한 경우 더 많은 조건을 중첩할 수 있습니다. 세금 계산을 추가하거나, 단계별 할인을 적용하거나, 특정 소수 자릿수로 반올림하려면 LAMBDA 함수에 로직을 추가하기만 하면 됩니다. MAP 함수는 배열의 모든 값에 해당 로직을 적용합니다.

 

MAP 함수로 여러 열과 복잡한 텍스트 데이터 처리하기

muo

 

MAP은 단일 열 연산에만 국한되지 않습니다. 여러 배열을 인자로 전달하여 하나의 함수에서 함께 처리할 수 있습니다. 가격과 수량을 곱하여 총 매출을 계산하려는 경우, 별도의 수식 열을 만드는 대신 MAP을 사용하여 두 가지 모두를 처리합니다.

=MAP(B2:B11, C2:C11, LAMBDA(price, qty, price*qty))

 

MAP 함수는 두 개의 배열(B2:B11(가격)과 C2:C11(수량))을 입력받아 행 단위로 처리합니다. LAMBDA 함수는 두 값을 모두 입력받아 곱한 후 결과를 반환합니다.

MAP 함수를 사용하여 텍스트 데이터를 정리할 수도 있습니다. 제품 이름이 일관적이지 않은 경우(모두 대문자인 제품도 있고, 소문자인 제품도 있고, 공백이 많은 제품도 있음) 모든 것을 한 번에 쉽게 표준화할 수 있습니다.

=MAP(A2:A11, LAMBDA(text, PROPER(TRIM(text))))

 

이 수식은 불필요한 공백을 제거하고 각 제품 이름의 대소문자를 정확하게 변환합니다. TRIM은 앞뒤 공백을 제거하고, PROPER는 각 단어의 첫 글자를 대문자로 변환합니다. MAP은 두 함수를 범위 내 모든 셀에 동시에 적용합니다.

 

muo

 

마치며

MAP에 익숙해지면 REDUCE, SCAN, BYROW/BYCOL과 같은 다른 LAMBDA 도우미 함수를 더 쉽게 사용할 수 있습니다. 이 함수들은 모두 수식을 드래그하는 대신 사용자 지정 로직을 사용하여 배열을 처리하는 동일한 원리로 작동합니다. 작업 속도를 더 빠르게 하고 유지 관리하기도 쉬운 스프레드시트를 만들 수 있습니다.