Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기이 글의 목적은 엑셀에서 조건에 맞는 데이터만 빠르게 추출하는 모든 방법을 체계적으로 정리하여 실무자가 상황별 최적 해법을 즉시 선택할 수 있도록 돕는 것이다.
| 방법 | 권장 버전 | 강점 | 제약·주의 | 대표 사용 시나리오 |
|---|---|---|---|---|
| 자동필터(필터) | 모든 버전 | 즉시 적용, UI 직관적이다 | 결과가 다른 시트로 복사되지 않는다 | 빠른 조회, 다중 선택, 텍스트/숫자/날짜 조건 |
| 고급 필터 | 모든 버전 | 다중 조건·복합 OR/AND, 다른 시트·범위로 복사 가능하다 | 조건범위 규칙을 정확히 이해해야 한다 | 보고서용 별도 범위 추출, 중복 제거 후 결과 복사 |
| FILTER 함수(동적 배열) | Microsoft 365 / 2021 이상 | 수식만으로 자동 갱신, 다중조건·연쇄 필터링이 쉽다 | 구버전 호환이 어렵다 | 대시보드, 실시간 조건 연동, 다단 정렬·고유값 결합 |
| 표(Table)+슬라이서 | 2013 이상 권장 | 클릭형 필터, 다중 선택·시각화가 쉽다 | 수식 출력이 아닌 보기(View) 중심이다 | 현장 조회용 리스트, 운영자용 필터 패널 |
| SUMIFS/COUNTIFS 등 | 모든 버전 | 조건 합계·개수를 즉시 계산한다 | 행 단위 추출이 아닌 집계 중심이다 | 조건부 KPI 산출, 조건부 통계 |
| DSUM/DGET 등 데이터베이스 함수 | 모든 버전 | 고급 필터와 동일 규칙의 조건범위를 사용한다 | 조건범위 관리가 번거롭다 | 문서화된 조건표 기반 집계 |
목록 머리글을 포함한 범위를 선택하고 Ctrl+Shift+L을 누르면 머리글에 드롭다운이 생성된다. 텍스트 필터·숫자 필터·날짜 필터를 통해 조건을 결합할 수 있다.
예: "품목" 열에서 '밸브'를 포함하는 행만 보기 - 머리글 ▼ > 텍스트 필터 > 포함 > 밸브 여러 열에 동시 조건을 적용하면 모두 AND로 연결된다. 같은 열에서 복수 값을 체크하면 OR로 결합된다.
고급 필터는 조건범위를 별도로 만들어 다중 조건의 AND/OR 논리를 명시하고, 결과를 다른 위치로 복사할 수 있다. 중복 레코드 제거도 가능하다.
| 원본 열 | 조건 예시 | 의미 |
|---|---|---|
| 지역 | =서울 | 지역이 정확히 서울이다 |
| 매출 | >=1000000 | 매출이 100만 이상이다 |
| 품목 | *밸브* | 품목에 "밸브"를 포함한다 |
| 일자 | >=2025-01-01 | 2025-01-01 이후이다 |
복합 조건 예시(AND+OR) [조건범위] 지역 | 매출 서울 | >=1000000 부산 | >=1500000
해석:
(지역=서울 AND 매출≥1,000,000) OR (지역=부산 AND 매출≥1,500,000)
FILTER는 배열을 조건식으로 거른 결과를 동적 범위로 반환한다. 원본 데이터가 바뀌면 결과가 자동 갱신된다.
=FILTER(array, include, [if_empty]) array는 반환할 원본 범위이고, include는 TRUE/FALSE 배열이다. if_empty는 결과가 없을 때 표시할 값을 지정한다.
=FILTER(A2:D100, C2:C100>=DATE(2025,1,1), "해당 없음") =FILTER(A2:D100, (B2:B100="서울")*(C2:C100>=1000000)) 곱셈(*)은 논리 AND를 의미한다.
=FILTER(A2:D100, (B2:B100="서울")+(B2:B100="부산")) 덧셈(+)은 논리 OR를 의미한다.
=FILTER(A2:D100, ISNUMBER(SEARCH("밸브", D2:D100))) =FILTER(A2:D100, (C2:C100>=DATE(2025,1,1))*(C2:C100<=DATE(2025,12,31))) 기준: G1=지역, G2=서울 수식: =FILTER(A2:D100, INDEX(A1:D1, XMATCH(G1, A1:D1, 0))=G2, "없음") =SORT(FILTER(A2:D100, B2:B100="서울"), 3, -1) =UNIQUE(FILTER(B2:B100, C2:C100>=1000000)) 원본 범위를 표로 변환하면 구조적 참조와 슬라이서를 활용할 수 있다.
표 필터 상태는 SUBTOTAL로 집계 갯수를 표시할 수 있다.
=SUBTOTAL(103, 테이블1[품목]) // 103은 COUNTA(숨김 제외)이다 요구사항: 2025년 매출 ≥ 1,000,000이면서 지역이 서울 또는 부산인 거래를 일자 오름차순으로 정렬해 별도 시트로 보여준다.
=LET( src, 원본!A1:F10000, hdr, TAKE(src,1), body, DROP(src,1), dateCol, 3, cityCol, 2, amtCol, 5, cond, (INDEX(body,,dateCol)>=DATE(2025,1,1))* (INDEX(body,,dateCol)<=DATE(2025,12,31))* ((INDEX(body,,cityCol)="서울")+(INDEX(body,,cityCol)="부산"))* (INDEX(body,,amtCol)>=1000000), result, VSTACK(hdr, SORT(FILTER(body, cond), dateCol, 1)), result ) 구버전 사용자에게 동일 결과를 제공하려면 고급 필터로 조건범위를 구성한 후 다른 위치에 복사한다.
=FILTER(A2:D100, EXACT("ABC", B2:B100)) // 대소문자 구분 정확 일치이다 =FILTER(A2:D100, VALUE(C2:C100)>=1000) =FILTER(A2:D100, (DATEVALUE(C2:C100)>=DATE(2025,1,1))*(DATEVALUE(C2:C100)<=DATE(2025,12,31))) 다수 조건을 순차로 적용하는 대신 하나의 FILTER에 논리를 모으거나, 여러 FILTER를 중첩할 수 있다.
=SORT( FILTER( FILTER(A2:F1000, B2:B1000="서울"), E2:E1000>=1000000 ), 3, 1 ) 또는 간결화를 위해 BYROW·MAP로 조건을 래핑한다.
=LET( arr, A2:F1000, keep, BYROW(arr, LAMBDA(r, INDEX(r,2)="서울") )* BYROW(arr, LAMBDA(r, INDEX(r,5)>=1000000)), FILTER(arr, keep) ) 행 추출이 아니라 합계·개수만 필요하면 SUMIFS·COUNTIFS가 빠르다.
=SUMIFS(매출범위, 지역범위, "서울", 일자범위, ">="&DATE(2025,1,1), 일자범위, "<="&DATE(2025,12,31)) =COUNTIFS(품목범위, "*밸브*", 매출범위, ">=1000000") 데이터베이스 함수는 고급 필터의 조건범위를 재사용한다.
=DSUM(A1:F1000, "매출", H1:I3) =DGET(A1:F1000, "거래처", H1:I3) // 조건 충족 단일 레코드 반환이다 조건 후 고유값만 필요하면 UNIQUE를 결합한다.
=UNIQUE(FILTER(B2:B1000, C2:C1000>=1000000)) 고급 필터 대화상자의 중복 레코드만 선택은 결과 범위에만 적용되므로 원본을 변경하지 않는다. 원본을 바꾸려면 데이터 > 중복 제거를 사용한다.
=LET(src, A2:F200000, key, CHOOSECOLS(src,3), keep, key>=DATE(2025,1,1), FILTER(src, keep)) | 증상 | 원인 | 해결 |
|---|---|---|
| 결과가 비어 있다 | 조건 머리글 불일치, 숨은 공백, 병합셀이다 | TRIM으로 머리글 정리, 병합 해제, 정확 매칭 확인이다 |
| 전체가 반환된다 | 조건 연산자 누락 또는 조건범위 공란이다 | >=, <= 등 연산자 포함, 조건 행에 값 입력이다 |
| #SPILL! 오류 | FILTER 스필 범위 충돌이다 | 주변 셀 비우기 또는 결과 위치 변경이다 |
| 부분 일치가 안 된다 | 와일드카드 미사용 또는 검색 함수 오용이다 | *키워드* 패턴, SEARCH/ FIND 사용이다 |
=TRIM(SUBSTITUTE(A2,CHAR(160)," ")) // 비가시 공백 제거이다 =VALUE(B2) // 텍스트 숫자 변환이다 =DATEVALUE(C2) // 텍스트 날짜 변환이다 양식 컨트롤 콤보상자에 선택 값을 셀에 반환하게 하고, 해당 셀을 FILTER 조건으로 연결하면 무매크로 인터랙티브 보고서를 만들 수 있다.
=LET(sel, $G$2, FILTER(A2:F1000, B2:B1000=sel, "해당 없음")) 반복적 정제·조인·여러 파일 통합에는 Power Query가 적합하다. 그러나 사용자 상호작용에 따른 즉시 조건 변경과 빠른 조회는 FILTER·고급 필터가 유리하다.
| 항목 | 확인 | 비고 |
|---|---|---|
| 머리글 정확 일치 | □ | 공백·숨은 문자 제거이다 |
| 조건 범위 규칙 적용 | □ | AND=같은 행, OR=다른 행이다 |
| 스필 충돌 점검 | □ | #SPILL! 예방이다 |
| 구버전 호환 전략 | □ | 값 붙여넣기 또는 고급 필터 복사이다 |
| 성능 최적화 | □ | 정확 범위+LET이다 |
열: 거래ID | 지역 | 일자 | 품목 | 매출 예시: T0001 | 서울 | 2025-01-03 | 볼밸브 | 1500000 T0002 | 부산 | 2025-02-10 | 체크밸브 | 2200000 T0003 | 대전 | 2024-12-20 | 게이트밸브 | 900000 T0004 | 서울 | 2025-03-01 | 플랜지 | 1300000 위 데이터로 다음 수식을 검증한다.
=FILTER(A2:E100, (B2:B100={"서울","부산"})*(C2:C100>=DATE(2025,1,1))*(E2:E100>=1000000)) 필터 후 요약만 전달하려면 보이는 셀만 복사한다.
보이는 셀만 선택: Alt+; 인쇄 시 숨겨진 행 제외: 파일 > 인쇄 > 설정 > 선택 영역 인쇄이다 세부 품목을 상위 카테고리로 매핑하고 카테고리 단위로 필터링한다.
매핑표: 품목코드 | 카테고리 XLOOKUP으로 상위 카테고리 열 추가: =LET(code, D2:D1000, XLOOKUP(code, 매핑!A:A, 매핑!B:B, "기타")) 그 후: =FILTER(A2:F1000, F2:F1000="밸브류") 가능하다. 고급 필터 대화상자에서 "다른 위치에 복사"를 선택하고 대상 시트의 셀을 선택하면 된다.
FILTER는 수식 기반 동적 결과이며 원본 변경 시 자동 갱신한다. 고급 필터는 명령 기반으로 한 번 실행하면 결과가 고정되며 보고서 복사에 유리하다.
SEARCH를 다수 열에 동시에 걸지 말고 필요한 열만 대상으로 제한한다. 데이터 전처리로 키 컬럼을 만들어 두면 성능이 개선된다.
최종 시트의 스필 결과를 값으로 붙여넣기 하거나 고급 필터 복사본을 제공한다.
SUBTOTAL 또는 AGGREGATE를 사용한다. 예: =SUBTOTAL(9, E2:E1000)이다.