Excel · 조회

엑셀 OFFSET

기준 셀에서 이동·크기 지정해 범위 반환 — 동적 차트·자동 확장 범위의 표준.

OFFSET 수식 구조

=OFFSET(기준, 행이동, 열이동, [높이], [너비])

기준 (reference)

이동의 출발점이 되는 셀 또는 범위.

행이동, 열이동 (rows, cols)

기준에서 떨어진 거리. 음수면 위쪽·왼쪽.

높이, 너비 (height, width, 선택)

결과 범위의 크기. 생략하면 기준과 동일한 크기. 1·1이면 단일 셀.

OFFSET 자체는 결과를 표시하지 않습니다 — 범위를 반환할 뿐이라 보통 SUM·AVERAGE· COUNTA 안에 감싸서 씁니다. INDIRECT처럼 휘발성 함수라 잦은 재계산이 일어납니다.

직접 체험해보세요

기준 셀 B2(검정)에서 4개 슬라이더로 이동·크기를 조절하면 결과 영역(녹색)이 실시간으로 움직입니다.

B11=SUM(OFFSET(B2, 2, 1, 2, 2))→194
2
1
2
2
ABCDEF
1111213141516
2212223242526
3313233343536
4414243444546
5515253545556
6616263646566
7717273747576
8818283848586

기준

B2

반환 범위

C4:D5

SUM

194

실전 활용 예제

=OFFSET(A1, 2, 3)

단일 셀 이동 — A1에서 2행 아래, 3열 오른쪽인 D3 셀을 반환. 좌표 기반 셀 참조에 사용.

예시: =OFFSET(A1, 2, 3) → D3의 값
=SUM(OFFSET(A1, 0, 0, COUNTA(A:A), 1))

자동 확장 합계 — A열에 값이 늘어날 때마다 SUM 범위가 자동으로 확장. 매일 데이터가 쌓이는 시트에 유용.

예시: A열에 100개 → 100개 합 → 동적 합계
=AVERAGE(OFFSET(B1, COUNTA(B:B)-7, 0, 7, 1))

최근 N개 평균 — B열의 마지막 7개 값 평균. 이동 평균(MA7) 만들 때 클래식 패턴.

예시: 최근 7일 매출 평균 → 이동 평균
=OFFSET(B1, 0, 0, COUNTA(B:B), 1)

이름 정의로 동적 차트 범위 — 이 수식을 이름 정의에 넣으면 데이터 추가에 따라 차트가 자동으로 늘어남.

예시: 이름 '매출범위'로 정의 → 차트 데이터 범위
목차▾
  1. 1.엑셀 OFFSET 함수란?
  2. 2.동작 예시
  3. 3.OFFSET vs INDEX vs INDIRECT
  4. 4.핵심 활용 (동적 범위·이동평균·차트)
  5. 5.실전 사용 시나리오 8가지
  6. 6.INDEX로 OFFSET 대체 (권장)
  7. 7.함정 6가지 + 자주 묻는 질문

엑셀 OFFSET 함수란?

엑셀 OFFSET 함수는 기준 셀에서 행·열로 이동한 후 지정한 크기의 범위를 반환하는 검색·참조 함수입니다. 데이터 추가 시 자동 확장되는 동적 범위, 최근 N개 이동 평균, 동적 차트 데이터 범위 등에 사용. 단, 휘발성(volatile)이라 시트 어디든 변경 되면 매번 재계산 → 성능 저하 우려.

구문은 =OFFSET(기준셀, 행이동, 열이동, [높이], [너비]) 5인수. 가능한 한 INDEX 사용 권장 — 결과 동일하면서 비휘발성. OFFSET은 동적 크기 필요한 차트 범위 정도에만.

동작 예시

=OFFSET(A1, 2, 3) → A1에서 아래 2, 오른쪽 3 = D3

=OFFSET(A1, 0, 0, 5, 3) → A1:C5 범위 (5행 3열)

=OFFSET(A1, 10, 0, 1, 1) → A11

=SUM(OFFSET(A1, 1, 0, 5, 1)) → A2:A6 합계

표:

A B C

1 10 20 30

2 40 50 60

3 70 80 90

 

=OFFSET(A1, 1, 1) → B2 = 50

=OFFSET(A1, 0, 0, 3, 3) → A1:C3 전체

=SUM(OFFSET(A1, 0, 2, 3, 1)) → C1:C3 합계 = 180

OFFSET vs INDEX vs INDIRECT

함수동작휘발성권장
INDEX좌표 (행, 열)❌권장 (비휘발성)
OFFSET좌표 + 크기✅ (휘발성)동적 크기 필요 시
INDIRECT텍스트 주소✅ (휘발성)시트 이름 동적

→ 가능하면 INDEX, OFFSET은 동적 크기·차트 범위에만.

핵심 활용 (동적 범위·이동평균·차트)

자동 확장 범위 (데이터 추가)

=SUM(OFFSET(A1, 0, 0, COUNTA(A:A), 1))

→ A열 데이터 끝까지 자동 합계

 

대체 (INDEX 권장):

=SUM(A1:INDEX(A:A, COUNTA(A:A)))

→ 비휘발성 + 같은 결과

이동 평균 (최근 N개)

=AVERAGE(OFFSET(A1, COUNTA(A:A)-N, 0, N, 1))

→ A열 마지막 N개 평균

동적 차트 범위 (이름 정의)

이름 정의: 매출 = OFFSET(Sheet1!$A$2, 0, 0, COUNTA(Sheet1!$A:$A)-1, 1)

차트 데이터: =Sheet1!매출

→ 데이터 추가 시 차트 자동 확장

실전 사용 시나리오 8가지

  • 단순 좌표 이동 — =OFFSET(A1, 5, 2) → C6
  • N×M 범위 반환 — =OFFSET(A1, 0, 0, 3, 2) → A1:B3
  • 자동 확장 합계 — =SUM(OFFSET(A1, 0, 0, COUNTA(A:A), 1))
  • 이동 평균 (최근 7일) — =AVERAGE(OFFSET($A$1, COUNTA($A:$A)-7, 0, 7, 1))
  • N번째 셀 — =OFFSET(A1, 9, 0) → A10 (INDEX가 더 깔끔)
  • 음수 이동 (위·왼쪽) — =OFFSET(D5, -2, -1) → C3
  • 동적 차트 (이름 정의) — 이름 정의 매출 = OFFSET(...) → 차트 데이터에 사용
  • INDIRECT 결합 (시트 동적 + 범위) — =SUM(OFFSET(INDIRECT(A1&"!A1"), 0, 0, 10, 1))

INDEX로 OFFSET 대체 (권장)

OFFSET이 휘발성이라 큰 시트에서 성능 저하 → INDEX 패턴으로 대체:

OFFSETINDEX 대체
=OFFSET(A1, 5, 2)=INDEX(A:C, 6, 3)
=OFFSET(A1, 0, 0, 10, 1)=A1:INDEX(A:A, 10)
=SUM(OFFSET(A1, 0, 0, N, 1))=SUM(A1:INDEX(A:A, N))

→ 결과 동일, 비휘발성이라 성능 ↑.

함정 6가지 + 자주 묻는 질문

자주 발생하는 함정 6가지

  • 휘발성 → 성능 저하 — 시트 어디든 변경 시 매번 재계산. OFFSET 100개 = 매번 100번. INDEX 권장
  • 범위 초과 → #REF! — OFFSET(A1, -5, 0) → 시트 위로 나감 → #REF!(참조 오류)
  • height·width 생략 시 reference 크기 — OFFSET(A1:C3, 0, 0) → A1:C3. 단일 셀은 명시
  • 가독성 떨어짐 — 단순 위치는 직접 참조 또는 INDEX가 명확
  • COUNTA + OFFSET 빈 셀 문제 — 중간 빈 셀 있으면 COUNTA 부정확. LOOKUP(2, 1/(A:A<>""), ROW(A:A)) 권장
  • 차트 범위 이름 정의 필수 — 차트 데이터에 직접 OFFSET 못 씀. 이름 정의 통해서만

자주 묻는 질문

OFFSET 함수 사용법은?▾

=OFFSET(기준셀, 행이동, 열이동, [높이], [너비]) 형식. 기준 셀에서 행·열 이동 + 지정 크기 범위 반환. 예: =OFFSET(A1, 2, 3) → D3, =OFFSET(A1, 0, 0, 5, 1) → A1:A5.

OFFSET vs INDEX 어떤 게 좋나요?▾

INDEX 권장. OFFSET은 휘발성(volatile)이라 매번 재계산 → 성능 저하. INDEX는 비휘발성. 결과 동일하면 INDEX 우선.

동적 범위 만드는 법은?▾

=OFFSET(A1, 0, 0, COUNTA(A:A), 1) 또는 비휘발성 =A1:INDEX(A:A, COUNTA(A:A)). 데이터 추가 시 자동 확장. 차트 데이터 범위에 이름 정의로 등록.

휘발성이 뭔가요?▾

시트 어디든 변경되면 매번 재계산되는 함수. OFFSET, INDIRECT, NOW, TODAY, RAND 등. 큰 시트에서 OFFSET 많이 쓰면 매번 100번씩 계산 → 성능 ↓.

이동 평균은?▾

=AVERAGE(OFFSET(A1, COUNTA(A:A)-N, 0, N, 1)) → 최근 N개 평균. 또는 비휘발성: =AVERAGE(INDEX(A:A, COUNTA(A:A)-N+1):INDEX(A:A, COUNTA(A:A))).

음수 이동 가능한가요?▾

네. rows·cols 음수면 위·왼쪽 이동. =OFFSET(D5, -2, -1) = C3. 단 시트 범위 벗어나면 #REF!(참조 오류).

동적 차트 범위는?▾

이름 정의 + OFFSET 표준 패턴. 1) 이름 정의: 매출 = OFFSET(...) 2) 차트 데이터: =Sheet1!매출 3) 데이터 추가 시 차트 자동 확장.

구글 스프레드시트에서도 동일하게 작동하나요?▾

네. OFFSET은 표준 검색·참조 함수로 Google Sheets, LibreOffice Calc, Apple Numbers, 한컴 한셀, WPS에서 동일하게 작동합니다.

본 페이지는 Microsoft Support 공식 OFFSET·INDEX·INDIRECT 문서를 기준으로 작성되었습니다. 정확한 동작은 Excel 버전·환경에 따라 달라질 수 있으니 중요한 작업 전에는 실제 환경에서 확인하세요.