본문 바로가기
#2 엑셀 오류 가이드

엑셀에서 데이터 유효성 검사가 작동 안될 때

by 이세계의엑셀 2025. 10. 25.
반응형

엑셀에서 데이터 유효성 검사가 예상대로 적용되지 않거나 드롭다운이 나타나지 않는 문제의 원인과 해결 절차를 체계적으로 정리하여 실무 현장에서 즉시 복구하도록 돕는 것이 목적이다.

증상 정의와 60초 빠른 점검 체크리스트

증상 가능 원인 즉시 점검
드롭다운 화살표가 보이지 않음 유효성 범위 오류, 병합셀, 보호 모드 데이터 → 데이터 유효성 검사에서 목록 범위를 재확인한다.
잘못된 값 입력돼도 경고가 안뜸 경고 스타일이 알림 또는 입력 허용으로 설정 유효성 대화상자에서 오류 메시지 탭의 스타일중지로 변경한다.
일부 셀만 동작 붙여넣기로 규칙 덮어씀 홈 → 찾기 및 선택 → 유효성 데이터로 유효성 있는 범위를 확인한다.
목록은 보이는데 값 선택 시 #N/A 동적 범위/이름 정의 참조 오류 수식 → 이름 관리자에서 참조 범위가 유효한지 본다.
공유 통합 문서에서 규칙 추가 불가 시트 보호, 공동작성 세션 보호 해제 및 파일을 로컬 복사본으로 열어 테스트한다.

원인별 해결책 요약

원인 설명 해결
잘못된 범위 참조 빈 셀 전용, 다른 시트 직접범위, 필터로 숨김 등이다. 목록은 =이름정의 또는 =OFFSET/INDEX로 지정하고 절대참조($)를 확인한다.
붙여넣기로 규칙 손상 값+서식 붙여넣기가 유효성을 덮어쓴다. 선택하여 붙여넣기 → 값만 사용하거나 붙여넣기 옵션 → 유효성 유지를 적용한다.
병합셀 유효성은 병합셀과 결합 시 예외가 발생한다. 병합 해제 후 규칙을 적용하거나 표 구조로 대체한다.
시트/통합 문서 보호 편집 제한으로 규칙 변경이 막힌다. 검토 → 시트 보호 해제 후 규칙을 설정한다.
호환 모드 .xls에서 동적 참조 제한이 존재한다. .xlsx로 저장 후 다시 설정한다.
이름 정의 오류 삭제된 범위를 참조한다. 수식 → 이름 관리자에서 #REF! 항목을 정리한다.
동시 편집 공동작성으로 충돌이 발생한다. 임시로 오프라인 복사본에서 수정한다.
오류 메시지 스타일 알림은 경고만 표시하고 입력을 허용한다. 중지로 바꿔 차단한다.

데이터 유효성 규칙 핵심 구성과 정확한 설정 절차

  1. 대상 범위를 선택한다.
  2. 데이터 → 데이터 유효성 검사를 연다.
  3. 설정 탭에서 허용 유형을 선택한다. 예: 정수, 실수, 목록, 날짜, 사용자 지정이다.
  4. 데이터 조건을 지정한다. 예: 사이, 크거나 같음이다.
  5. 원본에 정확한 참조를 입력한다. 목록은 =이름 또는 =A2:A100이다.
  6. 입력 메시지오류 메시지를 설정한다. 스타일중지로 두면 차단한다.
: 목록 원본이 다른 시트에 있으면 직접 범위는 제한이 있다. 이름 정의로 우회하는 것이 안전하다.

안정적인 목록 만들기: 이름 정의와 동적 범위

정적 목록

  1. 목록 영역을 선택하여 수식 → 이름 정의로 이름을 부여한다. 예: 목록_부서이다.
  2. 유효성 원본에 =목록_부서를 입력한다.

동적 목록(빈칸 포함 시 확장)

=OFFSET(목록시트!$A$2,0,0,COUNTA(목록시트!$A:$A)-1,1)

동적 목록(정확·고속: INDEX 기반)

=목록시트!$A$2:INDEX(목록시트!$A:$A,COUNTA(목록시트!$A:$A))

대용량에서는 INDEX 기반이 빠르다.

동적 배열 함수와의 결합

=UNIQUE(FILTER(목록시트!$A$2:$A$1000,목록시트!$B$2:$B$1000="사용"))

동적 배열 영역은 이름 정의에서 =목록시트!$D$2#로 지정하고 유효성 원본에 그 이름을 쓴다.

드롭다운 화살표가 안 보일 때 꼭 보는 항목

  • 셀 너비가 너무 좁으면 화살표가 시각적으로 가려진다.
  • 개체 위에 셀이 겹친 경우 도형이 가릴 수 있다.
  • 병합셀은 피한다. 병합을 해제하고 적용한다.
  • 숨김/보호 상태를 해제하고 재시도한다.

값이 막히지 않을 때: 오류 메시지 스타일 점검

스타일 동작 사용 예
중지 허용 범위 밖 입력을 차단한다. 코드, 품목 번호처럼 반드시 제한해야 하는 경우이다.
경고 경고 후 로 통과한다. 임시 예외 허용이 필요한 경우이다.
알림 알림만 표시하고 입력은 허용한다. 권고만 필요한 경우이다.

붙여넣기 때문에 규칙이 사라지는 문제와 예방

문제

다른 시트에서 복사한 셀을 Ctrl+V로 붙여넣으면 대상 셀의 유효성이 덮어쓰여 작동하지 않을 수 있다.

예방

  • 홈 → 붙여넣기 → 선택하여 붙여넣기에서 만 선택한다.
  • 서식 단추에서 유효성 유지 옵션을 사용한다(버전별 용어 상이하다).

사후 복구

  1. 유효성 규칙이 있는 셀을 복사한다.
  2. 대상 범위를 선택하고 선택하여 붙여넣기 → 유효성만 붙여넣기 한다.

표(Table)와 유효성의 상호작용

엑셀 표의 구조적 참조는 유효성 원본에 직접 사용 시 오류가 날 수 있다. 이름 정의에서 =INDIRECT("표1[열A]")는 동적이지만 느리다. 대안으로 표 열의 실제 범위를 INDEX로 감싸 고정하여 사용한다.

=표시트!$B$2:INDEX(표시트!$B:$B,ROWS(표1[열B])+ROW(표1[#머리글]))

사용자 지정 수식 유효성: 정확한 상대참조

허용: 사용자 지정에서 수식을 사용할 때 선택한 범위의 첫 셀 기준 상대참조가 핵심이다.

예1) 1~100만 허용: =AND(ISNUMBER(A2),A2>=1,A2<=100)
예2) 공백 금지: =LEN(TRIM(A2))>0
예3) 중복 금지(열 A): =COUNTIF($A:$A,A2)=1
예4) 날짜가 오늘 이상: =A2>=TODAY()

범위를 A2:A1000으로 선택하고 위 수식을 적용하면 된다.

다단계(종속) 드롭다운이 동작하지 않을 때

  1. 상위 목록 값과 동일한 이름을 하위 목록 범위에 부여한다. 예: 상위=“서울”이면 이름 “서울”을 만든다.
  2. 하위 유효성 원본에 =INDIRECT($B2)를 사용한다.
  3. 상위 목록 값에 공백·특수문자가 있으면 이름으로 사용할 수 없으니 SUBSTITUTE로 정규화한다.
정규화 예: =SUBSTITUTE(SUBSTITUTE(B2," ","_"),"-","_")

필터·정렬·숨김과 유효성의 관계

  • 필터로 숨겨진 셀도 유효성은 적용된다.
  • 정렬 후 상대참조 수식 유효성은 정상 작동한다.
  • 숨김 시트의 범위를 원본으로 직접 지정하면 일부 버전에서 오류가 난다. 이름 정의를 사용한다.

시트 보호와 공동작성 환경 이슈

  • 시트 보호가 켜져 있으면 규칙 추가·삭제가 제한된다. 보호를 해제하고 처리한다.
  • OneDrive/SharePoint 공동작성 중에는 충돌로 규칙이 일시적으로 무시될 수 있다. 단독 편집 모드에서 재설정한다.

호환 모드(.xls)와 버전 차이

  • .xls에서는 데이터 유효성의 일부 동작과 동적 배열이 제한적이다. .xlsx로 저장 후 다시 설정한다.
  • Mac과 Windows 간 단축키와 대화상자 명칭이 일부 다르다. 원리는 동일하다.

진단 흐름: 6단계 점검 절차

단계 질문 조치
1 대상 셀의 유효성 유형이 올바른가 목록/사용자 지정 등 유형과 조건을 재설정한다.
2 원본 범위가 유효한가 이름 정의를 통해 =이름으로 연결한다.
3 오류 메시지 스타일은 중지인가 차단이 필요하면 중지로 설정한다.
4 병합셀/보호/공유 중인가 병합 해제, 보호 해제, 단독 편집으로 전환한다.
5 붙여넣기로 규칙이 손상됐는가 유효성만 붙여넣기로 복구한다.
6 버전/호환 문제가 있는가 .xlsx로 저장 후 재설정한다.

실무 예제 1: 품목코드 형식 검증

형식: 영문 3자 + 숫자 4자만 허용한다.

=AND(LEN(A2)=7,ISNUMBER(--RIGHT(A2,4)),EXACT(LEFT(A2,3),UPPER(LEFT(A2,3))),COUNTIF(A:A,A2)=1)

설명: 길이 7자, 뒤 4자 숫자, 앞 3자 영대문자, 중복 금지이다.

실무 예제 2: 목록과 사용자 지정 결합

드롭다운에서 선택 또는 “기타-설명” 형식만 허용한다.

=OR(COUNTIF(목록_분류,A2)=1,LEFT(A2,3)="기타")

실무 예제 3: 연속 입력 범위 제한

이전 행 값보다 같거나 큰 숫자만 허용한다.

=OR(ROW()=2,AND(ISNUMBER(A2),A2>=A1))

VBA로 유효성 규칙 일괄 복구

붙여넣기로 유효성이 사라진 열 A에 규칙을 재적용하는 매크로 예시이다.

Sub ReapplyValidationA()
    Dim rng As Range
    Set rng = Range("A2:A1000")
    With rng.Validation
        .Delete
    End With
    With rng.Validation
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
            Operator:=xlBetween, Formula1:="=목록_부서"
        .IgnoreBlank = True
        .InCellDropdown = True
        .ErrorTitle = "허용되지 않는 값"
        .ErrorMessage = "목록에서 선택하거나 규칙을 확인하라."
        .ShowError = True
    End With
End Sub

매크로 실행 전 개발 도구 탭을 활성화하고 신뢰 설정을 확인해야 한다.

오류 메시지 텍스트 베스트 프랙티스

  • 무엇이 잘못인지와 무엇을 해야 하는지 한 문장으로 안내한다.
  • 허용 범위를 구체적으로 제시한다.
  • 고유 ID는 생성 규칙 링크나 예시를 제공한다.
제목: 입력 형식 오류
메시지: 품목코드는 영문 3자+숫자4자 형식이어야 한다. 예: ABC1234

품질 관리용 모니터링 기법

  • 조건부 서식으로 유효성 위반 셀을 시각화한다.
  • 데이터 → 데이터 유효성 → 원형 데이터로 대상 범위를 목록화한다(버전별 명칭 상이하다).
  • 파워쿼리로 업로드 전 규칙 검사를 자동화한다.

문제 재발 방지를 위한 조직 표준

  • 목록은 반드시 이름 정의로 관리한다.
  • 입력 시트와 마스터 목록 시트를 분리한다.
  • 붙여넣기 지침을 문서화하고 서식 전용 붙여넣기를 금지한다.
  • 배포 전 호환성 검사와 보호 설정 점검을 실시한다.

자주 묻는 질문(FAQ)

Q1. 유효성 목록 원본이 다른 파일에 있을 때 방법은 무엇인가

다른 통합 문서 직접 참조는 불안정하다. 목록을 현재 파일로 가져오거나 파워쿼리로 동기화하고 이름 정의를 사용한다.

Q2. 빈 칸을 허용하면서 드롭다운도 쓰고 싶다

무시 옵션을 켜고 사용자 지정 수식에 =OR(A2="",COUNTIF(목록_부서,A2)=1)을 사용한다.

Q3. 숫자와 문자 혼합 허용 범위를 어떻게 제한하나

정규식이 없으므로 조합 함수로 구현한다. 예: 길이, 숫자 변환 가능성, 대문자 강제 등을 LEN, ISNUMBER, UPPER로 조합한다.

Q4. 유효성이 적용된 셀만 한 번에 선택할 수 있나

홈 → 찾기 및 선택 → 데이터 유효성을 사용한다. 찾기 결과에 대해 규칙을 일괄 수정할 수 있다.

Q5. 동적 배열 결과 영역 자체에 유효성을 걸 수 있나

결과 영역은 스필된 값이므로 입력 차단은 의미가 적다. 대신 입력 셀에 유효성을 적용하고 결과는 보호한다.

요약 : 이름 정의로 원본을 안정화하고, 중지 스타일로 차단하며, 붙여넣기 정책을 통제하면 대부분의 유효성 문제를 예방할 수 있다. 병합셀과 호환 모드를 피하고 공동작성 시 단독 편집으로 전환하여 규칙을 재적용하면 복구된다.
반응형