• 최초 작성일: 2025-01-24
  • 최종 수정일: 2026-09-27
  • 조회수: 42 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: VBA 파워 코딩 242회 - 두 숫자 사이 개수

들어가기 전에

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

엑셀에는 수많은 함수(내장 함수, Built-in Function)가 있어서 사용자가 용도에 맞게 사용할 수 있습니다. 하지만 '이런 이런 기능을 수행하는 함수가 분명 있을 텐데...'라고 생각됨에도 불구하고 내장 함수로 만들어져 있지 않은 경우가 있습니다. 이번 시간에 만들어 볼 함수도 바로 그런 종류의 함수입니다.

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

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

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


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

두 숫자 사이 값의 수를 카운팅해주는 Code

핵심 요약: 두 숫자 사이 값의 개수를 구하는 CountNumber 함수

CountNumber(범위, 숫자1, 숫자2) 사용자 정의 함수는 두 숫자의 크기를 If 문으로 비교한 뒤 CountIfs 함수로 작은 수 이상, 큰 수 이하인 셀의 개수를 구합니다.

  • 사용 예: =CountNumber(A1:A100, 1000, 2000)
  • 순서 무관: 큰 수와 작은 수의 순서를 바꿔 입력해도 같은 결과
  • 만드는 위치: VBE에서 '삽입 - 모듈' 후 코드 입력
  • 주의: CountIfs는 엑셀 2007 이상에서 지원

두 숫자 사이 값의 개수 구하기

다음과 같은 데이터가 있다고 할 때, 범위(A1:A100)와 두 숫자(1000과 2000)를 입력하면, 범위 중에서 두 숫자 사이의 값이 몇 개가 있는지 구해 줍니다. 이 경우에는 A1:A100 영역 중에서 1000과 2000 사이의 숫자가 몇 개인지를 카운팅합니다.

A1:A100 범위에서 1000과 2000 사이의 값의 개수를 CountNumber 함수로 구한 워크시트
아이엑셀러

CountNumber 사용자 정의 함수 만들기

(1) 워크시트 상태에서 <Alt> + <F11> 키를 눌러서 VBE(Visual Basic Editor) 상태로 들어갑니다.

(2) '삽입 - 모듈' 메뉴를 클릭하여 모듈을 삽입하고 다음 코드를 입력합니다.

Function CountNumber(rngX, X, Y)           ' 값을 구할 범위, 두 개의 숫자를 인수로 전달
    With Application.WorksheetFunction
        If X >= Y Then                     ' 첫 번째 숫자가 두 번째 숫자보다 크면
            CountNumber = .CountIfs(rngX, ">=" & Y, rngX, "<=" & X)
                                       ' 두 숫자 범위 내의 수가 몇개인지 구함
        Else                               ' 첫 번째 숫자가 두 번째 숫자보다 작으면
            CountNumber = .CountIfs(rngX, ">=" & X, rngX, "<=" & Y)
                                           ' X 이상이고 Y이하인 셀의 수를 카운팅하여 결과로 돌려줌.
        End If
    End With
End Function

참고: 원문 코드 수정

원문 코드의 첫 번째 CountIfs 줄에는 닫는 괄호가 빠져 있어 )를 넣었습니다. 또한 본문의 "If 함수"는 실제로는 If 문이므로 "If 문"으로 고쳤습니다.

(3) 이제 아무 셀에나 가서 =countnumber(범위, 작은 수, 큰 수) 또는 =countnumber(범위, 큰 수, 작은 수) 형태로 수식을 입력해 보세요. If 문을 이용하여 조건 분기 처리를 해 주었기 때문에 큰 수와 작은 수의 순서를 바꿔 지정해도 제대로 작동합니다.

여기서 주의할 점! 엑셀의 워크시트 함수인 CountIfs 함수를 사용했습니다. 이 함수는 엑셀 2007 버전부터 지원됩니다. 따라서 그 이전 버전을 사용하고 있다면 오류가 발생합니다. 엑셀 2007 이전 버전을 사용하신다면 CountIf 함수를 사용하여 코드를 수정해서 사용하세요.

참고: 이미지에 대하여

이 글은 원래 네이버 포스트에 게재되었던 글로, 네이버 포스트 서비스 종료로 네이버 블로그로 옮기는 과정에서 원본 이미지가 소실되었습니다. 위 이미지는 본문 설명을 바탕으로 당시 화면 구성을 재구성한 예시 이미지이며, 실제 엑셀 화면과 세부 디자인(버전별 UI)은 다를 수 있습니다. 이미지 속 A열의 값은 예시로 만든 100개의 숫자이고, 개수(44)는 그 값으로 실제 계산한 결과입니다.

정리 — CountNumber 함수

항목 내용
함수 형식 =CountNumber(범위, 숫자1, 숫자2)
결과 두 숫자 사이(작은 수 이상, 큰 수 이하)에 있는 값의 개수
순서 처리 If 문으로 두 숫자의 크기를 비교하므로 순서를 바꿔 입력해도 됨
주의 CountIfs는 엑셀 2007 이상에서 지원

자주 묻는 질문 (FAQ)

Q1. 두 숫자 사이에 있는 값이 몇 개인지 구하는 내장 함수가 있나요?

그런 용도로 만들어진 내장 함수는 없습니다. 이 강좌의 CountNumber처럼 사용자 정의 함수를 만들어 CountIfs 함수를 활용하면 됩니다.

Q2. 큰 수와 작은 수의 순서를 바꿔 입력해도 되나요?

됩니다. 코드에서 If 문으로 첫 번째 숫자가 두 번째 숫자보다 큰지 비교하여 처리하므로 =CountNumber(범위, 작은 수, 큰 수), =CountNumber(범위, 큰 수, 작은 수) 어느 쪽으로 입력해도 같은 결과가 나옵니다.

Q3. 엑셀 2007 이전 버전에서는 오류가 발생합니다.

CountIfs 함수는 엑셀 2007 버전부터 지원됩니다. 그 이전 버전에서는 CountIf 함수를 사용하여 코드를 수정해서 사용하세요.

마치며

없는 함수는 만들어 쓰면 됩니다. CountNumber처럼 자주 쓰는 계산을 사용자 정의 함수로 만들어 보세요!
VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 사이트 정문 왼쪽에 있는 'VBA 강좌 - VBA 입문강좌'를 읽어보시면 이해가 빠릅니다.