Formula QUERY adalah pendekatan paling mendekati SQL yang tersedia di Google Sheets - dan untuk pekerjaan FP&A, keunggulan ini sering kali diremehkan. Satu =QUERY() bisa menggantikan tumpukan SUMIFS bersarang, mengembalikan tampilan P&L yang terfilter dari 10.000 baris data, sekaligus mengurutkannya - semua dalam satu sel. Sintaksnya menggunakan dialek SQL dari Google Visualization API, bukan SQL standar, tapi begitu Anda memahami perbedaannya, formula ini jauh lebih cepat ditulis dibanding sebagian besar alternatif lainnya.
Artikel ini bukan penjelasan sintaks dari awal. Ini tentang di mana formula QUERY benar-benar memberikan nilai dalam model keuangan, di mana ia bisa gagal, dan kapan Anda harus beralih ke pendekatan lain.
Apa yang Bisa QUERY Lakukan yang Tidak Bisa Dilakukan SUMIFS
SUMIFS mengagregasi nilai. QUERY mengembalikan baris. Itulah perbedaan intinya, dan perbedaan ini menentukan alat mana yang tepat untuk setiap situasi.
Saat Anda menyusun tampilan contribution margin per lini produk untuk paket laporan direksi, SUMIFS memaksa Anda menulis satu formula per metrik per baris. QUERY memungkinkan Anda menarik seluruh irisan data sekaligus - semua baris di mana product_line = "Enterprise", diurutkan berdasarkan pendapatan secara menurun, dengan baris label di bagian atas. Hasilnya otomatis menyebar ke baris-baris berikutnya (spill), artinya ia ikut diperbarui saat data sumber berubah.
Menurut Google Visualization API Query Language Reference (diakses April 2026), QUERY menjalankan kueri pada data menggunakan bahasa kueri berbasis SQL yang mendukung SELECT, WHERE, GROUP BY, ORDER BY, LIMIT, dan LABEL - kira-kira 80% dari yang biasa Anda gunakan dalam kueri pelaporan.
Sintaks Antar-Tab untuk Model Multi-Tab
Bagian yang paling sering dilewati tutorial: cara mereferensikan tab lain. Sintaksnya mengharuskan Anda membungkus rentang langsung di dalam pemanggilan fungsi:
=QUERY('P&L'!A:H, "SELECT A, B, C, SUM(F) WHERE B = 'Enterprise' GROUP BY A, B, C LABEL SUM(F) 'Pendapatan'", 1)
Argumen ketiga (1) memberi tahu QUERY berapa banyak baris header yang dimiliki sumber data. Lewatkan argumen ini dan hasil Anda akan menyertakan baris header sebagai baris data, yang merusak agregasi.
Untuk model di mana tab Asumsi mengendalikan segalanya, filter tanggal dinamis terlihat seperti ini:
=QUERY('P&L'!A:H, "SELECT A, B, SUM(F) WHERE A >= date '"&TEXT(Asumsi!$B$3,"yyyy-mm-dd")&"' GROUP BY A, B", 1)
Format tanggal di sini sangat kritis. Literal tanggal QUERY membutuhkan format yyyy-mm-dd yang dibungkus dengan tanda kutip tunggal di dalam string SQL. Format yang salah menghasilkan parse error yang tampak seperti masalah data - sampai Anda mendebugnya.
Klausa WHERE untuk Filter Dinamis
Klausa WHERE mendukung AND, OR, dan NOT. Untuk analisis varians di mana Anda ingin membandingkan aktual vs. anggaran untuk Q1 FY2026 yang difilter ke cost center tertentu:
=QUERY('Detail GL'!A:J, "SELECT B, D, SUM(G), SUM(H) WHERE C = 'CC-412' AND A >= date '2026-01-01' AND A <= date '2026-03-31' GROUP BY B, D ORDER BY SUM(G) DESC", 1)
Formula ini mengembalikan departemen, akun, aktual, dan anggaran untuk satu cost center sepanjang Q1 - diurutkan berdasarkan pengeluaran aktual sehingga varians terbesar langsung terlihat di atas. Padanan SUMIFS-nya memerlukan 4 formula per baris, direplikasi ke setiap kode akun yang relevan.
Satu batasan yang tidak langsung terlihat: QUERY tidak bisa mereferensikan named range di dalam string SQL. Referensi kolom harus berupa huruf (A, B, C) atau notasi Col1, Col2. Named range berfungsi sebagai argumen sumber data, tapi tidak di dalam string kueri itu sendiri. Ini sering menjebak pengguna yang mencoba WHERE account = NamaRange - formula gagal tanpa pesan error yang jelas dan malah mengembalikan semua data.
Agregasi dan GROUP BY
GROUP BY dalam QUERY menggantikan pivot table untuk output terprogram. Aturannya: setiap kolom dalam SELECT yang bukan fungsi agregat harus muncul dalam GROUP BY. Langgar aturan ini dan Anda akan mendapat error "Column X cannot both be aggregated and not aggregated."
Fungsi agregat yang didukung: SUM, COUNT, AVG, MAX, MIN. Tidak ada MEDIAN, tidak ada STDEV, tidak ada fungsi persentil. Berdasarkan dokumentasi resmi Google Charts yang tidak mengalami pembaruan set fungsi agregat sejak versi yang dirilis pada 2018, kelima fungsi ini adalah batas kemampuan QUERY untuk agregasi langsung. Untuk kebutuhan di luar lima fungsi ini, Anda harus memproses output QUERY lebih lanjut dengan formula tambahan, atau menggunakan ARRAYFORMULA dengan fungsi yang lebih spesifik.
Jika Anda membutuhkan median EBITDA per kuartal, gunakan QUERY untuk menarik dan mengurutkan baris, lalu terapkan MEDIAN pada rentang hasil tersebut dengan formula pembantu.
LABEL, FORMAT, dan Kontrol Output
Dua klausa yang jarang muncul dalam tutorial tapi penting untuk output yang siap dipresentasikan:
LABEL mengubah nama header kolom pada hasil. Tanpanya, kolom agregat mewarisi nama seperti SUM Revenue atau avg(E) - tidak masalah untuk pekerjaan internal, tapi tidak pantas dalam laporan PDF untuk manajemen atau investor.
=QUERY('Pendapatan'!A:F, "SELECT A, B, SUM(C) GROUP BY A, B LABEL A 'Periode', B 'Segmen', SUM(C) 'Pendapatan Bersih (Rp 000)'", 1)
FORMAT menerapkan format tampilan pada output, menggunakan string format yang sama dengan TEXT(). Untuk kolom mata uang dalam laporan direksi:
"... LABEL SUM(C) 'Pendapatan Bersih' FORMAT SUM(C) '#,##0'"
Ini menjaga angka tetap numerik di balik layar - formula lain di model masih bisa mereferensikannya - sementara tampilannya tetap rapi.
Di Mana QUERY Bisa Gagal dalam Praktik
Tiga modus kegagalan yang perlu Anda ketahui sebelum menjadi masalah di model yang sedang berjalan:
Tipe data campuran dalam satu kolom. QUERY menentukan tipe kolom berdasarkan mayoritas nilainya. Jika kolom B berisi 95% teks tapi ada 5 sel numerik, QUERY memperlakukannya sebagai teks dan diam-diam mengabaikan angka-angka dalam perbandingan WHERE. Bersihkan data sumber Anda atau tambahkan kolom pembantu yang memaksa tipe data konsisten.
Sel kosong dalam kolom tanggal. Satu sel kosong di kolom tanggal membuat QUERY mengembalikan error saat Anda memfilter berdasarkan rentang tanggal. Solusinya: filter sel kosong dengan WHERE A IS NOT NULL AND A >= date '...', atau pastikan rentang sumber tidak memiliki baris kosong di bagian akhir.
Referensi sheet dinamis. Anda tidak bisa mereferensikan nama sheet secara dinamis di dalam QUERY seperti yang bisa dilakukan dengan INDIRECT. =QUERY(INDIRECT("'"&A1&"'!A:H"), ...) berfungsi untuk argumen rentang, tapi string kueri tetap membutuhkan huruf kolom yang ditulis langsung (hardcoded). Untuk model di mana struktur sheet berubah-ubah, QUERY menjadi rapuh dengan cara yang tidak dimiliki SUMIFS.
QUERY vs. SUMIFS: Aturan Pengambilan Keputusan
Gunakan QUERY ketika Anda membutuhkan baris kembali - daftar terfilter, irisan laporan dinamis, output yang sudah diurutkan. Gunakan SUMIFS ketika Anda membutuhkan satu nilai agregat di sel tetap yang direferensikan oleh formula lain. Kesalahannya adalah menggunakan SUMIFS untuk membangun apa yang pada dasarnya adalah tabel terfilter - ini mengharuskan replikasi formula ke bawah setiap baris dan ke samping setiap kolom secara manual.
| Kasus Penggunaan | QUERY | SUMIFS | Rekomendasi |
|---|---|---|---|
| Tampilan P&L terfilter per segmen | ✓ Satu formula, spill otomatis | ✗ Satu formula per sel | QUERY |
| Nilai tunggal untuk dashboard KPI | ✗ Perlu pembungkus tambahan | ✓ Langsung di sel target | SUMIFS |
| Laporan direksi multi-kolom, terurut | ✓ ORDER BY bawaan | ✗ Perlu pengurutan manual | QUERY |
| Input ke formula kalkulasi hilir | ✗ Output dinamis sulit direferensikan | ✓ Alamat sel stabil | SUMIFS |
| Analisis varians aktual vs. anggaran per cost center | ✓ GROUP BY + ORDER BY dalam satu ekspresi | ✗ Harus direplikasi per baris | QUERY |
| Agregasi dengan kondisi >3 kriteria silang | ✓ AND/OR/NOT di WHERE | ✓ Bisa, tapi formula panjang | QUERY (lebih terbaca) |
Model tiga laporan keuangan (three-statement model) dengan tab Pelaporan khusus yang menarik dari Detail GL adalah contoh ideal untuk formula QUERY. Tab Pelaporan tetap terkini secara otomatis, LABEL menangani penamaan kolom, dan ORDER BY menampilkan data yang sebenarnya ingin dilihat CFO tanpa perlu pengurutan manual.
Jika Anda sudah menjalankan otomasi AI dalam alur kerja Google Sheets, QUERY berpadu baik dengan pendekatan tersebut: AI dapat membuat atau memodifikasi string SQL sementara struktur formula Anda tetap utuh.
FAQ: Formula QUERY Google Sheets
Apakah formula QUERY bisa digunakan antar-tab di Google Sheets?
Ya. Sintaksnya adalah =QUERY('NamaTab'!A:H, "SELECT ...", 1) - nama tab dibungkus tanda kutip tunggal, diikuti tanda seru dan rentang kolom. Argumen ketiga (angka header) wajib disertakan agar baris judul tidak dihitung sebagai data. Formula ini bekerja lintas tab dalam satu file; untuk lintas file, Anda perlu menggabungkannya dengan IMPORTRANGE terlebih dahulu.
Mengapa formula QUERY mengembalikan parse error pada filter tanggal?
Penyebab paling umum adalah format tanggal yang salah di dalam string SQL. QUERY hanya menerima format yyyy-mm-dd yang dibungkus tanda kutip tunggal, seperti date '2026-01-01'. Format lain seperti 01/01/2026 atau 1 Januari 2026 akan memicu parse error. Jika nilai tanggal berasal dari sel lain, gunakan TEXT(sel,"yyyy-mm-dd") untuk mengonversi formatnya sebelum digabungkan ke dalam string kueri.
Apa perbedaan formula QUERY dan SUMIFS untuk laporan keuangan?
SUMIFS mengembalikan satu nilai agregat ke satu sel - cocok untuk dashboard KPI atau sel input pada model kalkulasi. QUERY mengembalikan sekumpulan baris yang terfilter, terurut, dan teragregasi - cocok untuk tab pelaporan yang menampilkan irisan data lengkap seperti P&L per segmen atau laporan varians per cost center. Untuk model FP&A, keduanya saling melengkapi: SUMIFS di mesin kalkulasi, QUERY di lapisan output dan pelaporan.
Fungsi agregat apa saja yang didukung formula QUERY?
QUERY mendukung lima fungsi agregat: SUM, COUNT, AVG, MAX, dan MIN. Fungsi seperti MEDIAN, STDEV, atau persentil tidak tersedia di dalam string QUERY. Untuk kebutuhan ini, gunakan QUERY untuk menarik dan mengurutkan baris yang relevan, lalu terapkan fungsi tambahan (misalnya =MEDIAN(...)) pada rentang hasil QUERY menggunakan formula pembantu di kolom terpisah.
Kesimpulan
Formula QUERY menangani output baris yang terfilter, terurut, dan teragregasi dalam satu ekspresi. Referensi antar-tab bekerja dengan sintaks 'NamaSheet'!Rentang standar beserta argumen header. Filter tanggal membutuhkan format string yyyy-mm-dd. Agregasi mendukung lima fungsi (SUM, COUNT, AVG, MAX, MIN) - tidak lebih dari itu. Klausa WHERE mendukung AND/OR/NOT dengan IS NULL untuk penanganan sel kosong. Dalam model FP&A, QUERY paling tepat berada di tab pelaporan dan output; SUMIFS berada di mesin kalkulasi di mana nilai tunggal mengaliri formula hilir.
ModelMonkey dapat membuat dan mengiterasi formula QUERY secara percakapan - berguna saat Anda membangun tampilan pelaporan baru dan tidak ingin mendebug sintaks string SQL secara manual. Coba ModelMonkey gratis selama 14 hari - bekerja di Google Sheets maupun Excel.