2017-01-06 1 views
0

나는 '태그'뿐만 아니라 월별로 기록 된 재무 제표를 필터링하는 테이블을 만들려고합니다. 명세서의 각 광고 항목에는이 태그가 포함되어 있으므로 나중에 필터링 할 수 있습니다. 현재 여러 가지 드롭 다운 목록을 통해 선택한 여러 조건을 기반으로 쿼리를 필터링 할 수있는 수식을 파악하는 데 문제가 있습니다.여러 조건으로 쿼리 필터링

그래서 예를 들어, 나는 A6를 필터링하고 싶습니다 : 나는 같은 쿼리 한 월별 G41 :

=query(A6:G41," select * where A >= date '"&TEXT(O3,"yyyy-mm-dd")&"' and A <= date '"&TEXT(P3,"yyyy-mm-dd")&"' ") 

A6를 : O3와 P3는 동안 G41, 나는 쿼리있어 테이블 개월의 시작 및 종료 날짜이며 지정된 달 동안 모든 거래를 제공합니다. 드롭 다운 목록 인 R1, R2 및 R3 셀에 지정 될 '식사, 회의, 컴퓨터 장비'와 같은 필터 조건을 추가하고 싶습니다.

의견이 있으십니까? 여기

내가 참조를 위해 만든 샘플 시트에 대한 링크입니다 : 모든 쿼리 (더 응집, 컬럼의 비교, 피벗 등)를 필터링하지 않는 경우 https://docs.google.com/spreadsheets/d/1dKnUeEad5LyX73Eo6kF-RXFakrhGSty67iKmhPoUbEc/edit?usp=sharing

답변

0

, 그것은 대신 filter을 사용하는 것이 좋습니다 . 한 가지 장점 : 데이터 유형 (예 : 텍스트에서 날짜로의 변환, 날짜에서 날짜로의 변환)에 대한 불편 함이 거의 없습니다. 지금까지 만든 쿼리가

=filter(A6:G41, A6:A41 >= O3, A6:A41 <= P3) 

내가 (목록이 증가 할 수 있기 때문에) 여기에서 "41"을 삭제하고 추가 조건을 계속하는 것과 같습니다

=filter(A6:G, A6:A >= O3, A6:A <= P3, I6:I = R1) 

도 열 내가해야 할 사항 R1과 같아야합니다. 느슨한 일치가 필요한 경우, 정규 표현식으로 regexmatch를 사용

=filter(A6:G, A6:A >= O3, A6:A <= P3, regexmatch(I6:I, "(?i)travel")) 

일치 어디서나 I에서 "여행", 대소 문자를 구분합니다.

조건은 다음과 같이 이들 사이 + 배치하여 "OR"로직에 의해 결합 될 수

=filter(A6:G, A6:A >= O3, A6:A <= P3, (I6:I = R1) + isblank(R1)) 

여기 어느 I 열은 R1과 동일 또는 R1이 비어있는 경우, 제 3 조건을 보유하고있다.

+0

굉장합니다. 이것은 지금까지 훌륭하고 훌륭한 도움이됩니다! 내가보기에는 R1을 무언가로 변경하고 필터 내에 필터가없는 경우 오류가 발생합니다. 그런 다음 다시 변경하면 다시 되돌리려면 null 값이 없다는 것을 알게됩니다. 이 문제를 해결할 솔루션을 생각해 볼 수 있습니까? – Tommy

+0

'filter'가'iferror()'에 싸여 있다면, 에러 메시지는 표시되지 않습니다. "null"옵션을 사용하려면 사용자가 R1을 공백으로 남겨두고 regexmatch를 사용하여 필터링합니다 (예 :'regexmatch (I6 : I, "(? i)"& R1)'. R1이 비어 있으면 모든 것과 일치합니다. – FTP

+0

위대한 작품! 마지막으로, 모든 조건이 충족되면 이것이 작동하는 것처럼 보입니다. = iferror (필터 (A6 : G, A6 : A> = O3, A6 : A <= P3, I6 : I = R2, H6 : H = R1, J6 : J = R3))'그러나, 만약 내가 특정 월의 모든 트랜잭션을 나열하기 위해 다시 변경하고,'R1','R2','R3'을 공백으로두면 오류가 발생합니다. 'iferror()'함수 – Tommy

관련 문제