- 최초 작성일: 1999-08-18
- 최종 수정일: 2026-09-29
- 조회수: 24 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: OFFSET 함수 활용하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
어떤 일을 하든 흥미가 없으면 쉽게 지치고 장시간 지속할 수 없겠지요.
따라서 어떤 일을 잘하기 위해서는 먼저 재미를 붙여야 합니다. 컴퓨터를 배우는 것도 예외가 될 수는 없겠지요. 재미없는(?) 컴퓨팅을 재미있게 만드는 법!!!
Exceller의 생활 신조는 "피할 수 없으면 즐겨라!" 입니다. 자신이 하는 일과 스포츠(취미)가 별개의 것이라고 생각하십니까? 일에 리듬을 붙이면 그게 바로 스포츠요 취미 생활이 아닌가 생각합니다.
그건 그렇고…
무슨 일을 하든 그냥 눈으로만 대충 보고 '음 이런 게 있군.' 하고 그냥 대충대충 건성으로만 넘어가서는 안됩니다. 호기심과 문제의식을 갖고 끊임없이 응용력을 키워 나가야 합니다. 개개의 기능에 대한 설명은 Exceller가 해드릴 수 있지만
OFFSET 함수 활용하기
핵심 요약
- OFFSET은 기준 셀에서 지정한 행과 열만큼 이동한 위치나 범위를 반환하는 참조 함수입니다.
- 높이와 너비 인수를 함께 지정하면 한 셀이 아니라 여러 셀로 이루어진 범위를 반환할 수 있습니다.
- SUM이나 COUNTA와 결합하면 데이터 개수에 따라 자동으로 늘어나는 동적 범위를 만들 수 있습니다.
참고: 원문의 들어가기 전에 마지막 문장은 "…해드릴 수 있지만"에서 끊겨 있습니다. 원문은 그대로 두었습니다.
오늘은 조금 어려운, 그렇지만 아주 흥미로운 함수 한 가지를 소개해 드립니다.
혹 Offset()함수라고 들어 보셨는지요?
Offset()함수는 "어떤 셀의 위치를 기준으로 행이나 열의 수만큼 떨어진 곳의 참조 영역을 구해주는 함수"입니다. 어째 좀 복잡하지요? ^^
사용 형식
Offset(특정위치, 이동행 수,이동열 수,구하려는 행개수, 구하려는 열개수)
사용 형식을 보니… 더 복잡하군요. ^^ 하지만 지레 겁먹지 말고 아래를 보세요.
| 111 | =OFFSET(B42,3,2,1,1) |
참고: 수식의 기준 셀은 B42이므로 본문의 B41은 B42의 오기로 보입니다(B42에서 3행, 2열 이동하면 D45). 원문은 그대로 두었습니다.
즉 B41 셀(아래의 파란색 셀)에서 행 방향으로 3행, 열 방향으로 2열 떨어진 셀, 그러니까 D45 셀이 되지요. 여기서 행 방향으로 1, 열 방향으로 1에 해당되는 영역이니까 D45 셀 그 자체가 되는 것입니다.
| 특정 위치 |
| 111 |
| 222 |
| 333 |
참고: 원문의 예제 표(B42 기준)는 셀 배치가 남아 있지 않고 값만 남아 있어 세로로 나열했습니다. 수식과 본문으로 볼 때 111은 D45 셀, 노란색으로 표시된 222와 333은 D48:D49 셀의 값입니다.
그런데 만약 위의 표에서 노란 색으로 표시된 두 개의 셀 값을 가져오고자 한다면 어떻게 하면 될까요. 사용 형식에 나와 있는 함수의 여러 인수값을 조금 바꾸어 주면 되지 않겠느냐구요? 글쎄요… 한번 해 볼까요?
| #VALUE! | =OFFSET(B42,6,2,2,1) |
어럽쇼? 에러가 나는군요. 아무리 수식을 쳐다봐도 논리적으로는 아무런 이상이 없어 보이는데 말입니다!
이런 경우에는, 즉 하나 이상의 셀 참조 영역을 구하고자 할 경우에는 배열의 형태로 입력해야 합니다. 아래를 보세요. 이번에는 제대로 되었지요?
| 222 | {=OFFSET(B42,6,2,2,1)} |
| 333 | {=OFFSET(B42,6,2,2,1)} |
참고: Excel 365 및 2021 이상에서는 동적 배열 기능으로 =OFFSET(B42,6,2,2,1)을 Enter만으로 입력해도 결과가 아래로 펼쳐져 오류가 나타나지 않습니다. 본문은 구버전 기준의 설명입니다.
이런 경우에는 아래 그림과 같이 구하고자 하는 영역과 같은 크기의 범위를 먼저 지정한 다음 수식을 입력하고… 배열 형태로 입력하는 것이므로 Ctrl + Shift + Enter키를 함께 눌러서 마무리 합니다. 그러면 수식 좌우에 {} 괄호가 저절로 생깁니다.
명심하세요! {} 괄호는 타이핑 해서 넣은 것이 아니고 Ctrl + Shift + Enter 키를 눌러야 한다는 것을…
이번에는 위의 표에서 노란색 셀 영역의 합계를 구해 볼까요?
| 555 | =SUM(OFFSET(B42,6,2,2,1)) |
이번에는 조금더 응용을 해 볼까요?
Sum 함수와 Offset 함수 그리고 Counta 함수를 함께 조합하면 아주 재미있는 것을 만들 수 있습니다. 아래 그림을 보세요.
| 합계 | 100 | =SUM(OFFSET(F91,0,0,COUNTA(F:F))) |
이 부분에 계속 데이터를 입력해 보세요. 리얼 타임으로 입력된 값까지 합산에 반영이 될 것입니다.
| 10 |
| 7 |
| 12 |
| 5 |
| 8 |
| 17 |
| 41 |
참고: 원문 표가 깨져 있어 합계 수식, 안내 문구, 입력 데이터(10, 7, 12, 5, 8, 17, 41)로 나누어 정리했습니다. 데이터의 합계는 표시된 100과 일치합니다.
재미있지요?
이상에서 설명드린 것 이외에도 평소에 얼마나 문제 의식을 갖고 있고 창의적인 마인드를 가지고 있느냐에 따라 활용 방법은 무궁무진 할 것입니다. 다음 시간에는 이러한 개념을 차트에 접목시키면 어떤 일이 일어나는지 소개해 드리겠습니다.
기대하셔도 좋습니다!
오늘은 여기까지…
정리 — OFFSET 함수 활용하기
| 구분 | 내용 |
|---|---|
| 함수 | OFFSET(기준 셀, 이동 행 수, 이동 열 수, 구하려는 행 개수, 구하려는 열 개수) |
| 역할 | 기준 셀에서 지정한 행, 열만큼 떨어진 곳의 참조 영역을 구함 |
| 단일 셀 | =OFFSET(B42,3,2,1,1) 은 기준 셀에서 3행, 2열 떨어진 D45 셀 |
| 여러 셀 | {=OFFSET(B42,6,2,2,1)} 처럼 배열수식(Ctrl + Shift + Enter)으로 입력 |
| 합계 | =SUM(OFFSET(B42,6,2,2,1)) 의 결과는 555 |
| 동적 합계 | =SUM(OFFSET(F91,0,0,COUNTA(F:F))) 는 데이터를 계속 입력해도 합계에 반영됨 |
자주 묻는 질문 (FAQ)
Q1. OFFSET 함수는 무엇을 하는 함수인가요?
어떤 셀의 위치를 기준으로 행이나 열의 수만큼 떨어진 곳의 참조 영역을 구해 주는 함수입니다.
Q2. OFFSET 함수로 여러 셀의 값을 가져오려면 어떻게 하나요?
하나 이상의 셀 참조 영역을 구할 때는 배열 형태로 입력해야 합니다. 구하려는 영역과 같은 크기의 범위를 먼저 선택하고 수식을 입력한 뒤 Ctrl + Shift + Enter 키를 함께 눌러 마무리합니다. 한 셀에만 입력하면 오류가 나타납니다.
Q3. 데이터가 늘어나도 자동으로 합계에 반영되게 하려면 어떻게 하나요?
SUM, OFFSET, COUNTA 함수를 조합합니다. COUNTA로 입력된 값의 개수를 세어 OFFSET의 높이로 사용하면 새로 입력한 값까지 합산됩니다.
마치며
OFFSET 함수는 다음 시간의 동적 차트로 이어지는 기초이므로 충분히 연습해 두시기 바랍니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.