수식 20개 · 단축키 20개 · Apps Script · AI 연동까지 한 방에
| 항목 | 구글 시트 | 엑셀 |
|---|---|---|
| 가격 | ✅ 무료 | 💰 유료 (Microsoft 365) |
| 실시간 협업 | ✅ 탁월 | △ 제한적 |
| 자동화 | Apps Script (JavaScript) | VBA (Visual Basic) |
| AI 연동 | ✅ Gemini AI 내장 | Copilot (유료) |
| 대용량 데이터 | △ 500만 셀 제한 | ✅ 더 빠름 |
| 오프라인 | △ 가능하지만 제한적 | ✅ 완전 오프라인 |
| 수식 | 용도 | 예시 |
|---|---|---|
| VLOOKUP | 다른 시트/범위에서 값 찾기 | =VLOOKUP(A2, 직원목록!A:D, 3, 0) |
| XLOOKUP | VLOOKUP 개선판, 양방향 검색 | =XLOOKUP(A2, B:B, C:C, "없음") |
| IF | 조건에 따라 다른 값 반환 | =IF(B2>100, "합격", "불합격") |
| IFS | 여러 조건 분기 (중첩 IF 대체) | =IFS(A2>90,"A", A2>80,"B", TRUE,"C") |
| SUMIF | 조건에 맞는 셀 합계 | =SUMIF(B:B, "서울", C:C) |
| COUNTIF | 조건에 맞는 셀 개수 | =COUNTIF(A:A, "완료") |
| ARRAYFORMULA | 배열 수식 (드래그 없이 전체 적용) | =ARRAYFORMULA(B2:B100*C2:C100) |
| IMPORTRANGE | 다른 스프레드시트 데이터 가져오기 | =IMPORTRANGE("시트URL", "A:D") |
| QUERY | SQL처럼 데이터 필터링/정렬 | =QUERY(A:D,"SELECT A,C WHERE B='완료'") |
| FILTER | 조건에 맞는 행 필터링 | =FILTER(A:D, C:C="서울") |
| UNIQUE | 중복 제거 후 유니크 값 | =UNIQUE(A2:A100) |
| SORT | 범위 정렬 후 반환 | =SORT(A2:C100, 2, FALSE) |
| TEXT | 숫자를 특정 형식 텍스트로 | =TEXT(TODAY(), "YYYY년 MM월 DD일") |
| IFERROR | 오류 시 대체값 표시 | =IFERROR(VLOOKUP(...),"미등록") |
| INDEX+MATCH | 유연한 조회 (VLOOKUP 대체) | =INDEX(C:C, MATCH(A2, B:B, 0)) |
| IMPORTXML | 웹페이지에서 데이터 수집 | =IMPORTXML("URL", "//h1") |
| GOOGLETRANSLATE | 셀 내 자동 번역 | =GOOGLETRANSLATE(A2,"en","ko") |
| SPARKLINE | 셀 안에 미니 차트 | =SPARKLINE(B2:B13) |
| REGEXEXTRACT | 정규식으로 텍스트 추출 | =REGEXEXTRACT(A2, "\d{3}-\d{4}-\d{4}") |
| TRANSPOSE | 행/열 전환 | =TRANSPOSE(A1:D5) |
구글 시트의 진정한 강점은 Apps Script(JavaScript 기반)로 업무 자동화가 가능하다는 것입니다. 확장 프로그램 → Apps Script에서 작성합니다.
// 시트의 이름, 이메일, 내용을 읽어 자동 발송 function sendEmails() { const sheet = SpreadsheetApp.getActiveSheet(); const data = sheet.getDataRange().getValues(); for (let i = 1; i < data.length; i++) { const [name, email, subject, body, sent] = data[i]; if (!sent) { // 미발송인 경우만 GmailApp.sendEmail(email, subject, `안녕하세요, ${name}님!\n\n${body}\n\n감사합니다.` ); sheet.getRange(i+1, 5).setValue('발송완료'); // E열에 완료 표시 } } }
// 트리거 설정: 매일 오전 9시에 자동 실행 function createDailyReport() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const today = new Date(); const dateStr = Utilities.formatDate(today, 'Asia/Seoul', 'yyyy-MM-dd'); // 새 시트 생성 const newSheet = ss.insertSheet(`보고서_${dateStr}`); // 데이터 집계 후 보고서 작성 const dataSheet = ss.getSheetByName('데이터'); const totalSales = dataSheet.getRange('D2:D100').getValues() .reduce((sum, [val]) => sum + (val || 0), 0); newSheet.getRange('A1').setValue(`${dateStr} 일일 매출: ${totalSales.toLocaleString()}원`); }
구글 시트에서 셀을 선택하고 사이드 패널의 Gemini AI에게 질문할 수 있습니다. "이 데이터의 추세를 분석해줘", "VLOOKUP 수식을 XLOOKUP으로 바꿔줘", "이 데이터로 어떤 차트가 적합할까?"라고 물으면 됩니다.
또한 IMPORTXML과 GOOGLETRANSLATE를 활용하면 외부 데이터 수집과 자동 번역도 수식 하나로 처리할 수 있습니다. AI에게 "구글 시트에서 네이버 환율을 자동으로 불러오는 IMPORTXML 수식을 작성해줘"라고 요청해보세요.