| 인수 | 설명 | 필수 여부 |
|---|---|---|
| reference | 이동의 기준이 되는 셀 또는 범위 | 필수 |
| rows | 기준에서 이동할 행 수 (양수: 아래, 음수: 위) | 필수 |
| cols | 기준에서 이동할 열 수 (양수: 오른쪽, 음수: 왼쪽) | 필수 |
| height | 반환할 범위의 행 수 (생략 시 reference와 동일) | 선택 |
| width | 반환할 범위의 열 수 (생략 시 reference와 동일) | 선택 |
수식: =OFFSET(A1, 2, 1)
의미: A1에서 2행 아래, 1열 오른쪽 → B3의 값을 반환
수식: =SUM(OFFSET(B2, 0, 0, 5, 1))
의미: B2를 기준으로 5행 × 1열 범위(B2:B6)의 합계
활용: height 값을 COUNTA 함수로 대체하면 데이터 개수에 따라 범위가 자동 확장됩니다.
데이터가 계속 추가되는 목록에서 항상 전체 데이터를 합산하려면 다음처럼 COUNTA와 조합합니다.
수식: =SUM(OFFSET(B2, 0, 0, COUNTA(B:B)-1, 1))
의미: B열의 데이터 개수(-1은 헤더 제외)만큼 B2부터 범위를 확장하여 합계 계산
효과: 새로운 데이터를 B열에 추가할 때마다 수식을 수정하지 않아도 자동으로 합계가 갱신됩니다.
MATCH로 특정 행·열의 위치를 찾아 OFFSET에 전달하면 유연한 조회가 가능합니다.
수식: =OFFSET(A1, MATCH("홍길동", A:A, 0)-1, 2)
의미: A열에서 "홍길동"을 찾아 그 행의 3번째 열(C열) 값을 반환
| 항목 | OFFSET | INDEX |
|---|---|---|
| 반환 방식 | 기준 셀에서 상대적 이동 | 범위에서 절대적 위치 지정 |
| 동적 범위 | 가능 (height, width 인수 활용) | 가능 (COUNTA 등과 조합) |
| 성능 | 휘발성 함수 — 느릴 수 있음 | 비휘발성 — 빠름 |
| 주요 용도 | 범위가 위치 기준으로 이동하는 경우 | 행·열 번호로 값을 찾는 경우 |
이동 결과가 워크시트 범위를 벗어날 때 발생합니다. rows나 cols 값이 너무 크거나 음수로 이동해 시트 밖으로 벗어나지 않는지 확인하세요.
height 또는 width를 0으로 지정하면 오류가 발생합니다. COUNTA로 높이를 계산할 때 결과가 0이 되지 않도록 처리가 필요합니다.