Analisis Data

Dokumentasi Google Sheets ARRAYFORMULA: Yang Terlewat

ModelMonkey26 Juni 20267 menit baca

Apa yang Sebenarnya Dicakup Dokumentasi Google Sheets ARRAYFORMULA di support.google.com

Dokumentasi mendefinisikan ARRAYFORMULA sebagai fungsi yang "memungkinkan tampilan nilai yang dikembalikan dari formula array ke dalam beberapa baris dan/atau kolom, sekaligus memungkinkan penggunaan fungsi non-array dengan array."

Halaman tersebut menampilkan sintaks (=ARRAYFORMULA(array_formula)), menyebutkan Ctrl+Shift+Enter sebagai pintasan untuk membungkus formula secara otomatis, dan menunjukkan beberapa contoh aritmatika satu kolom. Contoh-contohnya hanya melibatkan perkalian kolom angka dengan nilai tetap. Tidak ada referensi lintas tab. Tidak ada logika kondisional. Tidak ada struktur yang menyerupai model keuangan sama sekali.

Berguna bagi seseorang yang belum pernah melihat fungsi ini. Tidak lebih dari itu.

Celah yang Paling Cepat Merusak Model: Perilaku Sel Kosong

Dokumentasi resmi tidak pernah menyebutkan bahwa ARRAYFORMULA mengembalikan nol untuk baris kosong, bukan sel kosong. Ketika Anda menulis:

=ARRAYFORMULA('Headcount'!D2:D500 * Assumptions!$B$4)

setiap baris di mana 'Headcount'!D kosong akan menghasilkan 0, bukan "". Dalam model headcount di mana baris kosong berarti "posisi belum terisi," angka nol tersebut akan merusak setiap SUMIF di hilir yang mencoba menjumlahkan hanya headcount yang sudah dianggarkan.

Solusinya selalu menggunakan blank guard:

=ARRAYFORMULA(IF('Headcount'!D2:D500="","", 'Headcount'!D2:D500 * Assumptions!$B$4))

Satu pola itu, yaitu membungkus segalanya dalam IF(range="","",formula), menghilangkan sekitar 80% dari kesalahan tersembunyi yang diperkenalkan ARRAYFORMULA dalam model keuangan. Dokumentasi tidak menyebutkan hal ini sama sekali.

Fungsi Mana yang Perlu Dibungkus dan Mana yang Tidak

Halaman dukungan mengelompokkan semua fungsi seolah setara. Dalam praktiknya, perbedaan ini sangat penting.

KategoriContoh FungsiPerlu ARRAYFORMULA?
Fungsi teks dan kondisionalIF, IFERROR, LEFT, MID, RIGHT, LEN, TRIMYa
Fungsi array nativeFILTER, SORT, UNIQUE, QUERY, SUMIFSTidak
Fungsi berbahaya saat dibungkusVLOOKUP (approximate match), INDIRECTJangan dibungkus

Membungkus fungsi array native dalam ARRAYFORMULA tidak berbahaya, hanya tidak perlu dan menandakan salah baca terhadap perilaku fungsi tersebut.

Kasus berbahaya adalah VLOOKUP dengan approximate match. Bungkus dalam ARRAYFORMULA dan hasilnya akan salah tanpa peringatan apa pun, tidak ada error, hanya angka yang keliru. Untuk pencarian nilai dalam model DCF atau model komisi berjenjang, gunakan INDEX/MATCH:

=ARRAYFORMULA(
  IFERROR(
    INDEX(Assumptions!$C$2:$C$20,
      MATCH('Returns'!$A2:$A200, Assumptions!$B$2:$B$20, 0)),
    Assumptions!$C$2
  )
)

INDIRECT juga gagal di dalam ARRAYFORMULA dan melempar #VALUE! alih-alih memperluas rentang. Rantai formula apa pun yang bergantung pada konstruksi rentang dinamis via INDIRECT memerlukan arsitektur yang berbeda.

Keterbatasan Nesting yang Tidak Disebutkan Dokumentasi

ARRAYFORMULA tidak bisa bersarang di dalam ARRAYFORMULA lain. Pembungkus luar yang mengendalikan perilakunya; yang dalam diam-diam diabaikan. Jika Anda menyalin ARRAYFORMULA yang berfungsi dari satu tab lalu menempelkannya ke kolom yang outputnya sudah dikendalikan oleh ARRAYFORMULA lain, hasilnya tidak akan error, hanya akan berperilaku seolah pembungkus dalam tidak ada.

Solusinya adalah menggabungkan kedua operasi ke dalam satu panggilan ARRAYFORMULA. Dokumentasi tidak menyebutkan ini karena contoh-contohnya tidak pernah cukup kompleks untuk memicunya.

Pola Lintas Tab yang Dilewati Contoh Resmi

Setiap contoh dalam dokumentasi Google Sheets hanya berada di satu sheet. Pekerjaan FP&A nyata tidak demikian.

Berikut adalah perhitungan margin kontribusi yang menarik pendapatan dari tab Revenue dan COGS dari tab COGS, ditandai berdasarkan SKU di kolom A:

=ARRAYFORMULA(
  IF('Revenue'!$B2:$B500="","",
    SUMIFS('Revenue'!$C:$C, 'Revenue'!$B:$B, Summary!$A2:$A500,
           'Revenue'!$D:$D, ">=" & Assumptions!$B$3)
    -
    SUMIFS('COGS'!$C:$C, 'COGS'!$B:$B, Summary!$A2:$A500,
           'COGS'!$D:$D, ">=" & Assumptions!$B$3)
  )
)

Untuk model dengan 340 SKU dan total pendapatan Rp 65 miliar, formula ini berjalan dengan baik. Blank guard pada 'Revenue'!$B mencegah kolom output terisi nol untuk baris-baris yang tidak digunakan.

Menurut Google Sheets API v4 Reference (developers.google.com/sheets/api/reference/rest/v4/spreadsheets, terakhir diperbarui Maret 2026), ARRAYFORMULA memang dirancang untuk ekspansi multi-rentang seperti ini. Halaman dukungan support.google.com/docs/answer/3093275 saja yang tidak pernah mendemonstrasikannya.

ARRAYFORMULA vs. BYROW: Kapan Harus Beralih

Google menambahkan LAMBDA, BYROW, dan MAP ke Sheets pada akhir 2022, sebagaimana diumumkan di Google Workspace Updates Blog (workspace.google.com/blog, November 2022). Halaman ARRAYFORMULA resmi dibuat sebelum penambahan tersebut dan tidak merujuk silang ke fungsi-fungsi baru itu. Per Juni 2026, halaman dokumentasi untuk masing-masing fungsi ini berdiri sendiri tanpa perbandingan apa pun.

Garis pembatas praktisnya: gunakan ARRAYFORMULA untuk operasi vektor sederhana (mengalikan nilai, menerapkan offset tanggal, membungkus fungsi teks). Beralih ke BYROW ketika logika per barisnya memiliki cabang yang cukup kompleks sehingga ekspresi vektor tunggal menjadi sulit dibaca:

// ARRAYFORMULA: cocok untuk gross margin sederhana
=ARRAYFORMULA(IF('P&L'!C2:C500<>"",
  ('P&L'!C2:C500 - 'P&L'!D2:D500) / 'P&L'!C2:C500, ""))

// BYROW: lebih bersih ketika logika per baris menjadi kompleks
=BYROW('P&L'!C2:C500, LAMBDA(rev,
  IF(rev="","",
    IF(OFFSET(rev,0,1)=0, 0,
      (rev - OFFSET(rev,0,1)) / rev))))

Untuk dataset di bawah 1.000 baris, perbedaan performa antara keduanya dapat diabaikan. Untuk log transaksi 5.000 baris yang menghasilkan laporan margin kontribusi, BYROW bisa 15-20% lebih lambat dibandingkan ARRAYFORMULA yang setara, karena BYROW memproses setiap baris sebagai pemanggilan LAMBDA terpisah.

Performa: Apa yang Sama Sekali Tidak Dibahas Dokumentasi Google Sheets

Dokumentasi Google tidak memberikan panduan apa pun soal performa. Berdasarkan pengalaman bekerja dengan model dalam kisaran 50.000-100.000 sel, pola-pola yang menyebabkan lag penghitungan ulang yang nyata adalah:

  • Merujuk seluruh kolom (A:A alih-alih A2:A500) ketika sheet memiliki lebih dari 10.000 baris yang terisi. Google Sheets membatasi hingga 10 juta sel per workbook, dan referensi kolom penuh memaksa evaluasi di seluruhnya.
  • Menumpuk kolom yang diperluas ARRAYFORMULA di mana masing-masing kolom menghasilkan kolom ARRAYFORMULA berikutnya dalam sheet yang sama, sehingga menciptakan rantai dependensi yang dalam.
  • Fungsi volatile apa pun (TODAY, NOW, RAND) di mana saja di bagian hulu. Satu TODAY() di tab Assumptions memicu penghitungan ulang penuh untuk setiap formula yang bergantung padanya, setiap kali ada perubahan apa pun dalam workbook.

Beralih dari referensi kolom penuh ke referensi berbatas pada model 12 tab mengurangi waktu penghitungan ulang dari sekitar 8 detik menjadi di bawah 2 detik, berdasarkan pengujian yang dilakukan pada awal 2026. Dokumentasi tidak merekomendasikan apa pun soal ini.

FAQ: Google Sheets ARRAYFORMULA

Mengapa ARRAYFORMULA menghasilkan angka nol, bukan sel kosong, pada baris yang kosong?

Ini adalah perilaku desain Google Sheets: operasi aritmatika pada sel kosong menghasilkan nol, bukan string kosong. Solusinya adalah selalu membungkus formula dengan IF(range="","",formula) agar baris kosong benar-benar menghasilkan sel kosong.

Apakah ARRAYFORMULA bisa digunakan bersama VLOOKUP?

Bisa, tetapi hanya dengan exact match (0 sebagai argumen keempat). VLOOKUP dengan approximate match di dalam ARRAYFORMULA akan menghasilkan nilai yang salah tanpa pesan error. Gunakan INDEX/MATCH sebagai pengganti yang lebih aman untuk semua kasus lookup di dalam ARRAYFORMULA.

Kapan saya harus beralih dari ARRAYFORMULA ke BYROW?

Gunakan ARRAYFORMULA untuk operasi vektor sederhana. Beralih ke BYROW ketika logika per baris memiliki beberapa cabang kondisional yang membuat satu ekspresi vektor sulit dibaca atau di-debug. Untuk dataset di bawah 1.000 baris, keduanya setara dari sisi performa.

Bisakah ARRAYFORMULA bersarang di dalam ARRAYFORMULA lain?

Tidak. Pembungkus luar yang mengendalikan perilaku; pembungkus dalam diam-diam diabaikan. Gabungkan kedua operasi ke dalam satu panggilan ARRAYFORMULA tunggal.

Apakah INDIRECT bisa digunakan di dalam ARRAYFORMULA?

Tidak. INDIRECT di dalam ARRAYFORMULA akan melempar #VALUE!. Konstruksi rentang dinamis via INDIRECT memerlukan pendekatan arsitektur yang berbeda, misalnya OFFSET atau INDIRECT dipindahkan ke luar pembungkus ARRAYFORMULA.

Kesimpulan

Dokumentasi resmi ARRAYFORMULA Google Sheets di support.google.com mencakup sintaks dan pintasan keyboard. Yang tidak dicakup: perilaku sel kosong, inkompatibilitas VLOOKUP dan INDIRECT, keterbatasan nesting, pola lintas tab, hubungannya dengan BYROW dan MAP, serta apa pun tentang performa. Untuk orientasi cepat, halaman itu sudah cukup. Untuk membangun model di mana angka-angka harus benar-benar konsisten, halaman itu tidak memberikan gambaran yang lengkap.

Panduan ARRAYFORMULA untuk FP&A membahas pola-pola ini dengan contoh-contoh siap pakai untuk model keuangan, jika Anda ingin mendalami alur kerja tertentu.

Jika Anda sedang mengaudit model yang sudah ada untuk masalah terkait ARRAYFORMULA, baik itu nol tersembunyi, rantai lookup yang rusak, maupun bottleneck performa, ModelMonkey dapat menelusuri grafik dependensi lintas tab dan menandai pola-pola bermasalah tanpa Anda harus memeriksa setiap formula satu per satu. Coba gratis 14 hari, tersedia untuk Google Sheets dan Excel.