엑셀 정렬·필터가 작동하지 않을 때 완벽 해결 가이드

이 글의 목적은 엑셀에서 정렬 또는 자동 필터가 작동하지 않을 때 근본 원인을 체계적으로 진단하고, 현장에서 바로 적용 가능한 실무 해결책과 예방 팁을 제시하는 것이다.

왜 정렬·필터가 갑자기 안 되는가: 원인 맵 개요

정렬과 필터는 표 구조, 데이터 유형 일관성, 숨김 요소 등에 민감하게 반응한다. 다음 네 가지 축에서 문제를 진단하면 대부분의 사례를 신속히 해결할 수 있다.

  • 범위 인식 문제 : 빈 행·열, 병합된 셀, 표 경계 미설정, 여러 데이터 블록 혼재 등이다.
  • 데이터 유형 문제 : 텍스트로 저장된 숫자, 날짜·시간 서식 혼재, 숨은 문자, 선행·후행 공백 등이다.
  • 기능 상태 문제 : 필터가 비활성화, 보호·공유 모드, 객체·도형·비합법 수식 상태, 손상된 파일 등이다.
  • 환경·설정 문제 : 지역 설정, 사용자 지정 목록, 필드 버튼 숨김, 테이블·피벗·파워쿼리 상호작용 등이다.
주의 : 증상만 보고 무작정 정렬·필터를 재시도하지 말고, 표 범위와 데이터 유형을 먼저 표준화한 후 기능을 적용해야 한다.

증상별 빠른 처방표

증상주요 원인즉시 조치
정렬 후 행이 서로 섞이거나 일부만 정렬됨 연속 범위가 아님, 병합된 셀 포함, 숨겨진 빈 행 존재 범위를 단일 표로 통합하고 병합 해제 후 모든 열 선택 상태에서 정렬한다
필터 단추(드롭다운)가 회색 표가 아님, 보호·공유 모드, 시트 개체 충돌 검토→시트 보호 해제, 데이터→필터 활성화, 필요 시 표로 변환(Ctrl+T)한다
오름차순/내림차순이 예상과 다름 텍스트 숫자 혼재, 날짜 서식 불일치, 숨은 공백 VALUE, DATEVALUE, TRIM, CLEAN으로 표준화 후 재정렬한다
특정 값이 필터에 나타나지 않음 공백·보이지 않는 문자, 앞뒤 공백, 수식 에러 SUBSTITUTE로 제어문자 제거, 오류 처리(IFERROR) 후 필터 재적용한다
테이블 열 일부만 필터 가능 머리글 인식 실패, 병합 머리글, 숨김 열 머리글 1행을 단일 행으로 만들고 병합 해제 후 테이블 재생성한다
정렬 버튼 클릭 시 아무 변화 없음 필터 모드에서 하위 집합만 정렬, 배열 수식/연결된 범위 필터 해제 후 전체 범위 선택→정렬, 필요 시 값 붙여넣기 후 정렬한다

1. 범위 인식 문제 해결

1-1. 단일 표 범위로 묶기

연속되지 않은 데이터 블록, 중간 빈 행·열은 정렬 축을 분리한다. 다음 절차로 단일 범위를 만든다.

  1. 데이터 범위 내부 아무 셀 클릭한다.
  2. Ctrl+A 두 번으로 범위 전체를 선택한다.
  3. 홈→찾기 및 선택→이동 옵션→빈 셀→삭제→셀을 위로 이동을 사용해 빈 행을 제거한다.
  4. 데이터→텍스트 나누기, 데이터→중복 제거를 활용해 열 구조를 정리한다.
  5. Ctrl+T로 표(테이블)로 변환하고 “머리글 포함”을 확인한다.
주의 : 테이블로 변환하면 필터·정렬이 머리글 기준으로 일관되게 적용된다. 범위를 수시로 확장해야 한다면 테이블이 가장 안전하다.

1-2. 병합된 셀 일괄 해제 및 값 채우기

병합된 셀은 정렬·필터의 대표적인 방해 요소이다. 다음 VBA로 범위의 병합을 해제하고 위쪽 값으로 채운다.

Sub UnmergeAndFill() Dim rng As Range On Error Resume Next Set rng = Selection If rng Is Nothing Then Exit Sub With rng .UnMerge .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C" .Value = .Value End With End Sub 
주의 : 병합 해제 후 빈 셀을 위의 값으로 채우지 않으면 필터 조건에서 누락된다.

1-3. 머리글 행 표준화

머리글이 두 줄 이상이거나 병합된 경우 필터 드롭다운이 일부만 표시된다. 머리글은 정확히 1행으로 만들고 병합을 모두 해제한 후 테이블을 재생성한다.

2. 데이터 유형 표준화

2-1. 텍스트로 저장된 숫자 정리

오름차순 정렬 시 1, 10, 2 순으로 정렬되면 텍스트 숫자 혼재이다. 다음 방법 중 하나를 사용한다.

  • 오류 표시 삼각형 클릭→숫자로 변환을 선택한다.
  • 빈 셀에 1 입력→복사→문제 범위 선택→선택하여 붙여넣기→곱하기.
  • 새 열에 VALUE 함수를 사용한다.
=VALUE(A2) 

변환 후 값 붙여넣기(Ctrl+C → 마우스 오른쪽 → 값 붙여넣기)로 수식을 값으로 고정한다.

2-2. 날짜·시간 서식 혼재 해결

날짜가 텍스트와 실제 날짜가 섞이면 정렬이 비논리적으로 보인다. 다음 절차를 따른다.

  1. 문자열 날짜는 DATEVALUE, 시간은 TIMEVALUE로 변환한다.
  2. yyyy-mm-dd 또는 지역 날짜 형식으로 서식을 적용한다.
=DATEVALUE(A2) ' "2025-10-26" 같은 텍스트를 날짜로 변환 =DATEVALUE(LEFT(A2,10)) ' 날짜+시간 텍스트에서 날짜만 추출 =TIMEVALUE(RIGHT(A2,8)) ' "HH:MM:SS" 텍스트를 시간으로 변환 
주의 : 날짜 비교·정렬은 일련번호가 기준이다. 표시 형식이 아니라 내부 값의 타입을 통일해야 한다.

2-3. 보이지 않는 문자·공백 제거

필터 목록에 동일한 값이 중복 표시되거나 조건 필터에 잡히지 않으면 제어문자나 공백이 섞여 있을 가능성이 높다.

=TRIM(CLEAN(SUBSTITUTE(A2,CHAR(160)," "))) 

위 공식은 일반 공백과 불간격 공백(CHAR(160))을 표준 공백으로 정리하고, 제어문자를 제거한 후 양끝 공백을 없앤다. 정리 열을 값으로 붙여넣기 한 뒤 원본 열을 교체한다.

3. 기능 상태 점검

3-1. 필터 비활성화·재적용

  1. 데이터→필터를 한 번 더 눌러 해제 후 다시 활성화한다.
  2. 표 모드라면 테이블 디자인→필터 단추 체크를 확인한다.
  3. Alt+A, T(Windows)로 토글, Alt+A, C로 필터 지우기를 수행한다.
' 모든 시트의 필터 해제 VBA Sub ClearAllFilters() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If ws.AutoFilterMode Then ws.AutoFilter.ShowAllData ws.AutoFilterMode = False Next ws End Sub 

3-2. 보호·공유 모드 확인

  • 검토→시트 보호 해제, 통합 문서 보호 해제 후 시도한다.
  • 공유 통합 문서(과거 기능) 모드에서는 일부 정렬 옵션이 제한된다. 공유를 해제하고 수행한다.

3-3. 연결·수식·배열 영향

외부 연결된 범위, 동적 배열 수식(SPILL) 범위는 정렬을 제한할 수 있다. 값 붙여넣기 복사본에서 정렬해 결과를 역전개한다.

4. 환경·설정 이슈

4-1. 지역(로케일)과 사용자 지정 목록

한글·영문 혼용, 천 단위 구분자, 마침표/쉼표 소수점 표기 차이는 정렬 결과에 영향을 준다. 파일→옵션→고급에서 구분자 설정을 확인한다. 사용자 지정 목록(예: 월 이름 순서)이 적용된 정렬은 사전순과 다를 수 있다. 데이터→정렬→옵션→사용자 지정 목록에서 확인한다.

4-2. 테이블·피벗·파워쿼리 상호작용

  • 테이블 : 새 행 추가 시 테이블 자동 확장을 확인한다. 머리글 필터가 열 전체에 적용되는지 점검한다.
  • 피벗 테이블 : 원본 범위가 업데이트되었는지 확인하고, 분석→새로 고침을 실행한다. 피벗 필드의 레이블 필터와 원본 시트 필터를 혼용하면 혼란이 생긴다.
  • 파워쿼리 : 쿼리 결과 시트는 새로 고침 시 덮어쓰여 정렬이 초기화될 수 있다. 정렬은 쿼리 단계에서 수행하고 결과를 로드한다.

5. 표준 점검 체크리스트

번호점검 항목방법합격 기준
1단일 연속 범위 여부Ctrl+A 두 번으로 전체 선택범위 내부에 완전 빈 행·열 없음
2병합 셀 존재 여부홈→병합 및 가운데 맞춤 확인머리글·데이터 영역 병합 0건
3머리글 1행행 높이·병합 상태 점검머리글 단일 행, 병합 0건
4데이터 유형 일관성오른쪽 정렬·형식 검사숫자=숫자 형식, 날짜=날짜 형식
5숨은 문자 제거TRIM, CLEAN, SUBSTITUTE중복 값 표시 정상화
6필터 상태Alt+A, T 토글머리글 드롭다운 정상 표시
7보호·공유 해제검토 탭정렬·필터 사용 가능
8외부 연결 영향값 붙여넣기 테스트값 범위에서 정렬 정상
9파워쿼리 단계 정렬쿼리 편집기에서 정렬새로 고침 후에도 유지
10지역·사용자 목록정렬 옵션 확인의도한 순서와 일치

6. 실무형 정리 파이프라인: 복사·정규화·검증 3단계

6-1. 원본 보존 복사

원본 시트를 복제하여 작업한다. 정렬·필터는 비가역적일 수 있으므로 백업은 필수이다.

6-2. 정규화 열 만들기

다음 예시는 A열 텍스트 숫자, B열 날짜 텍스트, C열 코드값(공백·제어문자 포함)을 정규화하는 패턴이다.

' D열: 숫자 표준화 =IF(A2="","",VALUE(A2))
' E열: 날짜 표준화
=IF(B2="","",DATEVALUE(LEFT(B2,10)))

' F열: 코드값 공백·제어문자 제거
=IF(C2="","",TRIM(CLEAN(SUBSTITUTE(C2,CHAR(160)," "))))

검증 후 D:E:F를 값으로 붙여넣기 하고, A:B:C를 교체한다.

6-3. 일관성 테스트

다음 수식으로 열 유형의 일관성을 점검한다.

=SUMPRODUCT(--ISNUMBER(A2:A1000))=COUNTA(A2:A1000) =SUMPRODUCT(--(INT(E2:E1000)=E2:E1000))=COUNTA(E2:E1000) 

TRUE가 아니면 해당 열은 혼재 상태이므로 재정규화한다.

7. 고급 정렬·필터 활용

7-1. 다중 키 정렬

데이터→정렬→수준 추가를 사용해 “부서→직급→이름” 순으로 정렬 키를 늘린다. 텍스트 키에는 사용자 지정 목록을 사용해 조직 고유 순서를 반영한다.

7-2. 고급 필터

데이터→고급에서 조건 범위를 별도로 두고 복사 위치 지정으로 결과를 추출한다. 이는 원본을 보존하면서 필터링된 결과를 고정할 때 유용하다.

7-3. 수식 기반 필터(도움열)

다중 조건이 복잡할 때 도움열을 만든다.

=AND($D2>=DATE(2025,1,1), $D2<=DATE(2025,12,31), LEFT($F2,3)="ABC") 

도움열이 TRUE인 행만 필터링한다.

8. 파워쿼리에서 정렬·필터가 초기화되는 경우

시트에서 수동 정렬을 해도 새로 고침 시 파워쿼리 출력이 다시 덮어써진다. 해결책은 쿼리 편집기에서 정렬 단계를 추가하는 것이다.

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Filtered Rows" = Table.SelectRows(Source, each [Status] = "Active"), #"Trimmed" = Table.TransformColumns(#"Filtered Rows", {{"Code", Text.Trim, type text}}), #"Sorted Rows" = Table.Sort(#"Trimmed",{{"Dept", Order.Ascending},{"Grade", Order.Descending}}) in #"Sorted Rows" 
주의 : 정렬·필터 단계는 쿼리의 아래쪽에 위치시켜 이후 단계에서 의도치 않게 무효화되지 않도록 한다.

9. 피벗 테이블 연동 이슈

  • 피벗 원본 범위에 새로운 행이 포함되도록 범위를 테이블로 바꾸고 “테이블/범위 변경”을 테이블 이름으로 지정한다.
  • 피벗의 레이블 필터와 값 필터는 원본 시트 필터와 독립적으로 동작한다. 혼용 시 결과가 달라질 수 있으므로 한쪽을 기준으로 운영한다.
  • 피벗 새로 고침(Alt+F5/전체 Ctrl+Alt+F5) 후 정렬 상태를 점검한다.

10. 손상·캐시·대용량 이슈

간헐적으로 필터 목록이 비정상적으로 짧거나 정렬 후 화면이 갱신되지 않으면 다음을 시도한다.

  1. 파일을 새 이름으로 저장 후 재시작한다.
  2. 파일→옵션→고급→이통합문서의 정확도 설정을 확인하고, 하드웨어 그래픽 가속 사용 안 함을 선택해 본다.
  3. 대용량의 경우 데이터 모델·파워쿼리로 전처리 후 시트에 필요한 최소 열만 로드한다.

11. Windows/Mac 절차 요약

항목WindowsMac
필터 토글 Alt+A, T Cmd+Shift+F 또는 데이터→필터
필터 지우기 Alt+A, C 데이터→지우기
테이블 만들기 Ctrl+T Cmd+T
정렬 대화상자 Alt+D, S 데이터→정렬
중복 제거 데이터→중복 제거 데이터→중복 제거

12. 실전 시나리오 3가지

시나리오 A: 거래일 정렬이 무의미한 순서로 표시됨

  1. 날짜 열을 새 열로 DATEVALUE 변환한다.
  2. 변환 열을 값으로 고정 후 원본 대체한다.
  3. 정렬 대화상자에서 거래일→오름차순으로 설정한다.

시나리오 B: 고객코드 필터에서 똑같은 값이 두 번씩 보임

  1. 도움열에 TRIM/CLEAN/SUBSTITUTE를 적용한다.
  2. 값으로 고정 후 원본 교체한다.
  3. 필터 지우기→필터 재적용한다.

시나리오 C: 부서·직급 함께 정렬해야 하나 결과가 뒤섞임

  1. 범위 전체를 선택한다.
  2. 데이터→정렬→수준 추가를 통해 부서→직급→이름 순으로 키를 설정한다.
  3. 직급은 사용자 지정 목록(임원>부장>차장>과장>대리>사원)을 등록하여 적용한다.

13. 자주 발생하는 함정과 예방

  • 머리글이 데이터로 포함 : 정렬 시 머리글이 섞이면 “내 데이터에 머리글 행이 있습니다”를 반드시 체크한다.
  • 숨겨진 행·열 : 숨김 상태에서 부분 정렬되면 논리 오류가 발생한다. 정렬 전 전체 표시를 권장한다.
  • 공백 행으로 시각 분리 : 가독성 목적의 빈 행은 표를 분절한다. 서식(굵게, 굵은 테두리)로 대체한다.
  • 병합 기반 레이아웃 : 보고서 형태 배치 시 병합 대신 “셀 가운데 맞춤(선택 영역 가운데 맞춤)”을 사용한다.

14. 통합 자동 정리 매크로(선택)

다음 매크로는 현재 선택 범위를 기준으로 병합 해제, 공백·제어문자 정리, 텍스트 숫자 변환, 필터 초기화를 일괄 수행한다. 운영 환경에 맞게 백업 후 사용한다.

Sub NormalizeAndReset() Dim rng As Range, c As Range On Error Resume Next Set rng = Selection If rng Is Nothing Then Exit Sub
' 병합 해제 및 값 채우기
With rng
    .UnMerge
    .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
    .Value = .Value
End With

' 텍스트 숫자 변환 & 공백/제어문자 제거
For Each c In rng.Cells
    If Not IsEmpty(c) Then
        c.Value = WorksheetFunction.Trim(WorksheetFunction.Clean(Replace(c.Value, Chr(160), " ")))
        If Not IsNumeric(c.Value) And c.HasFormula = False Then
            If IsNumeric(Val(c.Value)) Then c.Value = Val(c.Value)
        End If
    End If
Next c

' 필터 초기화
If ActiveSheet.AutoFilterMode Then
    On Error Resume Next
    ActiveSheet.ShowAllData
    On Error GoTo 0
    ActiveSheet.AutoFilterMode = False
End If
End Sub
주의 : 자동화 스크립트는 데이터 유형과 지역 설정에 영향을 받을 수 있다. 테스트 파일에서 검증 후 운영 파일에 적용한다.

15. 최종 점검 루틴

  1. 머리글 1행, 병합 0건 확인한다.
  2. 숫자·날짜·텍스트 유형을 표준화한다.
  3. 숨은 공백·제어문자를 제거한다.
  4. 테이블 변환 후 정렬·필터를 적용한다.
  5. 필요 시 다중 키·사용자 목록으로 비즈니스 순서를 반영한다.
  6. 파워쿼리·피벗 사용자는 해당 단계에서 정렬·필터를 정의한다.

FAQ

정렬 후 합계가 엉키는 이유는 무엇인가?

부분합이나 합계 셀의 범위가 고정 주소로 설정된 상태에서 데이터가 이동하면 계산 대상이 어긋난다. 합계에는 테이블의 구조적 참조나 동적 범위를 사용하고, 정렬 전후에 수식의 참조 범위를 확인해야 한다.

숫자처럼 보이는데 왜 텍스트로 인식되는가?

선행 아포스트로피('123), 비표준 공백(CHAR(160)), 서식 "텍스트"가 적용된 경우이다. VALUE 변환과 TRIM/CLEAN, 서식 일반으로 재설정하면 해결된다.

필터 목록이 일부만 보이거나 빈 값만 나온다.

머리글 인식 실패, 병합 머리글, 숨김 행 영향 가능성이 높다. 머리글을 단일 행으로 표준화하고 병합을 해제한 뒤 필터를 재적용한다.

사용자 지정 목록 정렬을 일반 사전순으로 바꾸려면?

데이터→정렬→옵션에서 “사용자 지정 목록” 대신 “사전순”을 선택하거나 사용자 목록 항목을 제거한다.

피벗 테이블 필터와 시트 필터를 함께 써도 되는가?

가능하나 해석이 혼란스러울 수 있다. 피벗 결과만으로 분석할 때는 피벗 필터만, 원본 시트 분석일 때는 시트 필터만 사용하는 것을 권장한다.