티스토리 뷰

반응형

나 처럼 쿼리가 더 편하고, 엑셀이 더 낯선 사람을 위한 코너이다.

엑셀 자체에 필터기능이 존재 해서 쉽게 필터를 사용할 수 있는데, 함수를 이용해서 필터링하는것은 잘 안내되지 않는 경우가 많다.

 

만약, 아래 데이터에서 고향이 서울이나 부산이면서, 나이가 30세 이상인 사람만 필터링 하려면 어떻게 해야할까?

샘플데이터

쿼리로 표현하면 이렇다

쿼리로 표현하면 이런 SQL 로 표현이 가능하다. 그럼 엑셀에서는 어떻게 표현해야할까?

SELECT
  *
FROM
  직원
WHERE
 (고향 = '서울' OR 고향 = '부산) AND 나이 >= 30
;

엑셀로 표현하는 방법

결론부터 말하면 엑셀에서 filter 함수를 사용하면 쉽게 해결된다. 인자값이 3개인데 가장 중요한건 2번째 인자값으로 조건문에 해당한다.

=FILTER(직원!A2:E10, ((직원!D2:D10="서울") + (직원!D2:D10="부산")) * 직원!E2:E10>=30,"")
  • 첫번째 인자값 : 데이터 범위 (붉은색) - FROM 절 이라고 생각하면 편함
  • 두번째 인자값 : 필터링 조건 - WHERE 절이라고 생각하면 편함
  • 세번째 인자값 : 매칭안된 케이스에 노출될 값 (기냥 "" 로만 쓴다고 생각하면 편함)

사실상, 두번째 조건에 있는 수식이 WHERE 절이 된다. (필터링 조건)

그리고 여러 조건을 묶어 낼때  OR 조건은 + 로 수식을 표현하고, AND 조건은 * 으로 나열하여 여러 조건을 나열 할 수 있다.

 

이해를 돕기위해 색깔과 수식을 정리하면 아래와 같다.

봐도 이해가 잘 안된다면 엑셀파일을 첨부했으니 해당 파일을 보고 이해를 하도록 하자.

 

ngela_excel_sample.xlsx
0.01MB

FILTER 함수에서 #VALUE 오류가 난다면?

수식을 입력하다보면 실수를 해서 결과가 안나오고 아래와 같이 #VALUE 로 결과가 안나올때가 있다.

이 문제는 필터링 조건의 범위가 서로 달라서 나타난 케이스이다. 

filter 함수에서 #value 오류가 나는 이유는 row 열값이 다르기 때문이다 (10 vs 11)

잘 보면, 데이터 범위는 E10 , 필터링 조건은 D11 이나 E11 로 범위가 지정되어있어서 나타난 이유다.

다시 설명하면, 행길이가 범위가 다르기 때문에 오류가 발생한것이다. 데이터 범위의 행수와 동일하게 맞춰줘야한다.

 

즉, 여기서는 아래와 같이 11로 맞추거나

=FILTER(직원!A2:E11, ((직원!D2:D11="서울") + (직원!D2:D11="부산")) * 직원!E2:E11>=30,"")

혹은 10으로 맞추면 #value 오류를 피할 수 있다.

=FILTER(직원!A2:E10, ((직원!D2:D10="서울") + (직원!D2:D10="부산")) * 직원!E2:E10>=30,"")

filter 함수의 좀더 자세한 사용법을 알고 싶다면 마소 사용법을 참고하도록 하자.

https://support.microsoft.com/ko-kr/office/filter-%ED%95%A8%EC%88%98-f4f7cb66-82eb-4767-8f7c-4877ad80c759

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함