Excel & IT Info

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

Excel

여러분의 두뇌를 뒤흔들(좋은 의미로) 엑셀의 새로운 함수 4가지

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

들어가기 전에

Microsoft가 Excel에 LAMBDA 함수를 처음 추가했을 때, 처음에는 별로 신경쓰지 않았지만 사용해 본 후 놀라게 됩니다. LAMBDA 함수와 함께 아래에서 소개하는 함수들을 사용하면 여러 단계의 번거로운 수식이나 복잡한 VBA를 작성하지 않고도 다양한 작업을 할 수 있습니다. Excel에는 LAMBDA 도우미 함수가 일곱 가지가 있지만, 가장 많이 사용되는 4가지 함수를 소개합니다.

 

LAMBDA 함수를 사용해 본 적이 없다면 이러한 도우미 함수가 어렵게 느껴질 수 있습니다. LAMBDA 함수를 사용하기 위해 LAMBDA에 대해 깊이 파고들 필요는 없습니다. 하지만 진행하기 전에 이러한 수식을 사용하려면 Excel 365 또는 Excel 2024를 사용하고 있는지 확인하세요(Excel 2021 이하 버전은 지원하지 않음).

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

 

아이엑셀러


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

  • 원문: Excel’s new group of functions will break your brain in a good way
  • URL: https://www.makeuseof.com/excel-byrow-bycol-scan-reduce-guide/

1. BYCOL

muo

 

열은 제품, 행은 월, 셀은 판매 실적을 나타내는 광범위한 판매 데이터를 처리한다고 가정해 보겠습니다. 각 제품의 총 판매 실적을 구해야 하는 경우, 제품 A의 판매 실적이 B2:B6 에 있다고 가정할 때, 가장 먼저 작성해야 할 수식은 B7 셀에 다음과 같습니다.

=SUM(B2:B6)

 

제품이 20개라면 20개의 수식을 별도로 작성해야 합니다. 장점은 수식을 인접 셀에 복사하기만 하면 되므로 시간이 많이 걸리지 않는다는 것입니다. 단점은 스프레드시트가 복잡해지고, 나중에 수식을 업데이트하기가 더 어려워지며, 오류 발생 위험이 높아진다는 것입니다.

또는 BYCOL 함수를 사용할 수 있습니다. 이 함수는 배열이나 범위의 각 열에 사용자 지정 함수(LAMBDA)를 적용한 후 각 열에 하나의 결과를 가로 배열로 반환합니다.

=BYCOL(array, lambda)

 

제품 예시를 계속 살펴보겠습니다. 제품이 세 개이고 매출 수치가 B2:D6 범위에 있다고 가정하면, 다음 수식을 사용하면 각 열의 합계를 정확하게 구할 수 있습니다.

=BYCOL(B2:D6, LAMBDA(myCol, SUM(myCol)))

 

LAMBDA에서 myCol 이라는 매개변수를 정의했는데, BYCOL은 이 매개변수를 B2:D6 범위에서 한 번에 한 열씩 전달합니다. 그런 다음 SUM 함수에서 이 매개변수를 사용합니다. 전체 범위를 전달하더라도 BYCOL은 sales 열을 열별로 합산하여 각 열을 별도의 열로 반환합니다.

LAMBDA에 대한 이야기가 아직 생소하다면, 핵심은 LAMBDA를 꼭 사용할 필요는 없다는 것입니다. SUM을 포함한 명명된 함수를 직접 사용할 수 있습니다. 하지만 복잡한 계산을 해야 한다면 LAMBDA를 사용하세요.

=BYCOL(B2:D6, SUM)

 

BYCOL 함수를 다른 함수와 함께 사용하면 흥미로운 효과를 얻을 수 있습니다. 제품 이름이 B1:D1 열 (헤더 행) 에 있는 경우, FILTER 함수를 사용하는 다음 수식은 총 매출이 600달러를 초과하는 제품만 반환합니다.

=FILTER(B1:D1, BYCOL(B2:D6, LAMBDA(myCol, SUM(myCol))) > 600, "")

 

2. BYROW

muo

 

BYROW 함수는 배열이나 범위의 각 행에 LAMBDA를 적용하여 각 열에 하나의 결과를 세로 배열로 반환합니다. 긴 데이터 작업에 적합합니다.

BYROW(array, lambda)

 

이전 섹션의 예를 계속 사용하면 BYROW 함수를 사용하여 단일 수식의 각 행을 합산할 수 있습니다.

=BYROW(B2:D6, LAMBDA(myRow, SUM(myRow)))

 

계산이 간단하다면 SUM 함수를 직접 사용할 수도 있습니다.

=BYROW(B2:D6, SUM)

 

3. SCAN

muo

 

SCAN 함수는 누적 합계, 즉 행별로 누적된 합계가 필요할 때 적합합니다. 각 단계마다 누적된 값이 표시됩니다. 시작 값, 배열 또는 범위, 그리고 LAMBDA 함수를 사용합니다. 그런 다음 시작 값부터 시작하여 중간 결과의 배열을 반환합니다.

SCAN(start_value, array, lambda)

 

이전 예제에서 제품 A 의 누적 합계를 계산한다면 수식은 다음과 같습니다.

=SCAN(0, B2:B6, LAMBDA(a, v, a + v))

 

복잡해 보이지만, 자세히 살펴보면 무슨 일이 일어나는지 어렵지 않게 이해할 수 있습니다.

 

start_value 매개변수는 0입니다 . 즉, 매출 추적을 0부터 시작함을 의미합니다. 집계하려는 값을 포함하는 배열 매개변수는 B2:B6 입니다. LAMBDA에서 a는 추적할 실행 결과이고 v는 배열의 현재 값입니다.

 

4. REDUCE

muo

 

REDUCE는 SCAN 함수와 유사하지만, 중간 결과 배열 대신 최종 결과만 제공합니다. 즉, 모든 결과가 단일 값으로 누적됩니다.

REDUCE(start_value, array, lambda)

 

유용성을 보여주기 위해 합산 예제는 사용하지 않겠습니다. 이 예제는 최종 결과만 보여주기 때문입니다. 이 예제만으로는 많은 정보를 얻을 수 없습니다. 하지만 A2:A6 범위에 태그 집합이 있다고 가정해 보겠습니다 . 다음 공식을 사용하여 이 태그들을 사용하여 문자열을 만들 수 있습니다.

=REDUCE("", A2:A6, LAMBDA(str, tag, str & ", " & tag))

 

start_value 매개변수는 "" (빈 문자열)이고, A2:A6 은 범위입니다. LAMBDA에서 str 매개변수는 구성 중인 문자열이고, tag는 배열의 현재 태그입니다.

LAMBDA의 str & "," & 태그 부분은 문자열을 받아서 태그를 누적적으로 적용합니다. 따라서 str이 현재 computers, mobile이고 태그가 video games라면, 지금까지 생성된 문자열은 computers, mobile, video games가 됩니다.

위 수식의 문제점은 앞에 쉼표가 있다는 것입니다. TEXTAFTER 함수를 사용하면 이 문제를 해결할 수 있습니다.

=TEXTAFTER(REDUCE("", A2:A6, LAMBDA(str,tag, str & ", " & tag)), ", ")

 

마치며

처음에는 LAMBDA 도우미 함수의 위력을 이해하지 못하고, LAMBDA라는 개념을 이해하기 어려울 수 있습니다. 하지만 일단 깊이 파고들이 이 함수들에 익숙해지면 완전히 새로운 해결 방법이 열립니다. LAMBDA 도우미 함수에는 위에서 소개한 함수 외에 MAP, MAKEARRAY, ISOMITTED 등이 더 있습니다.