본문으로 건너뛰기
엑셀·구글시트 자동화 실험

엑셀·구글시트 자동화 실험No. 300

FILTER 함수로 조건에 맞는 목록을 자동으로 추리는 순서

간격을 두고 펼쳐진 목록

조건을 바꿀 때마다 목록을 다시 고르는 문제

진행 상태가 달라질 때마다 필요한 행을 찾아 복사하면 원본과 따로 관리하는 목록이 생깁니다. 원본을 수정한 뒤 복사본까지 고치지 않으면 두 목록의 내용이 달라집니다. 이때 FILTER로 원본을 참조하면 조건에 맞는 결과를 수식으로 연결할 수 있습니다. 다만 결과 셀은 원본을 편집하는 공간이 아닙니다. 상태나 담당자처럼 바뀌는 값은 원본에서 수정하고, 추린 목록은 확인용으로 사용하는 구성이 적합합니다.

예시 데이터는 A열 항목명, B열 담당자, C열 상태로 구성합니다. 첫 행에는 열 이름이 있고 실제 데이터는 A2:C20에 있다고 가정합니다. 추릴 조건은 C열의 ‘진행’입니다. 여기서 20은 사용 원리를 설명하기 위한 마지막 행 번호입니다. 실제 파일에서는 데이터가 들어 있는 끝 행에 맞춰 범위를 조정합니다. 항목명과 상태를 따로 추출하면 서로 다른 행이 연결될 수 있으므로, 필요한 열을 한 범위로 묶어 가져오는 방식으로 시작합니다.

비스듬히 확대한 빈 셀

주의할 점

첫 수식 입력 전 확인

  • 끝 행은 실제 데이터에 맞춤
  • 필요한 열은 한 범위로 묶기
  • 빈 결과 처리 방식 확인

상태 하나만 넣어 첫 수식을 만드는 시도

엑셀에서는 빈 셀에 =FILTER(A2:C20,C2:C20="진행","")을 입력합니다. A2:C20은 가져올 내용이고, C2:C20="진행"은 각 행을 포함할지 판단하는 조건입니다. 마지막 빈 문자열은 일치하는 행이 없을 때 빈칸처럼 보이게 하는 설정입니다. 구글시트에서는 =IFNA(FILTER(A2:C20,C2:C20="진행"),"")으로 작성합니다. 구글시트의 FILTER에는 엑셀과 같은 빈 결과 전용 인수가 없으므로 바깥에서 처리합니다.

수식을 넣은 뒤에는 결과 행의 상태가 실제로 ‘진행’인지 원본과 대조합니다. 이어서 원본의 상태를 다른 값으로 바꿨을 때 해당 행이 결과에서 빠지는지 확인합니다. 이 과정에서 결과가 없다는 이유만으로 수식이 틀렸다고 판단하지 않습니다. 조건과 정확히 같은 값이 없을 수도 있습니다. ‘진행’과 ‘진행 중’은 다른 문자열입니다. 셀에 보이는 글자가 비슷해도 앞뒤 공백이 섞여 있으면 비교 결과가 달라질 수 있으므로 입력값도 함께 살핍니다.

가져올 범위와 조건 범위는 같은 시작 행과 끝 행을 사용합니다

조건을 셀로 옮기고 담당자까지 더하는 시도

조건이 바뀔 때마다 수식을 고치는 불편은 입력 셀을 따로 두어 줄입니다. E2에 상태를 적는다면 엑셀 수식은 =FILTER(A2:C20,C2:C20=E2,"")입니다. 구글시트에서는 =IFNA(FILTER(A2:C20,C2:C20=E2),"")입니다. 이제 E2를 바꾸면 연결된 조건도 바뀝니다. 다만 E2를 비우는 동작이 전체 조회를 뜻하지는 않습니다. 이 수식은 상태가 빈 셀인 행을 찾습니다. 빈 입력을 어떤 의미로 쓸지 먼저 정해야 결과를 해석하기 쉽습니다.

두 손으로 양쪽을 잡은 원본

짚고 가기

조건 셀 연결의 핵심

  • E2로 상태 조건 연결
  • 빈 E2는 빈 상태 행 조회
  • 담당자 추가 시 두 조건 충족

담당자도 함께 고르려면 F2에 담당자 이름을 입력합니다. 엑셀에서는 =FILTER(A2:C20,(C2:C20=E2)*(B2:B20=F2),"")처럼 조건을 곱합니다. 두 비교가 모두 참인 행이 남는 방식입니다. 구글시트에서는 =IFNA(FILTER(A2:C20,C2:C20=E2,B2:B20=F2),"")처럼 조건을 인수로 나란히 넣을 수 있습니다. 상태만 정하면 해당 상태의 전체 목록을, 상태와 담당자를 함께 정하면 두 기준이 겹치는 목록을 얻습니다. 조건이 늘수록 결과가 줄어드는 이유도 여기에 있습니다.

원본과 결과 공간을 맞추면 이어지는 구성

수식이 맞아도 결과가 펼쳐질 공간에 다른 값이 있으면 목록이 나오지 않을 수 있습니다. FILTER는 결과 크기에 따라 아래와 옆의 여러 셀을 사용합니다. 따라서 결과 영역에는 메모나 별도 계산식을 섞지 않고, 병합된 셀도 피합니다. 결과의 일부 셀을 직접 수정하려 하면 배열 결과를 변경할 수 없다는 안내가 나올 수 있습니다. 내용을 고치려면 원본으로 돌아가 수정합니다. 결과 옆에 메모를 적어야 한다면 행 순서가 바뀔 때 메모와 항목의 연결이 어긋날 가능성도 고려합니다.

선반 틈으로 보이는 메모 뒷면

Q추린 목록의 내용은 어디서 고치나요?

원본에서 수정합니다. 결과 영역은 비우고 병합된 셀도 피합니다.

설정 순서는 아래처럼 정리합니다. 수식을 복사하기 전에 원본의 열 구성이 예시와 같은지 확인합니다. 상태가 D열에 있다면 조건 범위도 D열로 바꿉니다. 수식이 오류 없이 계산된다는 사실만으로 원하는 목록이 완성되지는 않습니다. 반환된 각 행이 실제 조건을 충족하는지 확인하는 과정까지 포함합니다.

  1. 원본의 열 이름과 실제 데이터 범위를 확인합니다
  2. 결과가 펼쳐질 빈 영역을 확보합니다
  3. 한 가지 조건으로 수식을 입력합니다
  4. 조건을 입력 셀과 연결합니다
  5. 원본 수정 후 결과 변화를 확인합니다

고정 범위는 구성을 이해하기 쉽지만, 지정한 마지막 행 아래에 추가한 내용은 가져오지 않습니다. 예를 들어 A2:C20을 참조한 상태에서 21행에 새 항목을 적으면 수식 범위도 조정해야 합니다. 반대로 범위를 지나치게 넓히면 필요하지 않은 빈 행까지 계산 대상에 들어갑니다. 처음에는 실제 사용 범위를 분명히 정하고, 목록이 늘어나는 방식이 확인된 뒤 범위 관리 방법을 바꾸는 편이 점검하기 쉽습니다.

조건 셀을 비웠을 때의 동작은 수식에 넣기 전에 먼저 정합니다
흐린 앞 행과 또렷한 뒤 범위

이렇게

범위와 빈 조건 설정

  1. 실제 데이터 범위 확인
  2. 빈 조건의 동작 결정
  3. 동작에 맞춰 수식 분기

다음에는 빈 조건과 결과 순서를 정하는 작업

다음으로 정할 부분은 입력을 비웠을 때의 동작입니다. 엑셀에서 E2가 비어 있으면 전체 원본을 보여 주려면 =IF(E2="",A2:C20,FILTER(A2:C20,C2:C20=E2,""))처럼 분기합니다. 구글시트에서는 =IF(E2="",A2:C20,IFNA(FILTER(A2:C20,C2:C20=E2),""))으로 구성합니다. 이때 전체 원본 범위에 빈 행이 들어 있으면 그 빈 행도 포함됩니다. 빈 조건일 때 결과를 감출 것인지, 전체 목록을 보여 줄 것인지에 따라 수식 구성이 달라집니다.

결과가 없을 때 빈칸을 쓰면 화면은 간결하지만, 아직 조건을 입력하지 않은 상태와 일치하는 항목이 없는 상태를 구분하기 어렵습니다. 구분이 필요하면 빈 결과 문구를 ‘일치하는 항목 없음’으로 바꿉니다. FILTER는 조건에 맞는 행을 추출하며 결과 순서는 원본의 순서를 따릅니다. 별도 정렬이 필요하면 정렬 기준을 추가로 정합니다. 중복된 행도 조건을 충족하면 함께 남으므로 중복 제거가 필요한 업무인지도 판단해야 합니다.

오류를 감추는 수식은 기본 동작을 확인한 뒤 붙입니다. 처음부터 IFERROR로 모든 오류를 빈칸 처리하면 범위 길이 불일치나 원본 오류를 놓치기 쉽습니다. 구글시트의 IFNA 역시 모든 문제를 해결하는 장치는 아닙니다. 원본에 오류값이 있는지 먼저 살피고, 결과가 없는 경우를 어떻게 안내할지 정하는 용도로 사용합니다. 추출 조건, 빈 입력의 의미, 새 행이 포함되는 범위까지 정하면 이후 수정할 지점도 분명해집니다.

목록으로

이 글은 엑셀·구글시트 자동화 실험에서 발행했습니다. 인용·링크는 자유롭고, 본문·그림의 복제 게시는 삼가 주세요.