티스토리 뷰
나 처럼 쿼리가 더 편하고, 엑셀이 더 낯선 사람을 위한 코너이다.
엑셀 자체에 필터기능이 존재 해서 쉽게 필터를 사용할 수 있는데, 함수를 이용해서 필터링하는것은 잘 안내되지 않는 경우가 많다.
만약, 아래 데이터에서 고향이 서울이나 부산이면서, 나이가 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 조건은 * 으로 나열하여 여러 조건을 나열 할 수 있다.
이해를 돕기위해 색깔과 수식을 정리하면 아래와 같다.
봐도 이해가 잘 안된다면 엑셀파일을 첨부했으니 해당 파일을 보고 이해를 하도록 하자.
FILTER 함수에서 #VALUE 오류가 난다면?
수식을 입력하다보면 실수를 해서 결과가 안나오고 아래와 같이 #VALUE 로 결과가 안나올때가 있다.
이 문제는 필터링 조건의 범위가 서로 달라서 나타난 케이스이다.
잘 보면, 데이터 범위는 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 함수의 좀더 자세한 사용법을 알고 싶다면 마소 사용법을 참고하도록 하자.
'데이터처리 > 구글시트-엑셀' 카테고리의 다른 글
[엑셀] filter 함수에서 in 쿼리 표현하기 (N개의 키워드 검색) (0) | 2023.08.16 |
---|---|
[엑셀] excel에서 importRange 기능 쓰는 방법 - 딴 파일의 시트 가져오기 (0) | 2023.07.31 |
[엑셀] 시트 데이터를 UNION , UNION ALL 하는 방법 - 시트 합치기(VSTACK, UNIQUE) (0) | 2023.07.30 |
[구글시트] importJSON 을 이용한 웹데이터 활용하기 - 크롤링?! (0) | 2022.06.03 |
[엑셀] 특정단어가 들어가 있는 행에 색을 넣는 방법 (2) | 2021.11.24 |