• 최초 작성일: 2025-01-27
  • 최종 수정일: 2026-09-23
  • 조회수: 31 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: OFFSET 함수 정리

들어가기 전에: "도무지 잊을래야 잊을 수 없는" 시리즈 제3탄

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

가을을 맞이하여 새로운 뭔가를 준비하고 있습니다(강좌와 관련된 것은 아니고 一身과 관련). 10월은 특히나 바쁠 것으로 예상됩니다. 강좌가 빨리빨리 업데이트 되지 않는다고 열받지 말고 복습들 하고 계시기 바랍니다.

지금까지 "도무지 잊을래야 잊을 수 없는" 시리즈를 두 번 진행해 왔습니다.

오늘은 "도무지 잊을래야 잊을 수 없는" 시리즈 [제3탄]으로 Offset 함수의 기본 개념과 활용 방법에 대해 살펴보겠습니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 지음

📊 신간 전자책(PDF) · 287쪽 · 13500원

엑셀 대시보드를 만드는 최적의 '표준 3계층 구조'

  • 3초 안에 읽히는 화면 설계 감각 습득
  • Microsoft Excel MVP의 실전 노하우 수록
  • 중간마진 없는 합리적인 가격, 오직 아이엑셀러에서만!
지금 구매하기 완성 화면 보기

OFFSET 함수 사용 방법 정리

핵심 요약: OFFSET 함수 기본과 응용

OFFSET은 기준 셀에서 행·열만큼 떨어진 위치의 참조 영역을 구해주는 함수입니다. 여러 셀을 가져올 땐 배열 수식이, 범위가 자동으로 늘어나게 하려면 COUNTA 조합이 핵심입니다.

  • 기본: OFFSET(reference, rows, cols, [height], [width])
  • 여러 셀 반환: 범위 선택 후 Ctrl+Shift+Enter로 배열 수식 입력
  • 자동 합계: SUM(OFFSET(...,COUNTA(...)))로 범위가 데이터만큼 자동 확장
  • 응용: 이름 정의 + 스크롤 막대 + VBA로 대화형 범위 선택 도구 제작

Offset 함수는 "어떤 셀의 위치를 기준으로 행이나 열의 수만큼 떨어진 곳의 참조 영역을 구해주는 함수"입니다. 알 듯 모를 듯한 설명이죠?

기본 사용 형식

Offset 함수는 5개의 인수를 가집니다. 얼핏 복잡해 보입니다만 겁먹을 건 없습니다.

OFFSET 함수의 5개 인수(reference, rows, cols, height, width) 설명
아이엑셀러

아래와 같은 표가 있다고 할 경우, B2 셀을 기준으로 하여 Offset 함수의 인수를 다음과 같이 지정하면 결과값은 '19'가 됩니다.

B2 셀을 기준으로 OFFSET 함수를 적용해 E5 셀 값 19를 가져오는 예시
아이엑셀러

I8 셀에 입력된 수식은 다음과 같습니다.

=OFFSET(INDIRECT(I2),I3,I4,I5,I6)

B2 셀에서 행 방향으로 3행, 열 방향으로 3열 떨어진 셀, 즉 E5 셀이 되겠지요? 여기서 참조 높이가 1, 참조 너비가 1이니까 E5 셀에 있는 값을 가져오게 됩니다.

만약 아래와 같이 회색으로 표시된 두 셀 값을 가지고 오려면 어떻게 하면 될까요? 다른 조건은 똑같고 가져올 행 수만 2행이니까 '참조 높이' 인수를 2로 바꿔주면... 오류가 발생합니다. 아무리 들여다봐도 논리적으로는 이상이 없어 보이는데 말이지요. 이런 경우에는 배열 형태로 입력해야 합니다.

높이를 2로 바꿔 두 개의 셀 값을 배열 수식으로 가져오는 예시
아이엑셀러

가져올 행 수가 2이므로 같은 크기를 범위로 지정하고(위의 경우에는 I8:I9), 아래 수식을 입력한 후, <Ctrl> + <Shift> + <Enter> 키를 함께 눌러줍니다. 수식 좌우의 중괄호 { }는 손으로 타이핑 한 게 아니라 <Ctrl> + <Shift> + <Enter> 키를 누르면 자동으로 생기는 것임에 유의하세요!

[I8:I9] {=OFFSET(INDIRECT(I2),I3,I4,I5,I6)}

위 표에서 회색 영역의 합계를 구해 볼까요?

SUM과 OFFSET을 조합해 회색 영역의 합계를 구하는 예시
아이엑셀러

I11 셀에는 이런 수식이 들어 있습니다.

=SUM(OFFSET(INDIRECT(I2),I3,I4,I5,I6))

자동 합계 구하기

Sum, Offset, Counta 함수를 함께 조합하면 재미있는 것을 만들 수 있습니다. 아래와 같은 자료가 있다고 할 때, 회색 부분에 숫자를 입력해 보세요. 실시간으로 결과에 반영됨을 알 수 있습니다.

COUNTA로 입력된 셀 수만큼 자동으로 늘어나는 합계 범위 예시
아이엑셀러

O2 셀에 입력된 수식은 이렇습니다. Offset 함수에 대해 이해가 되었다면 어려운 부분은 없으리라 생각합니다. 곰곰이 생각해 보시고 혹시라도 이해 안되는 부분이 있다면 질문주세요.

=SUM(OFFSET(L2,0,0,COUNTA(L:L)))

응용 예제: 스크롤 막대로 영역을 선택하면 합계 자동 계산

예제 파일의 'Sheet2'에서 스크롤 막대로 행 수와 열 수를 선택하면, 지정한 범위만큼 테이블에 색깔이 칠해지고 합계도 구해지도록 해보겠습니다.

완성 예 - 스크롤 막대로 행 수와 열 수를 선택하면 범위가 색칠되고 합계가 계산되는 화면
아이엑셀러

(1) 나중에 사용할 이름을 미리 정의해 둡니다. '수식' 탭의 '이름 관리자'를 클릭하여 어디에 무슨 이름으로 정의되어 있는지 확인해 보세요.

이름 관리자 대화상자에서 Start, MyRow, MyCol 이름이 정의된 모습
아이엑셀러

(2) '개발 도구 - 삽입'을 클릭합니다. '양식 컨트롤'에 있는 '스크롤 막대'를 선택하고 J2:K2 셀에 삽입합니다. 스크롤 막대를 마우스 오른쪽 버튼으로 클릭하고 '컨트롤 서식' 메뉴를 선택합니다.

(3) '컨트롤 서식' 대화상자에서 '최대값', '최소값', '셀 연결' 항목을 지정합니다. 최대값을 12로 지정한 이유는 테이블의 가로 방향 크기, 즉 행 수가 12개 밖에 없기 때문입니다.

컨트롤 서식 대화상자에서 행 수 스크롤 막대의 최대값과 셀 연결을 지정하는 화면
아이엑셀러

(4) 같은 방법으로 J3:K3 셀에 스크롤 막대를 삽입하고 '컨트롤 서식'을 지정합니다.

컨트롤 서식 대화상자에서 열 수 스크롤 막대의 최대값과 셀 연결을 지정하는 화면
아이엑셀러

(5) 스크롤 막대에 연결할 코드를 작성합니다. <Alt> + <F11> 키를 눌러 Visual Basic Editor를 표시한 다음 아래 코드를 입력합니다. VBA 강좌가 아니므로 코드는 최소화했습니다.

Sub SelectRange()
    Dim rStart As Range
    Set rStart = Range("Start")
    
    With rStart.CurrentRegion
        .Interior.ColorIndex = xlNone
        .Font.ColorIndex = 1
    End With
    
    With Range(rStart, rStart.Offset(Range("MyRow") - 1, Range("MyCol") - 1))
        .Interior.ColorIndex = 8
    End With
End Sub

(6) '선택 행 수' 오른쪽에 있는 스크롤 막대를 마우스 오른쪽 버튼으로 클릭하고 [매크로 지정]을 선택합니다. [매크로 지정] 대화상자에서 'SelectRange' 매크로를 선택하고 [확인] 버튼을 클릭합니다.

매크로 지정 대화상자에서 SelectRange 매크로를 선택하는 화면
아이엑셀러

(7) '선택 열 수' 옆의 스크롤 막대에 대해서도 (6) 과정을 반복합니다.

(8) '선택된 범위 합계'를 구할 K5 셀에 수식을 입력합니다.

K5 셀에 선택된 범위의 합계를 구하는 SUM+OFFSET 수식이 입력된 모습
아이엑셀러
=SUM(OFFSET(B2,0,0,L2,L3))

이제 스크롤 막대를 클릭하면 지정한 영역만큼 색상이 지정되고 K5 셀에 합계도 구해집니다.

저기 어디선가 이런 궁시렁거림(?)이 들려오는 듯 합니다.
'지금껏 이런 강좌는 없었다. 이것은 Excel 강좌인가 VBA 강좌인가...'
강좌를 진행하는 편의 상 Excel과 VBA를 나누었을 뿐, VBA는 언젠가는 넘어야 할 산입니다. 그러니 너무 고민하지 말고 잘 따라오시기 바랍니다.

참고: 이미지에 대하여

이 글은 원래 네이버 포스트에 게재되었던 글로, 네이버 포스트 서비스 종료로 네이버 블로그로 옮기는 과정에서 원본 이미지가 소실되었습니다. 위 이미지는 본문 설명을 바탕으로 재구성한 예시 화면이며, 실제 엑셀 화면과 세부 디자인은 다를 수 있습니다. 서두에 언급된 관련 강좌([제1탄] 557회, [제2탄] VBA 파워 코딩_255회)의 링크 미리보기 카드도 원본에는 이미지가 있었으나, 재구성 대신 글 제목만 참조 표시로 남겼습니다.

정리 — OFFSET 함수 활용 단계

단계 내용
기본 OFFSET(reference,rows,cols,[height],[width])로 단일 셀 참조
여러 셀 height/width > 1이면 배열 수식(Ctrl+Shift+Enter)
합계 SUM(OFFSET(...))으로 배열 수식 없이 합계
자동 확장 COUNTA를 height에 사용해 데이터만큼 범위 확장
대화형 응용 이름 정의 + 스크롤 막대 + VBA로 범위 선택 도구

자주 묻는 질문 (FAQ)

Q1. OFFSET 함수는 무엇을 하는 함수인가요?

어떤 셀의 위치를 기준으로 행이나 열의 수만큼 떨어진 곳의 참조 영역을 구해주는 함수입니다. reference, rows, cols, [height], [width] 다섯 개의 인수를 가집니다.

Q2. OFFSET으로 여러 셀을 한 번에 가져오려면 어떻게 하나요?

height나 width를 1보다 크게 지정해 여러 셀을 가져올 때는, 결과가 들어갈 범위를 먼저 같은 크기로 선택한 뒤 수식을 입력하고 <Ctrl>+<Shift>+<Enter>로 배열 수식으로 입력해야 합니다.

Q3. 입력된 데이터 범위에 맞춰 자동으로 늘어나는 합계는 어떻게 만드나요?

COUNTA로 입력된 셀 개수를 센 값을 OFFSET의 height 인수로 사용하면 됩니다. 예: =SUM(OFFSET(L2,0,0,COUNTA(L:L))) — 데이터가 늘어나는 만큼 합계 범위도 자동으로 늘어납니다.

마치며

VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.