Empat pola QUERY yang paling sering digunakan analis FP&A adalah WHERE, ORDER BY, SELECT DISTINCT, dan GROUP BY. Excel menangani tiga di antaranya dengan baik, dan satu dengan workaround. Berikut tampilan masing-masing penggantinya ketika datanya nyata.
Referensi Cepat: Sintaks QUERY vs. Ekuivalen Excel
| Klausul QUERY | Ekuivalen Excel | Catatan |
|---|---|---|
SELECT A, B, C | CHOOSE({1,2,3}, A:A, B:B, C:C) | Bungkus dengan FILTER untuk seleksi kolom |
WHERE x = 'val' | FILTER(range, condition) | Gunakan * untuk AND, + untuk OR |
ORDER BY D DESC | SORTBY(range, sort_col, -1) | Kunci sort bisa di luar rentang output |
SELECT DISTINCT A | UNIQUE(A:A) | Kompatibel langsung dengan FILTER dan SORT |
GROUP BY A, SUM(B) | UNIQUE() + SUMIFS(…, A2#) | Spill reference adalah kuncinya |
LIMIT n | TAKE(result, n) | Tersedia di Excel 365 (2022+) |
Menurut dokumentasi Google Visualization API Query Language, QUERY menggunakan "bahasa kueri mirip SQL" dengan 12 klausul yang didukung. Per Juli 2026, stack dynamic array Excel mencakup 8 di antaranya secara andal.
WHERE → FILTER (Dengan Seleksi Kolom)
FILTER mengembalikan seluruh baris. QUERY memungkinkan Anda menentukan kolom secara langsung, misalnya SELECT B, D, F WHERE.... FILTER tidak bisa melakukan itu.
Solusinya adalah CHOOSE dengan array constant untuk memilih kolom tertentu, sebelum atau sesudah FILTER dievaluasi. Berikut contoh untuk menarik data pendapatan kontrak ARR di atas Rp 8 miliar:
=FILTER(
CHOOSE({1,2,3},
'Revenue Detail'!B2:B5000, -- Nama akun
'Revenue Detail'!D2:D5000, -- Jenis pendapatan
'Revenue Detail'!F2:F5000), -- Nilai kontrak
('Revenue Detail'!C2:C5000 = "ARR") *
('Revenue Detail'!F2:F5000 >= 8000000000)
)
Operator * adalah logika AND. + adalah OR. Untuk filter multi-kondisi yang menjangkau beberapa tab hingga ke lembar asumsi Anda:
=FILTER(
CHOOSE({1,2,3,4},
'GL Detail'!A2:A10000,
'GL Detail'!C2:C10000,
'GL Detail'!D2:D10000,
'GL Detail'!F2:F10000),
('GL Detail'!B2:B10000 = Assumptions!$B$4) *
('GL Detail'!E2:E10000 >= Assumptions!$C$3) *
('GL Detail'!E2:E10000 <= Assumptions!$D$3)
)
Filter entitas dikaitkan ke Assumptions!$B$4, rentang tanggal dari $C$3:$D$3. Ini adalah struktur rumus di balik penarikan aktual triwulanan untuk board pack: jenis laporan di mana CFO meminta Anda menjalankan ulang untuk entitas yang berbeda, 20 menit sebelum rapat dimulai.
ORDER BY → SORTBY
SORT menangani pengurutan kolom tunggal secara ascending atau descending. SORTBY adalah yang Anda butuhkan ketika kunci pengurutan tidak masuk ke dalam output. Situasi ini sering muncul dalam tabel contribution margin, peringkat kesepakatan, dan rangkuman performa SKU.
Mengurutkan SKU aktif berdasarkan gross margin dollar secara descending, menampilkan hanya nama dan pendapatan:
=SORTBY(
FILTER(
CHOOSE({1,2}, 'SKU Detail'!A2:A500, 'SKU Detail'!C2:C500),
'SKU Detail'!E2:E500 = "Active"
),
FILTER('SKU Detail'!D2:D500, 'SKU Detail'!E2:E500 = "Active"),
-1
)
Array pengurutan harus cocok baris per baris dengan array output. FILTER bagian dalam pada kunci sort harus menggunakan kondisi yang identik dengan yang di luar, atau Anda akan mendapat error #VALUE!. Itulah jebakan utama di sini.
SELECT DISTINCT → UNIQUE
SELECT DISTINCT di QUERY setara dengan UNIQUE di Excel, dan UNIQUE justru lebih mudah dikomposisikan.
Daftar dimensi dinamis untuk laporan variansi cost center, diurutkan secara alfabetis:
=SORT(UNIQUE('GL Detail'!D2:D10000))
Dua fungsi saja. Dalam QUERY Anda harus menulis SELECT DISTINCT D ORDER BY D dan tetap perlu menangani baris header secara terpisah.
Tempat UNIQUE paling berguna dalam model nyata: menghasilkan label baris pada tabel ringkasan yang otomatis berkembang saat cost center baru muncul di GL. Tidak perlu refresh pivot table, tidak ada daftar hardcoded yang harus dipelihara, tidak ada referensi yang rusak ketika tim keuangan menambahkan departemen baru di pertengahan tahun anggaran.
GROUP BY - Satu-satunya yang Membutuhkan Workaround
Di sinilah analogi QUERY mulai tidak berlaku. GROUP BY dengan agregasi di QUERY adalah satu formula. Excel tidak memiliki padanan langsungnya. Anda membutuhkan dua formula yang bekerja bersama.
Polanya: UNIQUE menghasilkan daftar dimensi, SUMIFS dengan spill reference melakukan agregasi.
Di kolom A (label dimensi, otomatis melebar ke bawah):
=SORT(UNIQUE('GL Detail'!B2:B3000))
Di kolom B (EBITDA teragregasi, satu formula yang mencakup seluruh kolom):
=SUMIFS('GL Detail'!F2:F3000, 'GL Detail'!B2:B3000, A2#)
A2# spill reference adalah kuncinya. SUMIFS mengevaluasi terhadap setiap nilai dalam spill range dan mengembalikan array yang cocok, satu hasil per unit bisnis. Ini mereplikasi SELECT B, SUM(F) GROUP BY B ORDER BY B dalam dua formula, bukan satu.
Untuk GROUP BY multi-kondisi, misalnya EBITDA per entitas dan kategori biaya dengan menarik aktual dari tab P&L yang berisi lebih dari 5.000 baris:
=SUMIFS(
'P&L'!D2:D5000, -- Nilai yang dijumlahkan
'P&L'!B2:B5000, Dimensions!A2#, -- Entitas (spill ref)
'P&L'!C2:C5000, ">=" & Assumptions!$C$3, -- Awal periode
'P&L'!C2:C5000, "<=" & Assumptions!$D$3, -- Akhir periode
'P&L'!E2:E5000, "Operating Expense" -- Jenis pos
)
Formula ini lebih panjang dari QUERY, tetapi lebih mudah diaudit. Setiap kondisi terlihat jelas. Reviewer Anda bisa menelusuri setiap argumen tanpa perlu menjalankan formula di lingkungan uji terpisah.
Batasan Versi yang Jarang Dibahas
FILTER, SORT, SORTBY, dan UNIQUE membutuhkan Excel 365 atau Excel 2021. Fungsi-fungsi ini tidak tersedia di Excel 2019 atau versi lebih lama. Menurut dokumentasi Microsoft, fungsi dynamic array ini diperkenalkan di Excel 365 mulai 2019, dengan lisensi perpetual Excel 2021 menambahkannya pada Oktober tahun yang sama.
Jika model Anda perlu dibuka di Excel versi lama - hal yang umum di sektor perbankan di mana kebijakan IT bisa tertinggal tiga tahun atau lebih dari versi terkini - setiap formula dynamic array akan rusak. FILTER Anda berubah menjadi #NAME?. Anda kembali ke SUMIFS untuk agregasi, INDEX/MATCH untuk filter, dan pivot table untuk segala sesuatu yang berdekatan dengan GROUP BY.
Ini adalah kendala nyata dalam pekerjaan DCF untuk sindikasi bank, di mana counterparty membuka file Anda di lingkungan terkontrol yang menjalankan Excel 2016 atau 2019. QUERY memiliki masalah portabilitas yang sama di Sheets karena tidak bisa mengakses file eksternal, tetapi setidaknya berfungsi secara konsisten di dalam platform itu sendiri.
Yang Bisa Dilakukan QUERY Tapi Belum Bisa Ditiru Excel dengan Bersih
Ada dua pola yang tidak terjemahkan dengan mulus:
Kolom kalkulasi inline. QUERY memungkinkan SELECT A, B*C AS gross_profit WHERE... dan mengembalikan kolom hasil kalkulasi langsung dalam output. FILTER hanya mengembalikan nilai yang tersimpan. Anda perlu kolom helper, atau BYROW/LAMBDA yang memang berfungsi di Excel 365, tetapi belum menjadi praktik standar di sebagian besar model FP&A per pertengahan 2026.
Klausul PIVOT. QUERY bisa mentransposisi nilai baris menjadi header kolom secara dinamis. Tidak ada padanannya di Excel selain VBA atau Power Query. Jika QUERY Anda melakukan cross-tab pivoting secara inline, inilah kasus penggunaan yang benar-benar tidak memiliki pengganti bersih dalam rumus Excel standar.
Membangun Ulang Formula QUERY dalam Skala Besar
Jika Anda sedang memigrasikan model Sheets dengan 15 hingga 20 formula QUERY ke Excel, pekerjaan penerjemahannya bersifat mekanis namun melelahkan. Setiap formula harus dipecah menjadi operasi-operasi komponen, seleksi kolom ditulis ulang dengan array CHOOSE, dan logika GROUP BY dipisah menjadi pasangan UNIQUE + SUMIFS. Untuk migrasi model penuh yang akan memakan waktu dua hingga tiga jam bagi analis senior jika dikerjakan secara manual, ModelMonkey menyelesaikannya dalam hitungan menit langsung di dalam spreadsheet Anda - tersedia gratis selama 14 hari, berfungsi di Google Sheets maupun Excel.