← 글 목록
정보/테크

구글 시트 함수 10가지: 업무 효율 200% 올리기

2026년 6월 3일 · 6분

작년에 웹사이트 하나 운영하면서 관리 페이지를 만들 일이 있었다. 프론트엔드 개발자니까 당연히 Vue로 대시보드를 짜려다가, 문득 든 생각 — 이거 구글 시트로 그냥 끝낼 수 있는 거 아닌가?

맞았다. QUERY 몇 줄이면 끝날 일을 굳이 컴포넌트 만들고 API 붙이고 할 필요가 없었다. 그 뒤로 업무용 시트를 만들 때마다 함수를 하나씩 배웠는데, 지금은 엑셀로 돌아갈 수가 없다. 오늘은 내가 실제로 매일 쓰고 있는 함수 10개를 정리해 본다.

참고로 구글이 2026년 8월에도 Connected Sheets 업데이트를 밀어 넣었다. BigQuery 연동이 더 쉬워졌고, 엑셀 파일 가져올 때 테이블 포맷이 깨지던 문제도 수정됐다.

VLOOKUP — 모든 것의 시작

=VLOOKUP(찾을값, 범위, 열번호, FALSE). 이게 다이다. 상품 코드로 가격을 불러오거나, 직원 ID로 이름을 찾을 때 쓴다. 마지막 인자는 무조건 FALSE. TRUE 쓰면 근사값 매칭이라 어느 순간 데이터가 꼬인다.

내가 사이트 관리용으로 쓰는 시트를 예로 들면, A열에 포스트 slug, B열에 제목, C열에 조회수가 있다고 치자. =VLOOKUP("google-sheets", A:C, 3, FALSE) 한 줄이면 특정 글의 조회수를 바로 가져온다.

다만 치명적인 단점이 있다. 찾는 열이 무조건 범위의 첫 번째 열이어야 한다. 그래서 XLOOKUP으로 넘어가는 추세다.

XLOOKUP — VLOOKUP의 상위 호환

이건 진짜 편하다. 찾는 열이 오른쪽에 있어도 되고, 결과 없을 때 기본값도 지정할 수 있다. =XLOOKUP(찾을값, 찾는범위, 결과범위, "없음") 형태.

  • 찾는 열 위치 상관없음 (VLOOKUP 최대 단점 해결)
  • #N/A 대신 기본값 지정 가능
  • 조건 결합: =XLOOKUP("홍길동"&"2026", A:A&B:B, C:C)
  • 아래에서 위로 검색도 가능

솔직히 새로 시트 만들면 그냥 XLOOKUP 쓰면 된다. 기존 시트에 VLOOKUP이 잘 돌아가고 있다면 굳이 바꿀 필요 없고.

IMPORTRANGE — 시트끼리 연결하기

다른 스프레드시트 데이터를 끌어올 수 있다. 블로그 여러 개 운영하다 보니까 각 사이트별 통계 시트를 하나로 모아야 할 때가 있다. =IMPORTRANGE("시트URL", "시트명!A1:Z100") 이런 식.

처음 실행하면 접근 권한 허용 팝업이 뜬다. Allow 누르면 된다. 근데 업데이트 반영에 최대 1분 정도 딜레이가 있다. 실시간이 아니다.

팁. IMPORTRANGE 결과를 QUERY로 감싸면 끝없이 강력해진다. =QUERY(IMPORTRANGE("URL", "Sheet1!A:Z"), "SELECT Col1, Col2 WHERE Col3 = '완료'") — 다른 시트에서 조건에 맞는 데이터만 실시간으로 가져온다.

QUERY — 시트 안의 SQL

내가 구글 시트에서 가장 사랑하는 함수다. SQL 비슷한 문법으로 데이터를 마음대로 뽑을 수 있다.

=QUERY(A1:E100, "SELECT A, SUM(D) WHERE E = '활성' GROUP BY A ORDER BY SUM(D) DESC LABEL SUM(D) '합계'") — 부서별 활성 회원 합계. GROUP BY에 집계 함수까지 되니까 사실상 소규모 데이터베이스 수준이다.

실무에서 자주 쓰는 패턴들:

  • 부서별 인원: =QUERY(A:Z, "SELECT B, COUNT(A) GROUP BY B LABEL COUNT(A) '인원'")
  • 상위 10개: =QUERY(A:Z, "SELECT A, B ORDER BY C DESC LIMIT 10")
  • 복수 조건: =QUERY(A:Z, "SELECT A, B, C WHERE B CONTAINS '서울' AND C > 1000")
  • 월별 집계: =QUERY(A:Z, "SELECT MONTH(A), SUM(C) GROUP BY MONTH(A)")

ARRAYFORMULA — 드래그 없이 전체 열 계산

이거 처음 알았을 때 신세계였다. =ARRAYFORMULA(A1:A10 * B1:B10) 한 줄이면 된다. 드래그해서 수식 복사할 필요가 없다.

IF와 결합하면 더 좋다. =ARRAYFORMULA(IF(A:A="", "", A:A * B:B)) — 빈 셀은 무시하면서 전체 열에 자동 계산. 새 행이 추가돼도 알아서 처리된다.

IMPORTXML — 웹에서 데이터 긁어오기

=IMPORTXML("URL", "//xpath")로 웹페이지에서 데이터를 가져온다. 환율 같은 거 실시간 연동할 수 있다.

IMPORTFEED도 있다. =IMPORTFEED("https://blog.example.com/rss", "items title", FALSE, 10) — RSS에서 최신 포스트 10개 제목을 가져온다. 다른 블로그 업데이트 모니터링할 때 쓴다.

REGEXMATCH — 정규식 매칭

=REGEXMATCH(셀, "패턴")으로 텍스트가 특정 패턴과 일치하는지 검사한다. IF랑 결합하면 이메일 검증, 전화번호 형식 확인에 쓸 수 있다.

  • 이메일: =REGEXMATCH(A1, "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$")
  • 전화번호: =REGEXMATCH(A1, "^01[0-9]-?[0-9]{3,4}-?[0-9]{4}$")
  • URL: =REGEXMATCH(A1, "^https?://[a-zA-Z0-9]")
  • 키워드: =REGEXMATCH(A1, "(?i)긴급|urgent|asap")

REGEXEXTRACT, REGEXREPLACE도 같이 알아두면 좋다.

SPARKLINE — 셀 안에 미니 차트

=SPARKLINE(A1:A12) 한 줄이면 셀 안에 차트가 그려진다. 트래픽 추이를 한눈에 보고 싶을 때 자주 쓴다.

=SPARKLINE(A1:A12, {"charttype","column"; "color","#4285f4"; "axis",true; "axiscolor","#999"}) 옵션을 주면 파란색 막대에 축까지 표시된다.

UNIQUE — 중복 제거

=UNIQUE(A1:A100). 끝. 중복값 빼고 고유 목록을 만들어준다.

2차원도 된다. =UNIQUE(A2:C100) 하면 A-C열 조합이 중복 안 되는 행만 남는다. =COUNTA(UNIQUE(A:A))-1로 고유값 개수도 셀 수 있다.

FILTER — 조건으로 걸러내기

=FILTER(A1:D100, B1:B100 > 50000, C1:C100 = "완료"). 여러 조건으로 데이터를 거른다. 피벗 테이블보다 직관적이고 실시간 반영된다.

=SUM(FILTER(D:D, B:B = "서울", C:C >= DATE(2026,1,1))) — 서울 지역 2026년 매출 합계를 즉시 구한다. OR 조건은 더하기(+). =FILTER(A:D, (B:B = "서울") + (B:B = "부산"))

💡 ARRAYFORMULA + FILTER + QUERY를 조합하면 사실상 소규모 데이터베이스를 구글 시트 안에 구축할 수 있다.

비용 대비 효과

구글 시트가 여전히 가성비 끝판왕이다. 워크스페이스 비즈니스 월 1,400원/사용자. Apps Script, BigQuery 연동 포함. 데이터가 100만 행 넘으면 BigQuery로 넘어가야 하지만, 90% 사무환경에서는 함수 조합만으로 충분하다.

한 번씩 직접 입력해 보길 바란다. 처음엔 낯설겠지만, 익히고 나면 엑셀로 못 돌아간다.