더존 등에서 사용하는 회계 프로그램을 사용하고 계시다면, 거래명세서 출력은 정말 쉽습니다. 거래처와 기간만 입력하면 자동으로 거래명세서가 생성될 뿐만 아니라, 유료로 팩스로 보내기도 가능하죠.
그렇지만, 단지 엑셀이나 스프레드시트로 관리하고 계시다면 번거롭게 일을 하는 것이 일반적입니다.
오늘은 QUERY 를 사용해서 거래처와 기간을 입력하면 거래명세서가 만들어지는 방법을 살펴보겠습니다.
물론, 기업별로 제작해드릴 때는 거래명세서의 양식을 딱 맞게 만들어드리지만 레슨이기 때문에 요점만 간단하게 설명하겠습니다.
우선, 다음과 같이 거래 데이터가 있다고 하겠습니다. 데이터에는 합계, 부가세 등 더 많은 요소가 추가될 수 있습니다.
이제 이전에 살펴본 것처럼 거래처를 이름이 지정된 범위로 지정합니다. 그리고 데이터 확인을 셀에 적용합니다. 두 방법 모두 이전 글에서 확인하실 수 있습니다. 그리고 거래명세서의 기간을 입력할 수 있도록 시작/종료 일자를 만들어 줍니다.
이제 거래명세서의 첫번째 행을 써줍니다. 데이터의 라벨 부분을 복붙하면 됩니다.
이제 영업일자 라벨 아래쪽에 쿼리를 써주겠습니다.
=query(A2:E11,"select * ")
SQL
복사
위와 같은 쿼리를 쓰면, 데이터 범위의 모든 값을 가져오게 됩니다.
첫번째 단계로, 우리가 원하는 거래처만 가져오는 조건을 추가하겠습니다.
여기서는 J1 셀을 참조해야하는데, 쿼리에서 다른 셀을 참조할 경우에는 셀을 &와 "과 ' 으로 감싸줍니다. 안쪽에서 바깥쪽으로 순서대로입니다.
=query(A2:E11,"select * WHERE B ='"&J1&"' ")
SQL
복사
두번째 단계로, 기간 조건을 추가하겠습니다.
기간을 추가하는 것은 조금 더 까다롭습니다. 셀을 참조한다고 해서 첫번째 단계와 동일하게 적용해보면 값이 없다고 나옵니다.
=query(A2:E11,"select * WHERE B ='"&J1&"' AND A >= '"&J2&"' ")
SQL
복사
쿼리에서 날짜를 WHERE 로 사용하기 위해서는 date 라고 명시해줘야하기 때문입니다. 다시 말해 다음과 같이 써주어야 합니다.
=query(범위, "select * where A >= date '2020-07-01' ")
SQL
복사
그러면 여기서 J2 를 참조하려면 어떻게 써주어야 할까요? 거래처를 선택했던 것처럼 해보면, 에러가 납니다.
=query(A2:E11,"select * WHERE B ='"&J1&"' AND A >= date '"&J2&"' ")
SQL
복사
원인은 J2의 날짜를 쿼리로 참조하면 yyyy-MM-dd 의 형식으로 표현되지 않기 때문입니다. 이 형식에 맞춰서 표현하려면 TEXT 함수를 사용해야 합니다. 아래쪽에 테스트를 해보겠습니다.
=TEXT(J2,"yyyy-MM-dd")
SQL
복사
값이 정상적으로 표시가 되지요? 그럼 이제 이 값을 date 로 넣어보겠습니다. 넣을 때, 안쪽부터 &, ", ' 로 표시하는 것을 잊지 마세요.
=query(A2:E11,"select * WHERE B ='"&J1&"' AND A >= date '"&TEXT(J2,"yyyy-MM-dd")&"' ")
SQL
복사
따단~ 원하는 결과가 나왔습니다. 이제 그럼 종료기간도 추가해볼까요?
=query(A2:E11,"select * where B = '"&J1&"' and A >= date '"&TEXT(J2,"yyyy-mm-dd")&"' and A <= date '"&TEXT(J3,"yyyy-mm-dd")&"' ",0)
SQL
복사
거래처1의 7/1 ~ 7/3 까지의 값을 가져왔습니다. 성공입니다.
이제 종료일자를 한번 바꿔볼까요? 7/10로 바꿔봅니다.
기간에 맞는 결과를 표시합니다.
이렇게 쿼리를 사용하면 거래처와 기간을 선택했을 때 거래명세서를 표시할 수 있게 됩니다.
샘플을 확인해보세요. PC에서는 함수도 보실 수 있습니다.