Excel & IT Info

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

Excel

BYROW를 사용하여 Excel 오류를 방지하고 확장성을 높이는 방법

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

들어가기 전에

BYROW는 Excel에서 행 기반 연산을 위한 최고의 표준입니다. 모든 수식을 하나의 범위에 모아두면 수동으로 값을 덮어쓸 위험을 없애고, 파일 크기를 줄일 수 있으며, 데이터 확장성을 높일 수 있습니다. 엉성하고 복잡한 통합 문서를 강력하고 효율적인 도구로 바꾸는 쉬운 방법을 소개합니다.

 

BYROW 함수는 Microsoft 365용 Excel, 웹용 Excel, 그리고 최신 버전의 Excel 모바일 및 태블릿 앱에서 사용할 수 있습니다.

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

gemini / iexceller


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

  • 원문: Use BYROW to make Excel spreadsheets harder to break (and scalable)
  • URL: https://www.howtogeek.com/microsoft-excel-byrow-function-make-spreadsheets-harder-to-break-scalable/

BYROW 함수 작동 방식

BYROW를 제대로 활용하려면 엑셀 수식에 대한 사고 방식을 바꿔야 합니다. 보통은 한 셀에 수식을 입력하고 드래그하거나, 표에서 열을 자동으로 채우는 기능을 이용합니다. 이런 방식도 작동은 하지만, 스프레드시트가 수동으로 수정될 위험에 노출됩니다. BYROW는 이러한 문제를 완전히 해결합니다. 람다(LAMBDA) 엔진을 사용하여 범위 내 모든 행에 대해 계산을 수행하지만, 전체 로직은 단 하나의 셀에 담겨 있습니다.

BYROW 구문

BYROW 함수는 특정 패턴을 사용하여 Excel에게 데이터에 대해 정확히 어떤 작업을 수행해야 하는지 알려줍니다.

=BYROW(array, LAMBDA(r, calculation))

 

  • 배열: 분석하려는 데이터 범위
  • LAMBDA: Excel에게 사용자 지정 명령을 만들고 있음을 알려주는 래퍼(wrapper)
  • r: 현재 행의 별칭
  • calculation: 해당 행에 대해 수행하려는 수학 연산

 

BYROW 함수는 구조적 참조를 사용하여 Excel 표를 지정할 때 가장 효과적입니다 . 하지만 이 함수는 수식을 입력한 셀에서 아래쪽으로 결과를 확장하는 동적 배열 함수 이므로 Excel 표 내부에 직접 입력할 수 없습니다 . 즉, 함수는 구조적 참조를 사용하도록 권장하지만, 함수 수식은 일반 셀에 입력해야 합니다.

 

확장성에 관한 중요한 사항

서식이 지정된 Excel 표를 소스 데이터로 사용하면 성장 방향에 따라 다르게 처리하는 반자동 시스템을 구축할 수 있습니다.

 

  • 세로 확장성: 테이블에 새 행 100개를 추가하면 BYROW 함수가 새 데이터를 감지하고 자동으로 아래로 확장하여 새 높이에 맞춥니다. 채우기 핸들을 클릭하고 드래그할 필요가 없습니다.
  • 수평 확장성: 표 전체를 포함하는 구조화된 참조를 사용하는 경우 Excel은 가운데 또는 오른쪽에 추가하는 새 열을 자동으로 포함합니다. 그러나 수식이 특정 하위 범위의 열을 대상으로 하는 경우 오른쪽에 새 열을 추가하면 수식을 수동으로 수정하여 범위를 새 열까지 확장해야 합니다.

 

사례 1: 깨지지 않는 계산

BYROW 함수는 데이터 무결성 유지에 매우 유용합니다. 일반적인 Excel 표에서는 누구나 셀을 선택하고 임의의 숫자를 입력하여 해당 행의 수식을 무효화할 수 있습니다. 하지만 BYROW 계산 중에 누군가 임의로 숫자를 입력하면 Excel에서 #SPILL ! 오류를 발생 시키므로 문제가 발생했음을 즉시 알 수 있습니다.

시나리오: 학생 성적표(T_StudentScores)가 있고 각 학생의 총점을 계산해야 합니다. 계산식을 임의로 수정하더라도 오류 메시지가 표시되도록 하여 학생들이 점수를 조작하지 못하도록 하고 싶습니다.

 

howtogeek

 

E2 셀에 입력해야 할 수식은 다음과 같습니다.

=BYROW(
T_StudentScores[[Midterm]:[Final]],
LAMBDA(r, SUM(r))
)

 

howtogeek

 

이 수식은 Excel에게 중간고사 열부터 기말고사 열까지의 가로 범위를 살펴보라고 지시합니다. 각 행을 r로 정의하고, 람다 연산자는 Excel에게 r에 있는 값들을 합산하라고 명령합니다. 동적 배열이기 때문에 결과는 표의 높이에 맞춰 아래로 늘어납니다.

이러한 시나리오에서 BYROW의 이점

  • 기존 함수와의 비교: `=SUM(T_StudentScores[@[Midterm]:[Final]])`과 같은 표준 수식은 모든 셀에 적용되므로, 사용자가 결과를 덮어쓰더라도 경고가 발생하지 않습니다. 하지만 BYROW 함수를 사용하면 전체 열에서 `#SPILL!` 오류가 발생하여 데이터 보안을 강화합니다.
  • 다른 LAMBDA 함수와의 차이점: MAP 함수는 셀을 하나씩 처리하므로 중간고사와 기말고사를 각각 합산하는 것이지 합산하는 것이 아닙니다. SCAN 함수 는 누적 합계를 계산하는 함수이므로 개별 점수가 아닌 전체 학급의 누적 합계를 생성합니다. REDUCE 함수는 전체 표를 하나의 셀로 압축하여 학생별 세부 점수가 아닌 전체 합계를 제공합니다.

 

사례 2: 수평 논리 검사

테이블은 세로 방향 데이터 처리에는 이상적이지만, 한 행에서 여러 열에 걸쳐 조건을 확인해야 하는 가로 방향 논리에는 어려움을 겪는 경우가 많습니다. 기존 방식에서는 이러한 문제를 해결하기 위해 길고 중첩된 수식을 사용해야 했는데, 열이 추가될 경우 수식을 업데이트하는 것이 매우 복잡해졌습니다.

시나리오: 프로젝트 추적 시스템(T_Launch)에서 세 부서 모두 승인란에 체크 표시를 해야만 작업이 "준비됨"으로 표시됩니다.

 

howtogeek

 

F2 셀에는 다음 수식을 입력합니다.

=BYROW(
T_Launch[[Marketing]:[Product]],
LAMBDA(r, IF(COUNTIF(r, TRUE)=3, "Ready", "Pending"))
)

 

howtogeek

 

여기서 BYROW 함수는 가로 방향으로 자른 "슬라이스" 값을 LAMBDA 함수로 전달합니다. 그런 다음 COUNTIF 함수는 행 r에서 TRUE 값이 몇 개인지 확인합니다. TRUE 값이 3개이면 프로젝트는 "준비됨" 상태가 되고, 그렇지 않으면 "대기 중" 상태로 유지됩니다.

최신 Excel에서 체크박스는 부울 값 위에 시각적으로 표시되는 요소입니다. 체크박스가 선택되면 해당 셀의 기본값은 TRUE가 되고, 선택되지 않으면 FALSE가 됩니다. 이러한 값은 Excel의 기본 값이므로 COUNTIF 함수에서 TRUE를 따옴표로 묶을 필요가 없습니다.

 

이러한 시나리오에서 BYROW의 이점

  • 기존 함수와의 비교: `=AND(T_Launch[@[Marketing]:[Product]])`와 같은 수식을 사용하는 테이블 열은 깔끔해 보이지만, 여전히 숨겨진 복사본이 수천 개 있을 수 있는 "계산 열"입니다. 500번째 행의 수식을 실수로 수정하면 일관성이 깨지게 됩니다. BYROW 방식은 논리를 단일 셀에 담아 이러한 위험을 완전히 제거합니다. 즉, 하나의 값이 덮어쓰여지면 `#SPILL!` 오류가 발생합니다.
  • 다른 람다 함수와의 차이점: MAP 함수는 행을 구분하지 않습니다. 즉, 개별 셀이 참인지 여부는 확인할 수 있지만 행 전체의 값을 계산할 수는 없습니다. SCAN과 REDUCE 함수는 이전 행에 따라 달라지는 누적 합계를 계산하도록 설계되었으므로, 이러한 함수를 독립적인 행 검사에 사용하는 것은 과도한 설계이며 스프레드시트의 감사를 어렵게 만듭니다.

 

사례 3: 더욱 간소화된 워크북 아키텍처

일반적인 표에서 Excel은 메타데이터에 수천 개의 개별 수식 인스턴스를 추적해야 합니다. 단일 열만 사용하더라도 BYROW 방식은 논리를 단일 소스로 통합하여 스프레드시트를 더 깔끔하게 구성하는 방법입니다. 이를 통해 통합 문서의 감사가 쉬워지고 중복 계산으로 가득 찬 블랙박스가 되는 것을 방지할 수 있습니다.

상황 설명: 네 개의 서로 다른 센서 영역에서 측정한 온도 데이터 세트가 있습니다. 각 시점에서 모든 영역에서 기록된 최고 온도를 찾아야 합니다.

 

howtogeek

 

G2 셀에는 다음 수식을 입력합니다.

=BYROW(
T_SensorData[[Zone_A]:[Zone_D]],
LAMBDA(r, MAX(r))
)

 

howtogeek

 

이 수식은 각 수평 행 r을 스캔하여 특정 타임스탬프에 대해 4개의 센서 영역 전체에서 최댓값을 식별합니다.

 

이러한 시나리오에서 BYROW의 이점

  • 기존 함수와의 비교: 표준 `=MAX()` 열을 사용하면 이 경우에도 작동하지만, 각 행마다 별도의 수식이 생성됩니다. BYROW 함수는 수백 또는 수천 개의 수식을 단일 입력 지점으로 대체하여 통합 문서의 내부 구조를 간결하게 유지합니다.
  • 다른 람다 함수와의 차이점: MAP 함수는 모든 셀을 개별적으로 평가하므로 행당 하나의 결과만 필요한 경우 불필요한 오버헤드가 발생합니다. SCAN 함수는 누적 합계를 계산하는 데 사용되고, REDUCE 함수는 표에 기록된 최고 온도를 반환합니다.

 

마치며

BYROW를 이해하면 스프레드시트를 만들고 관리하는 완전히 새로운 방식을 접하게 됩니다. 모든 논리를 하나의 "핵심" 셀에 집중시키기 때문에 데이터 크기에 따라 확장이 가능하고, 항상 쉽게 감사할 수 있으며, 다른 사람이 오류를 범하기 훨씬 어려운 스프레드시트를 만들 수 있습니다.

 

이러한 변화는 LAMBDA 엔진 덕분에 가능해졌는데, 바로 이 LAMBDA 엔진 때문에 Excel이 이제 프로그래밍 언어로 여겨지게 된 것 입니다 . 이러한 함수를 사용하면 간단한 통합 문서를 정교한 도구로 바꾸는 사용자 지정 논리를 작성할 수 있습니다.