• 최초 작성일: 2002-09-04
  • 최종 수정일: 2026-09-29
  • 조회수: 30 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: INDIRECT와 ROW로 일정 행 간격의 데이터만 골라내기

들어가기 전에

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

Every bean has its black.
모든 콩은 검은 부분이 있습니다. 세상에 결점 없는 사람이 있을까요?

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

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

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


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

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

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

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

INDIRECT와 ROW로 일정 행 간격의 데이터만 골라내기

핵심 요약

500개 행에 흩어진 데이터 중 20행마다 하나씩처럼 일정한 간격으로 떨어진 값만 골라 다른 시트로 옮겨야 할 때, INDIRECT와 ROW 함수를 조합하면 주소를 일일이 입력할 필요 없이 자동으로 처리할 수 있습니다.

  • ROW() 함수로 현재 행 번호를 구합니다.
  • (ROW()-1)*간격+시작오프셋 공식으로 원본에서 가져올 실제 행 번호를 계산합니다.
  • INDIRECT로 계산된 행 번호를 실제 셀 주소 문자열로 변환해 참조합니다.

질문: 20행씩 떨어진 데이터를 20개의 시트로 자동 분리하고 싶어요

지금 작업하다가 일일이 수작업으로 하기엔 너무 오래 걸릴 것 같아 질문드립니다. 500개의 행 중에 필요한 데이터는 20행씩 떨어져 있거든요. 그 데이터를 20개의 시트로 링크시키려고 했는데 계속 주소만을 입력하는 중입니다. 주소 떨어진 건 일정한데 단지 숫자 간격만 다르다는 것뿐인데, 혹시나 해서 질문을 드리지만 다른 방법이 없나요? 일일이 마우스로 하는 것은 더 복잡할 것 같고요.

계속 주소를 입력하는 것이 첫 번째 시트에서는 =DATA!A2, =DATA!A22, =DATA!A42, =DATA!A62… 식이고, 두 번째 시트에서는 =DATA!A3, =DATA!A23, =DATA!A43, =DATA!A63… 식으로 이어집니다. 혹시 해결책이 있다면 어떤 방법인지 도움을 주시면 감사하겠습니다.

몇 가지 함수를 조합하면 가능한데, 이것을 몰라서 일일이 수작업으로 한다는 것은 다시금 생각해 보아야겠지요.

Source 시트의 A열과 같이 데이터가 한 500개쯤 있다고 할 때, Sheet1에는 A2, A22, A42, A62… 등과 같이 2행을 기준으로 매 20행의 데이터를, Sheet2에는 A3, A23, A43, A63… 등과 같이 3행을 기준으로 매 20행의 데이터를 이런 식으로 반복해서 골라내려면 어떻게 해야 할까요?

이런 경우에는 INDIRECT 함수와 ROW 함수를 적당히 조합해서 사용하면 됩니다.

=INDIRECT("Source!a"&((ROW()-1)*20+2))
=INDIRECT("Source!a"&((ROW()-1)*20+3))

불규칙해 보이는 현상 속에서 규칙을 찾아내는 일이 중요합니다. 어떤 일정한 패턴만 발견해 내면 나머지는 쉬워집니다.

정리 — INDIRECT와 ROW로 일정 간격 데이터 추출하기

구성요소역할
ROW()수식이 입력된 현재 셀의 행 번호를 반환
(ROW()-1)*20현재 행이 몇 번째 반복인지에 20(간격)을 곱해 원본의 오프셋을 계산
+2, +3 … (시작 오프셋)시트별로 다르게 지정해 원본의 연속된 20개 행을 겹치지 않게 배분
INDIRECT("Source!a"&행번호)계산된 행 번호를 실제 셀 주소 문자열로 만들어 그 값을 참조

자주 묻는 질문 (FAQ)

Q1. 간격을 20이 아닌 다른 숫자로 바꾸려면 어떻게 하나요?

수식의 곱하는 숫자 20을 원하는 간격으로 바꾸면 됩니다. 예를 들어 10행 간격이면 (ROW()-1)*10+시작오프셋 형태로 바꾸면 됩니다.

Q2. INDIRECT 대신 다른 함수로도 같은 결과를 얻을 수 있나요?

네, OFFSET 함수로도 동일하게 구현할 수 있습니다. 예: =OFFSET(Source!$A$1,(ROW()-1)*20+1,0). INDIRECT는 시트 이름을 텍스트로 다룰 때, OFFSET은 기준 셀에서 이동량을 계산할 때 각각 편리합니다.

Q3. 왜 시트마다 시작 행 번호가 하나씩 다른가요?

Sheet1은 2행, Sheet2는 3행, Sheet3은 4행처럼 시작 오프셋을 하나씩 다르게 주면, 원본 데이터의 연속된 20개 행을 시트별로 겹치지 않게 나눠 담을 수 있기 때문입니다.

마치며

일정한 간격으로 떨어진 데이터를 골라내는 작업은 언뜻 복잡해 보이지만, ROW로 순번을 만들고 그 순번에 간격을 곱해 실제 위치를 계산하는 패턴 하나만 이해하면 어떤 간격에도 똑같이 응용할 수 있습니다.