논리
SCAN 함수
함수 요약

엑셀 SCAN 함수는 각 항목에 특정 계산을 순차적으로 적용하고 각 단계의 계산 결과를 반환하는 함수입니다.

함수 구문
=SCAN([초기값], 배열, 계산식)
초기값
-
[선택인수]SCAN 함수 계산에 사용할 시작값입니다.
  • 초기값을 생략하면 배열의 첫 번째 요소가 초기값으로 사용되고, 두번째 요소부터 계산이 시작됩니다.
배열
-
각 항목을 순차적으로 돌아가며 계산할 범위 또는 배열입니다.
계산식
-
각 항목을 순회하며 적용할 계산식입니다. 'short-form' 내장 함수를 사용하거나, LAMBDA 함수로 고급 계산을 수행할 수 있습니다.
  • 단순 합계(SUM), 평균(AVERAGE) 등 계산은 'short-form' 내장 함수로 계산할 수 있습니다.
  • LAMBDA 함수는 아래 구조로 작성합니다.
    예) =SCAN(0, 범위, LAMBDA(a,b,SUM(a,b)))
상세 설명

엑셀 SCAN 함수는 범위의 각 요소에 지정한 계산을 순차적으로 적용하고, 각 단계에서 생성된 중간 결과를 배열로 반환하는 함수입니다. 범위의 누적 합계, 누적 개수, 이동 평균 등 각 항목의 순차적인 계산이 필요할 때 유용하게 사용할 수 있습니다.

=SCAN(0,입고수량,SUM)/ / 입고 수량의 누계를 계산합니다.
=SCAN(0,성적,MAX)/ / 각 성적의 최고 점수를 반환합니다.

단순 합계(SUM), 평균(AVERAGE) 은 기본 함수로 쉽게 계산할 수 있고, LAMBDA 를 사용하여 다양한 계산을 수행할 수 있습니다. SCAN 함수는 아래 12개 기본 함수를 제공합니다.

  • SUM(합계)
  • AVERAGE(평균)
  • MEDIAN(중앙값)
  • COUNT(숫자개수)
  • COUNTA(개수)
  • MAX(최대값)
  • MIN(최소값)
  • PRODUCT(곱)
  • ARRAYTOTEXT(텍스트변환)
  • CONCAT(텍스트병합)
  • STDEV(표준편차)
  • VAR(분산)
  • MODE(최빈값)

LAMBDA 를 활용한 SCAN 함수는 아래 구조로 작성합니다.

=SCAN(0,범위,LAMBDA(a,b,FUNC(a,b)))
/ / a: 초기값, b: 현재값으로 각 항목에 순차적으로 함수를 적용합니다.
=SCAN(0,범위,LAMBDA(a,b,SUM(a,b)))
/ / 범위의 누적 합계를 계산합니다. SUM과 동일합니다.
=SCAN(0,범위,LAMBDA(a,b,MIN(100,a+b)))
/ / 범위의 누적 합계를 구하되, 합계가 100이 넘지 않도록 계산합니다.

REDUCE 함수와 유사하게 배열의 모든 요소를 순회하며 계산을 수행하지만, REDUCE는 최종 결과 하나만 반환하는 반면 SCAN은 각 단계의 중간 결과를 모두 배열로 반환합니다.


SCAN 함수 간단 예제
1) 일간 입고 수량의 누계 구하기

아래 그림과 같이 일자별 입고 수량이 작성되어 있을 때, 일일 누적 입고 수량의 합계는 다음과 같이 구할 수 있습니다.

=SCAN(0,B2:B10,SUM)
/ / B2:B10 범위의 누적 합계를 계산합니다.
SCAN-예제-1
범위의 누적 합계를 계산합니다.
2) 셀 병합 해제 후 생긴 공백 채우기

다음과 같이 SCAN 함수를 사용하면 셀 병합 해제 후 발생하는 공백을 한 번에 채울 수 있습니다.

=SCAN("",A2:A8,LAMBDA(a,b,IF(b="",a,b)))
/ / A2:A8 범위에 공백이 있을 시, 윗 셀로 값을 채웁니다.
SCAN 함수 빈 칸 채우기
셀 병합 해제 후 발생하는 공백을 채웁니다.
3) 업무 항목을 순차적으로 연결하여 문장 만들기

아래 그림과 같이 A열에 각 업무 단계가 나열되어 있을 때, SCAN 함수를 사용하면 각 업무 단계를 한 문장으로 연결할 수 있습니다.

=SCAN(,A2:A6,LAMBDA(a,b,a&"→"&b))
/ / A2:A6 범위의 각 항목을 화살표()로 연결합니다.
Snipaste_2025-04-01_17-43-12
각 업무 단계를 순차적으로 하나씩 연결합니다.

그 외 주의사항

초기값을 생략하면 배열의 첫 번째 요소가 초기값으로 사용되고, 계산은 두 번째 요소부터 시작됩니다.

SCAN 함수의 계산식으로 잘못된 함수를 입력하거나 LAMBDA의 인수가 잘못되면#VALUE! 오류를 반환합니다.

SCAN 함수는 배열을 반환하므로, 결과가 출력될 범위에 기존 데이터가 있으면 #SPILL! 오류를 출력합니다.

SCAN 함수는 M365 또는 2024 이후 버전에서 제공됩니다. 이전 버전에서 SCAN 함수가 사용된 파일을 실행하면 #NAME? 를 반환합니다.


0 댓글
Inline Feedbacks
모든 댓글 보기
0
여러분의 생각을 댓글로 남겨주세요.x