OFFSET 함수 핵심 정리 — 동적 범위로 자동 갱신되는 수식 만들기

매출 표에 행이 매달 추가될 때, SUM 범위를 B2:B100처럼 고정해 두면 101행부터 빠집니다. OFFSET은 기준 셀에서 아래로 n행·오른쪽 n열 이동한 뒤, 높이·너비만큼 범위를 잡는 함수예요. 차트·누적합 NAME에서 오래 쓰였습니다.

저는 2024년부터 강의 자료에 “가능하면 표(Table) 또는 INDEX”를 먼저 보여 주고, 레거시 파일·차트 NAME만 OFFSET을 남겨 둡니다. INDIRECT와 마찬가지로 휘발성이라는 점은 같아요.

이 글을 따라 하면 얻는 것
– OFFSET 5개 인수
– 마지막 데이터까지 SUM
– 차트 동적 범위 NAME
– INDEX·표 대안 비교

1. 기본 문법

=OFFSET(기준, 행_이동, 열_이동, [높이], [너비])
=OFFSET(A1,0,0,10,3)

A1부터 10행×3열.

2. 따라 할 예제 — 가변 합계

A열 날짜, B열 매출. 빈칸 없이 쌓인다고 가정:

=SUM(OFFSET(B1,1,0,COUNTA(B:B)-1,1))
  • B1 기준 1행 아래부터
  • COUNTA(B:B)-1 = 데이터 행 수

강의 때 “COUNTA가 헤더까지 세면?” — B1이 헤더면 -1이 맞다고 반복합니다.

3. 누적 12개월

=SUM(OFFSET(B2,MAX(COUNT(B2:B13)-12,0),0,MIN(COUNT(B2:B13),12),1))

최근 12개월만 — 배열이 길어지면 표+구조적 참조가 읽기 쉽습니다.

4. 차트 NAME (동적 범위)

이름 정의 차트_매출:

=OFFSET(Sheet1!$B$1,1,0,COUNTA(Sheet1!$B:$B)-1,1)

차트 데이터 원본 → =Sheet1!차트_매출. 행 추가 시 차트가 늘어납니다. 365에서는 @ spill 범위나 표 열 전체가 더 단순합니다.

5. OFFSET vs INDEX

OFFSET INDEX
범위 크기 변경 높이·너비 인수 범위+행열
휘발성 INDEX 일부 조합은 비휘발
가독성 낮음 중간

동적 범위 한 줄:

=INDEX(B:B,2):INDEX(B:B,COUNTA(B:B))

365 spill 환경에선 FILTER·TAKE도 후보입니다.

6. 자주 하는 실수

  1. 기준 셀 0,0 — OFFSET(A1,0,0)은 A1 한 칸
  2. COUNTA와 빈 행 — 중간 빈칸 있으면 COUNTA 부정확
  3. 음수 높이 — #REF!
  4. 전체 열 OFFSET — 성능 저하
  5. 표로 바꿀 수 있는데 OFFSET — 유지보수 비용

7. FAQ

Q. 피벗 대신?
원본 표를 Ctrl+T로 표 만든 뒤 피벗이 OFFSET보다 낫습니다.

Q. INDIRECT와 함께?
=OFFSET(INDIRECT("A1"),...) — 거의 레거시 패턴.

8. 관련 글

9. 표(Table)로 대체하는 3단계

  1. 데이터 범위 선택 → Ctrl+T → 표 만들기
  2. =표이름[매출] 합계 — 행 추가 시 자동 확장
  3. 차트 데이터 원본을 표 열 전체로 변경

OFFSET NAME 동적_매출을 제거해도 차트가 따라갑니다. 2016 환경에서도 표는 INDIRECT/OFFSET보다 팀원이 읽기 쉽습니다. 표 기능 가이드를 함께 보세요.

참고: Microsoft OFFSET 공식 문서.

실무 메모 1

Ctrl+T 표로 바꿀 수 있으면 OFFSET NAME는 단계적으로 제거하세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 2

COUNTA 전에 중간 빈 행이 없는지 데이터 품질을 먼저 확인합니다. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 3

차트 동적 범위는 365 spill 범위와 A/B 테스트해 보세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 4

Ctrl+T 표로 바꿀 수 있으면 OFFSET NAME는 단계적으로 제거하세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 5

COUNTA 전에 중간 빈 행이 없는지 데이터 품질을 먼저 확인합니다. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 6

차트 동적 범위는 365 spill 범위와 A/B 테스트해 보세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 7

Ctrl+T 표로 바꿀 수 있으면 OFFSET NAME는 단계적으로 제거하세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 8

COUNTA 전에 중간 빈 행이 없는지 데이터 품질을 먼저 확인합니다. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 9

차트 동적 범위는 365 spill 범위와 A/B 테스트해 보세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 10

Ctrl+T 표로 바꿀 수 있으면 OFFSET NAME는 단계적으로 제거하세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 11

COUNTA 전에 중간 빈 행이 없는지 데이터 품질을 먼저 확인합니다. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 12

차트 동적 범위는 365 spill 범위와 A/B 테스트해 보세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 13

Ctrl+T 표로 바꿀 수 있으면 OFFSET NAME는 단계적으로 제거하세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 14

COUNTA 전에 중간 빈 행이 없는지 데이터 품질을 먼저 확인합니다. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 15

차트 동적 범위는 365 spill 범위와 A/B 테스트해 보세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 16

Ctrl+T 표로 바꿀 수 있으면 OFFSET NAME는 단계적으로 제거하세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 17

COUNTA 전에 중간 빈 행이 없는지 데이터 품질을 먼저 확인합니다. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 18

차트 동적 범위는 365 spill 범위와 A/B 테스트해 보세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 19

Ctrl+T 표로 바꿀 수 있으면 OFFSET NAME는 단계적으로 제거하세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 20

COUNTA 전에 중간 빈 행이 없는지 데이터 품질을 먼저 확인합니다. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 21

차트 동적 범위는 365 spill 범위와 A/B 테스트해 보세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 22

Ctrl+T 표로 바꿀 수 있으면 OFFSET NAME는 단계적으로 제거하세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 23

COUNTA 전에 중간 빈 행이 없는지 데이터 품질을 먼저 확인합니다. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 24

차트 동적 범위는 365 spill 범위와 A/B 테스트해 보세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 25

Ctrl+T 표로 바꿀 수 있으면 OFFSET NAME는 단계적으로 제거하세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 26

COUNTA 전에 중간 빈 행이 없는지 데이터 품질을 먼저 확인합니다. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 27

차트 동적 범위는 365 spill 범위와 A/B 테스트해 보세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 28

Ctrl+T 표로 바꿀 수 있으면 OFFSET NAME는 단계적으로 제거하세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 29

COUNTA 전에 중간 빈 행이 없는지 데이터 품질을 먼저 확인합니다. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

실무 메모 30

차트 동적 범위는 365 spill 범위와 A/B 테스트해 보세요. 분기말 보고서를 열면 같은 실수가 반복됩니다. 김대리 파일에서도 범위를 B2:B5000으로 줄이니 응답이 빨라졌어요. 팀 README에 기준을 한 줄로 박아 두세요.

작성자 소개