Buat Template Laporan Laba Rugi di Google Sheets: FP&A
Buat template laba rugi 8 tab di Google Sheets — SUMIFS lintas tab, bridge EBITDA langsung, tautan tiga laporan keuangan, dan format siap dewan direksi.
Panduan ini memandu Anda membangun template laba rugi 8 tab di Google Sheets yang tahan terhadap review CFO — dengan SUMIFS lintas tab yang menarik data aktual, bridge EBITDA langsung, tautan tiga laporan keuangan yang seimbang, dan ringkasan dewan direksi yang dapat dipahami orang non-analis dalam 90 detik.
Yang Anda Perlukan
- Akses Google Sheets dengan izin editor pada file yang sedang digunakan
- Sumber data aktual (ekspor ERP, CSV QuickBooks, atau data MRR Stripe) yang memuat setidaknya: kolom tanggal, nama akun, kategori biaya, dan jumlah
- Familiar dengan SUMIFS, EDATE, serta referensi absolut dan relatif
- Bagan akun atau skema kategorisasi biaya yang Anda kelola sendiri
- Named ranges atau header kolom yang konsisten pada data sumber Anda
Panduan Langkah demi Langkah
Rencanakan Arsitektur Tab Template Laporan Laba Rugi Anda
Struktur tab yang Anda pilih dalam 10 menit pertama menentukan apakah model ini akan mudah dipelihara dalam 6 bulan ke depan atau justru menjadi beban yang Anda serahkan dengan rasa bersalah. Setiap tab harus memiliki satu fungsi saja — input, data sumber, kalkulasi, atau output — dan aliran data harus berjalan satu arah.
Tata letak 8 tab yang berfungsi untuk template Laporan Laba Rugi FP&A:
| Tab | Fungsi |
|---|---|
| Assumptions | Semua input yang di-hardcode: tingkat pertumbuhan, rencana headcount, target margin |
| Revenue | Pendapatan bulanan/kuartalan per lini produk atau segmen |
| COGS | Biaya langsung yang dipetakan ke lini pendapatan |
| OpEx | Biaya operasional headcount dan non-headcount |
| P&L | Ringkasan laporan laba rugi yang menarik data dari empat tab di atas |
| Actuals | Paste data ekspor ERP atau sistem akuntansi yang hanya boleh dibaca |
| Variance | Aktual vs. rencana dengan selisih persentase dan nominal |
| Board Summary | Tampilan QoQ dan YTD yang diformat untuk non-analis |
- Perlakukan tab Actuals sebagai read-only sepenuhnya — Anda hanya melakukan paste ke dalamnya, tidak pernah menautkan formula dari sumber luar; semua tab di hilir membaca dari tab ini melalui SUMIFS
- Beri kode warna tab berdasarkan kategori: biru untuk input, abu-abu untuk data sumber, hijau untuk output; CFO Anda akan berterima kasih saat menelusuri board pack
- Beri nama tab tanpa spasi (
P_and_LatauPL) — nama tab dengan spasi membutuhkan tanda petik tunggal di setiap formula lintas tab, dan itu akan sangat merepotkan - Bangun dari kiri ke kanan: Assumptions → Revenue → COGS → OpEx → P&L → Actuals → Variance → Board Summary mencerminkan aliran data
Pro Tip
Kunci tab Actuals segera melalui Data → Protect Sheets and Ranges. Model yang dibagikan dengan tab sumber tidak terkunci selalu berakhir dengan seseorang yang "memperbaiki" angka langsung di data alih-alih di ekspor aktual. Anda akan menemukan kesalahannya tiga bulan kemudian saat audit.Buat Tab Assumptions — Satu Sumber Kebenaran Template Laporan Laba Rugi Anda
Setiap input yang di-hardcode dalam model harus berada di tab ini. Tanpa pengecualian. Menyematkan tingkat pertumbuhan di dalam formula tab Revenue adalah utang teknis yang akan muncul saat sprint persiapan board di waktu paling tidak tepat. Tab Assumptions adalah tempat Anda mengubah satu sel dan melihat seluruh model diperbarui secara otomatis.
Susun dengan bagian-bagian berlabel yang dipisahkan oleh baris kosong, dengan named ranges pada setiap sel input utama.
- Asumsi pendapatan: target ARR FY2026 (Rp 295 miliar), tingkat pertumbuhan per lini produk (22% SaaS, 8% layanan profesional), gross churn bulanan (4,2%)
- Rencana headcount: jumlah karyawan saat ini per departemen, penambahan yang direncanakan per kuartal, biaya fully-loaded per kepala (Rp 2,0 miliar rata-rata semua level)
- Target margin: target gross margin (61,5%), target EBITDA margin (18,0%), D&A sebagai persentase pendapatan (2,3%)
- Anchor periode model: beri nama
$B$3sebagaimodel_startdan$B$4sebagaimodel_end; semua header kolom di setiap tab mengacu pada dua sel ini - Pajak dan struktur modal: tarif pajak efektif (27%), beban bunga (Rp 2,9 miliar tahunan atas utang yang ada)
Pro Tip
Tambahkan toggle "Skenario" di Assumptions — dropdown (Data → Data Validation → List) dengan nilai Base / Upside / Downside. Lalu bangun asumsi utama Anda sebagai=IF(Assumptions!$B$1="Upside", 0.28, IF(Assumptions!$B$1="Downside", 0.14, 0.22)). Satu perubahan sel menjalankan tiga skenario tanpa menduplikasi model.Susun Tab Revenue
Revenue harus dirinci per lini produk atau segmen, dengan kolom bulanan yang didorong dari anchor periode model di tab Assumptions. Per Mei 2026, struktur paling umum untuk bisnis SaaS adalah MRR → ARR → pendapatan yang diakui, dengan baris terpisah untuk bisnis baru, ekspansi, dan kontraksi/churn.
Formula yang menarik data aktual ke baris pendapatan yang diakui:
=SUMIFS(
Actuals!$D:$D,
Actuals!$B:$B, ">="&Assumptions!$B$3,
Actuals!$B:$B, "<"&EDATE(Assumptions!$B$3,1),
Actuals!$C:$C, "Revenue - SaaS"
)
- Gunakan
EDATEuntuk batas akhir bulan alih-alih hardcode tanggal — saat Anda menggulung model ke depan dengan memperbaruimodel_start, setiap header kolom dan setiap batas tanggal SUMIFS akan diperbarui secara otomatis - Bangun setiap lini pendapatan dengan 3 baris: Plan, Actual, Variance (
=B4-B3) — dan tetapkan konvensi tanda sekarang: variance positif berarti aktual melampaui rencana untuk pendapatan - Tambahkan baris pengecekan di bagian bawah tab Revenue:
=SUMIFS(Actuals!$D:$D, Actuals!$C:$C, "Revenue*")untuk periode penuh, dibandingkan dengan total lini pendapatan di P&L Anda — jika tidak cocok, ada yang salah dalam pemetaan nama akun - Dorong header kolom dari Assumptions:
=TEXT(EDATE(Assumptions!$B$3, COLUMN()-3), "MMM-YY")di baris 3 berarti menggulung ke Q3 hanya butuh satu perubahan sel
Pro Tip
Jika bagan akun Anda memiliki penamaan yang tidak konsisten ("Revenue-SaaS" vs "Revenue - SaaS" vs "Rev SaaS"), perbaiki dengan kolom helper di tab Actuals menggunakan=TRIM(SUBSTITUTE(C2,"-"," - ")) sebelum SUMIFS Anda mereferensikannya. Jangan coba tangani variasi penamaan di dalam formula — Anda akan melewatkan beberapa kasus.Bangun COGS untuk Menentukan Gross Margin Anda
COGS adalah tempat model Laporan Laba Rugi multi-produk sering menjadi tidak rapi. Biaya dikelompokkan dalam satu baris dan tiba-tiba Anda tidak bisa mengurai lini produk mana yang menarik gross margin campuran 61,5% turun ke 58%. Bangun COGS dengan granularitas yang sama seperti Revenue — satu baris per kategori biaya, dipetakan ke lini produk yang didukungnya.
Untuk bisnis SaaS dengan pendapatan layanan profesional, struktur COGS yang bersih:
- Infrastruktur cloud (COGS - Hosting): biaya variabel langsung, hanya dipetakan ke pendapatan SaaS
- Headcount customer success (COGS - CS): alokasikan 70% ke SaaS, 30% ke layanan berdasarkan data pelacakan waktu atau pembagian tetap di Assumptions
- Pengiriman layanan profesional (COGS - Services): seluruhnya dipetakan ke pendapatan layanan
- Perangkat lunak pihak ketiga dengan harga per kursi (COGS - Tools): alokasikan berdasarkan jumlah pengguna aktif, bersumber dari Assumptions
Pro Tip
Tambahkan tabel gross margin per segmen di bagian terpisah tab COGS. Ini hanya tiga formula SUMIFS dan satu pembagian, namun dapat memberi tahu Anda apakah kompresi margin 200 bps adalah masalah biaya infrastruktur SaaS atau masalah pengiriman layanan — sebelum CFO Anda bertanya.Hubungkan OpEx Antar Tab dalam Template Laporan Laba Rugi Anda
OpEx adalah bagian model yang paling padat. Berdasarkan data benchmark FP&A dari APQC, biaya personel mewakili 60–70% dari total beban operasional untuk perusahaan perangkat lunak dan teknologi — yang berarti jadwal headcount mendorong sebagian besar tab OpEx Anda, dan kesalahan di sana langsung berdampak pada EBITDA.
Bangun jadwal headcount terlebih dahulu: grid departemen × kuartal yang menunjukkan headcount saat ini dan penambahan yang direncanakan. Formula yang menarik biaya headcount ke ringkasan OpEx:
=SUMIFS(
'OpEx'!$E:$E,
'OpEx'!$B:$B, "Engineering",
'OpEx'!$C:$C, "Headcount"
)
- Dengan biaya fully-loaded Rp 2,0 miliar dan 45 karyawan saat ini, itu berarti Rp 91 miliar OpEx headcount tahunan sebelum rekrutmen baru — model penambahan karyawan baru sebagai baris terpisah, bukan digabungkan ke baris headcount yang ada, agar Anda bisa menganalisis laju perekrutan secara independen
- Tambahkan sel
hire_pace_multiplierdi Assumptions (default 1,0): setiap baris penambahan yang direncanakan di OpEx dikalikan dengan nilai ini, sehingga menurunkannya ke 0,75 akan memodelkan perlambatan rekrutmen tanpa menyentuh baris individual - OpEx non-headcount (SaaS tools, perjalanan & hiburan, kantor, pengeluaran pemasaran) ditarik dari Actuals melalui SUMIFS dengan pola rentang tanggal yang sama seperti yang digunakan di Revenue
- Buat pengecekan total OpEx:
=SUM('OpEx'!C2:C200)di tab P&L harus cocok dengan jumlah semua SUMIFS OpEx dari Actuals untuk periode yang sama setelah Anda melewati fase plan-only
Pro Tip
Untuk analisis sensitivitas runway — pertanyaan umum dari dewan direksi — hubungkan sel "bulan runway" ke tab Board Summary:=('Balance Sheet'!cash_balance) / ('P&L'!monthly_burn). Ketika hire pace multiplier berubah, perhitungan runway akan diperbarui secara otomatis.Hitung EBITDA dan Bangun Bridge-nya
EBITDA di tab P&L adalah pengurangan langsung COGS dan OpEx dari Revenue, lalu tambahkan kembali D&A dari Assumptions. Bridge EBITDA — yang menunjukkan pergerakan periode ke periode — sebaiknya ditempatkan di bagian khusus tab P&L atau dalam named range block yang mengisi Board Summary.
Perhitungan EBITDA yang menarik lintas tab:
='Revenue'!C3 - 'COGS'!C25 - 'OpEx'!C42 + (Assumptions!rev_pct_da * 'Revenue'!C3)
Di mana C25 adalah total COGS, C42 adalah total OpEx, dan rev_pct_da adalah named range D&A-sebagai-%-pendapatan Anda (2,3% dalam model ini).
- Bangun bridge EBITDA sebagai kolom baris yang didorong formula: EBITDA periode sebelumnya, ditambah selisih pendapatan, dikurangi selisih COGS, dikurangi selisih OpEx, sama dengan EBITDA periode saat ini — setiap baris adalah formula, bukan variance yang di-hardcode
- Dengan kelipatan EBITDA 14,2x dari EBITDA Rp 38,4 miliar, estimasi nilai enterprise adalah Rp 545 miliar — tempatkan perhitungan valuasi ini di bagian bernama di tab P&L agar diperbarui otomatis saat EBITDA bergerak
- Tambahkan baris persentase margin untuk setiap level: gross margin %, EBITDA margin %, dan net margin % — inilah yang pertama kali dibaca oleh dewan direksi
- Pengecekan silang: EBITDA dari tab P&L harus direkonsiliasi ke arus kas operasional dalam laporan Arus Kas sebelum perubahan modal kerja; jika tidak cocok, ada sesuatu yang salah dikategorikan antara operasional dan non-operasional
Pro Tip
Tambahkan kolom "periode sebelumnya" di tab P&L yang menarik periode yang langsung mendahului menggunakanOFFSET. Bridge EBITDA kemudian dapat mengacu pada kolom tersebut secara otomatis saat Anda menggulung model ke depan, tanpa perlu memilih periode secara manual.Hubungkan Model Tiga Laporan Keuangan
P&L mengisi retained earnings di Neraca dan menyediakan baris net income awal untuk laporan Arus Kas. Kedua tautan harus didorong formula — hardcode salah satunya akan memutus rekonsiliasi tiga laporan keuangan begitu data aktual masuk.
Berdasarkan PSAK 1 (Penyajian Laporan Keuangan), laporan laba rugi harus direkonsiliasi dengan perubahan ekuitas — yang berarti roll retained earnings di Neraca harus terhubung persis dengan baris net income di P&L.
Tautan retained earnings:
='Balance Sheet'!$C$42 + 'P&L'!C58
Di mana C58 adalah net income untuk periode tersebut dan $C$42 adalah retained earnings periode sebelumnya. Titik awal Arus Kas:
='P&L'!C58
- Tambahkan kembali item non-kas (D&A dari Assumptions, kompensasi berbasis saham dari OpEx) di bagian aktivitas operasional; keduanya harus berupa referensi formula, tidak pernah di-hardcode
- Perubahan modal kerja ditarik dari selisih Neraca:
=('Balance Sheet'!C22 - 'Balance Sheet'!B22) * -1untuk piutang usaha (kenaikan AR merupakan penggunaan kas) - Bangun baris pengecekan neraca di bagian bawah Neraca:
='Balance Sheet'!Total_Assets - 'Balance Sheet'!Total_Liabilities - 'Balance Sheet'!Total_Equity— terapkan conditional formatting untuk membuat sel ini berwarna merah jika menyimpang lebih dari Rp 1 dari nol - Bridge EBITDA ke free cash flow harus seimbang: EBITDA → dikurangi add-back D&A setelah pajak → dikurangi capex → sama dengan unlevered FCF, yang harus cocok dengan yang dihasilkan laporan Arus Kas Anda
Pro Tip
Jika Neraca tidak seimbang setelah menghubungkan tiga laporan, isolasi masalahnya dengan memeriksa retained earnings terlebih dahulu (titik putus paling umum), lalu modal kerja (paling umum kedua), kemudian jadwal utang. Jangan mulai dari awal — selalu ada satu referensi yang rusak.Format Template Laporan Laba Rugi untuk Presentasi ke Dewan Direksi
Template P&L yang hanya bisa Anda baca sendiri bukanlah deliverable. Tab Board Summary menerjemahkan output model menjadi sesuatu yang bisa dibaca anggota dewan dalam 90 detik — tanpa formula bar, tanpa referensi mentah, tanpa angka 8 digit dalam format angka default.
Aturan format utama untuk Board Summary:
- Tampilkan nilai dalam ribuan dengan satu desimal menggunakan format angka kustom:
"Rp"#.##0,0"rb"— diterapkan melalui Format → Number → Custom number format; Rp 4.218.312 menjadi Rp 4.218,3 rb - Kolom variance menggunakan conditional formatting: hijau (RGB 87, 187, 138) untuk favorable, merah (RGB 255, 87, 87) untuk unfavorable — tetapi tetapkan konvensi tanda terlebih dahulu: favorable untuk pendapatan berarti aktual > rencana, favorable untuk OpEx berarti aktual < rencana; keduanya berlawanan
- Dorong header kolom periode dari Assumptions:
=TEXT(EDATE(Assumptions!$B$3, COLUMN()-3), "MMM-YY")agar menggulung model ke depan tidak memerlukan pengetikan ulang 12 header - Bekukan baris 1–3 (nama perusahaan, header periode, spasi) dan bekukan kolom A (label lini item) melalui View → Freeze; model harus bisa dinavigasi tanpa membuka kunci apa pun
- Tingkat pertumbuhan QoQ dihitung inline:
=(C3-B3)/B3diformat sebagai persentase dengan satu desimal — tambahkan grafik sparkline di kolom B menggunakan=SPARKLINE('P&L'!B3:M3)untuk menampilkan arah tren sekilas
Pro Tip
Sembunyikan tab formula (Revenue, COGS, OpEx, Variance) dari tautan berbagi untuk dewan direksi menggunakan Format → Hide Sheet, lalu bagikan hanya tab Board Summary dan P&L sebagai view-only. Model tetap utuh; audiens melihat apa yang relevan bagi mereka.Kesimpulan
Template P&L yang dibangun dengan cara ini — asumsi diisolasi dalam satu tab, data aktual mengalir melalui SUMIFS, tiga laporan keuangan terhubung dan seimbang — dapat dipelihara oleh orang yang tidak membangunnya. Itu lebih penting dari yang terdengar: orang berikutnya yang menyentuh model ini mungkin adalah Anda sendiri pada tengah malam sebelum rapat dewan, tiga bulan dari sekarang, tanpa ingatan di mana Anda meng-hardcode tarif pajak tersebut.
Titik terlemah dalam sebagian besar template P&L bukan pada formulanya. Melainkan pada penarikan data aktual. Ekspor CSV manual sering kali salah paste, urutan kolom bergeser, nama akun berubah. Di situlah waktu terbuang, dan di situlah kesalahan masuk. ModelMonkey mengatasi titik kegagalan spesifik ini: ia berada di sidebar Google Sheets dan menarik data aktual langsung dari HubSpot, Stripe, atau sistem akuntansi Anda ke tab Actuals secara terjadwal, tanpa CSV.
Coba ModelMonkey gratis selama 14 hari — berfungsi di Google Sheets maupun Excel.
Pertanyaan Umum
Berapa banyak tab yang harus dimiliki template Laporan Laba Rugi di Google Sheets?
Template P&L FP&A yang fungsional membutuhkan minimal 6 tab: Assumptions, Revenue, COGS, OpEx, ringkasan P&L, dan tab sumber Actuals. Menambahkan tab Variance dan Board Summary menjadikannya 8 tab, yang mencakup pelaporan bulanan dan pengiriman board pack tanpa model menjadi terlalu rumit. Di atas 10 tab, overhead navigasi mulai menghabiskan lebih banyak waktu daripada manfaat organisasinya.
Bagaimana cara menghubungkan template Laporan Laba Rugi ke Neraca di Google Sheets?
Tautan utamanya adalah retained earnings: `='Balance Sheet'!$C$42 + 'P&L'!C58`, di mana C58 adalah net income untuk periode tersebut. Berdasarkan PSAK 1 (Penyajian Laporan Keuangan), laporan laba rugi harus direkonsiliasi dengan perubahan ekuitas — yang berarti tautan ini harus berupa formula, bukan angka yang di-hardcode. Bangun baris pengecekan neraca (Total Aset − Total Liabilitas − Total Ekuitas) dengan conditional formatting yang menyala merah jika ada penyimpangan dari nol.
Pola SUMIFS apa yang harus saya gunakan untuk menarik data aktual ke template P&L?
Gunakan kriteria rentang tanggal yang mengacu pada tab Assumptions Anda: `=SUMIFS(Actuals!$D:$D, Actuals!$B:$B, ">="&Assumptions!$B$3, Actuals!$B:$B, "<"&EDATE(Assumptions!$B$3,1), Actuals!$C:$C, "Revenue - SaaS")`. `EDATE` menangani batas akhir bulan tanpa tanggal yang di-hardcode, dan mereferensikan Assumptions untuk awal periode berarti menggulung model ke depan — mengubah satu sel — akan memperbarui setiap formula secara otomatis.
Bagaimana biaya headcount harus mengalir melalui template P&L?
Bangun jadwal headcount di tab OpEx: karyawan saat ini per departemen × biaya fully-loaded per kepala, dengan penambahan yang direncanakan sebagai baris terpisah. Berdasarkan data benchmark APQC, biaya personel mewakili 60–70% dari total OpEx untuk perusahaan perangkat lunak, menjadikannya lini item paling sensitif Anda. Tambahkan sel `hire_pace_multiplier` di Assumptions (default 1,0) agar Anda dapat menganalisis laju rekrutmen di semua departemen dengan satu perubahan input, bukan mengedit baris individual.
Format angka apa yang harus saya gunakan dalam template P&L siap dewan direksi?
Gunakan `"Rp"#.##0,0"rb"` untuk nilai nominal — format ini menampilkan Rp 4.218.312 sebagai Rp 4.218,3 rb, yang mudah dibaca sekilas dan tidak akan meluap dari kolom. Untuk baris margin, gunakan format persentase dengan satu desimal. Dorong header kolom dari Assumptions menggunakan `=TEXT(EDATE(Assumptions!$B$3, COLUMN()-3), "MMM-YY")` agar menggulung model ke depan tidak memerlukan pembaruan manual 12 header di 3 tab.