Pemodelan KeuanganMenengah8 menit baca

Template OKR Google Sheets: Buat Tracker 5 Tab (2026)

Bangun OKR tracker 5 tab di Google Sheets dari nol. Formula, dashboard otomatis, dan struktur template gratis - siap dalam 90 menit.

Panduan ini memandu Anda membangun OKR tracker 5 tab di Google Sheets yang bisa dibaca CFO Anda dalam 30 detik. Kebanyakan template OKR Google Sheets yang beredar di internet hanyalah daftar centang sederhana: satu kolom untuk objective, satu kolom untuk status, mungkin indikator RAG yang diperbarui secara manual sekali per kuartal. Yang ini berbeda: data aktual ditarik dari satu tab sumber, progres terakumulasi secara otomatis, dan dashboard memberi kode warna sendiri. Di akhir panduan ini, Anda akan memiliki template OKR tracker yang siap pakai dan bisa diduplikasi untuk setiap siklus perencanaan.

Yang Anda Perlukan

  • Akses Google Sheets (paket apa pun)
  • Set OKR yang sudah didefinisikan untuk minimal satu kuartal (objectives + key results dengan target numerik)
  • Familiar dengan referensi lintas tab dan array formula
  • Waktu fokus 60-90 menit untuk membangun

Panduan Langkah demi Langkah

1

Rancang Struktur Tab Template OKR Anda

Sebelum menulis satu formula pun, tentukan arsitektur tab terlebih dahulu. Setiap formula dalam model ini mengalir dalam satu arah - dari tab data mentah ke dashboard - sehingga strukturnya harus benar dari awal.

Kelima tab tersebut adalah:

TabTujuan
AssumptionsTanggal kuartal, aturan pembobotan, ambang batas
ObjectivesSatu baris per objective, dengan pemilik dan bobot
Key ResultsSatu baris per KR, terhubung ke objective-nya
ActualsInput metrik mentah - satu-satunya tab yang diedit mingguan
DashboardRingkasan yang dihitung otomatis, tidak pernah diedit langsung
  • Assumptions** menyimpan $B$3 (awal kuartal) dan $B$4 (akhir kuartal) - setiap formula dengan filter tanggal merujuk ke sel-sel ini, bukan string yang di-hardcode
  • Objectives** memiliki kolom untuk OBJ_ID (kunci teks seperti OBJ-01), Owner, Weight, dan Calculated Score (formula, bukan input)
  • Key Results** memiliki KR_ID, OBJ_ID (foreign key), Target, Unit, dan Progress % (formula)
  • Actuals** adalah satu-satunya tab tempat pengguna mengetik angka - lindungi setiap tab lain dari pengeditan yang tidak disengaja
  • Dashboard** adalah output read-only - kunci dari awal agar tidak ada yang menimpa formula

Pro Tip

Beri kode warna pada tab berdasarkan jenisnya. Biru untuk tab input (Actuals), abu-abu untuk tab yang dihitung (Dashboard), putih untuk tab referensi (Assumptions, Objectives, Key Results). Petunjuk visual ini mencegah masalah "saya kira bisa mengedit tab ini".
2

Bangun Tab Assumptions

Satu tab menjadi pemilik semua variabel konfigurasi. Jika aturan pembobotan berubah di tengah tahun, Anda cukup mengubah satu sel, bukan 40 formula sekaligus.

Susun tab Assumptions seperti ini (mulai dari baris 2, dengan baris 1 sebagai header):

B3: 2026-04-01   (tanggal mulai Q2)
B4: 2026-06-30   (tanggal akhir Q2)
B7: 0.70         (ambang batas hijau - progres KR >= 70% = sesuai jalur)
B8: 0.40         (ambang batas merah - progres KR < 40% = berisiko)
B11: TRUE        (beri bobot objective berdasarkan kolom Weight)
  • Quarter start/end** (B3:B4) mengontrol setiap SUMIFS berfilter tanggal yang menarik data dari Actuals - ubah sekali, semua ikut diperbarui
  • Thresholds** (B7:B8) menggerakkan logika RAG di Dashboard; 0,70 dan 0,40 adalah nilai default yang wajar, sesuaikan dengan toleransi organisasi Anda
  • Weight toggle** (B11) memungkinkan Anda beralih antara penilaian berbobot dan tidak berbobot untuk presentasi dewan direksi yang lebih mudah dibaca dengan bobot setara
  • Beri nama pada sel-sel kunci: QtrStart, QtrEnd, GreenThreshold, RedThreshold - named range membuat formula mudah dibaca dan tetap berfungsi saat kolom disisipkan

Pro Tip

Tambahkan sel LastUpdated yang merujuk ke TODAY() dan beri format yang mencolok. Ketika seseorang membuka file dua bulan kemudian, mereka langsung tahu apakah data sudah kedaluwarsa.
3

Isi Tab Objectives dan Key Results

Kedua tab ini adalah kamus data Anda. Hubungan di antara keduanya (satu objective, banyak key result) adalah yang membuat rollup di Langkah 5 menjadi mungkin.

Tab Objectives - satu baris per objective:

A2: OBJ-01
B2: Perluas segmen enterprise
C2: Sarah Chen
D2: 0.40           (bobot - total semua bobot objective harus berjumlah 1,0)
E2: =AVERAGEIFS('Key Results'!F:F,'Key Results'!B:B,A2)

Kolom E adalah formula, bukan input. Formula ini merata-ratakan progres setiap KR yang termasuk dalam objective tersebut.

Tab Key Results - satu baris per KR:

A2: KR-01
B2: OBJ-01         (menghubungkan kembali ke Objectives)
C2: Net Revenue Retention
D2: 1.10           (target: 110% NRR)
E2: %
F2: =IFERROR(SUMIFS(Actuals!C:C,Actuals!A:A,A2,Actuals!B:B,">="&QtrStart,Actuals!B:B,"<="&QtrEnd)/D2,"-")
  • KR_ID** di kolom A adalah kunci penghubung - Actuals merujuk ke ID ini, bukan deskripsi KR, sehingga formula tidak rusak ketika seseorang menulis ulang teks objective
  • Target** (kolom D) menyimpan tujuan numerik mentah; formula di kolom F membagi aktual dengan target untuk mendapatkan progres dalam bentuk desimal
  • Unit** (kolom E) hanya untuk tampilan - memberi tahu Dashboard apakah sel harus diformat sebagai %, Rp, atau x
  • Simpan target dalam satuan aslinya: jika tujuannya adalah Rp 4.200.000.000 ARR, simpan 4200000000, bukan 4,2 - mencampur konvensi skala akan merusak SUMIFS Anda

Pro Tip

Bekukan baris 1 pada kedua tab dan tambahkan validasi data pada kolom OBJ_ID di Key Results agar hanya ID objective yang valid yang bisa dimasukkan. Kesalahan ketik pada foreign key menghasilkan jawaban yang salah tanpa peringatan, bukan pesan error.
4

Hubungkan Tab Actuals

Actuals adalah satu-satunya tab dalam template OKR tracker ini tempat angka diketik. Semua tab lainnya membaca dari sini.

Struktur: satu baris per peristiwa pengukuran. Pengukuran NRR mingguan adalah satu baris. Pemeriksaan pipeline bulanan adalah satu baris. Jangan pernah mengagregasi sebelum menyimpan.

A2: KR-01          (KR_ID - cocok dengan tab Key Results)
B2: 2026-05-15     (tanggal pengukuran)
C2: 1.08           (nilai aktual - misal, 108% NRR dalam bentuk desimal)
D2: Q2 2026        (label periode opsional untuk filter)

Formula di kolom F tab Key Results kemudian terbaca sebagai berikut:

=IFERROR(
  SUMIFS(Actuals!C:C, Actuals!A:A, 'Key Results'!A2,
         Actuals!B:B, ">=" & QtrStart,
         Actuals!B:B, "<=" & QtrEnd)
  / 'Key Results'!D2,
"-")
  • Beberapa baris aktual untuk satu KR** tidak masalah - SUMIFS menjumlahkannya sepanjang kuartal, sehingga entri pipeline mingguan terakumulasi dengan benar
  • Filter tanggal melalui QtrStart/QtrEnd** berarti Anda bisa menyimpan aktual sepanjang tahun dalam satu sheet dan formula akan otomatis memfilter ke kuartal aktif
  • Jangan pernah menghapus baris** dari Actuals - arsipkan ke tab terpisah jika diperlukan; penghapusan merusak grafik tren historis
  • Lindungi kolom A dan B dengan validasi data: KR_ID harus ada di kolom A Key Results, tanggal harus berada dalam rentang yang wajar

Pro Tip

Tambahkan kolom Source (kolom E) tempat orang yang memasukkan data mencatat dari mana angka tersebut berasal - Salesforce, sistem keuangan, atau dihitung manual. Saat sebuah angka dipertanyakan dalam rapat dewan direksi, jejak audit sangat penting.
5

Bangun Dashboard OKR

Dashboard adalah satu-satunya tab yang boleh dilihat oleh siapa pun di luar tim inti Anda. Tab ini membaca dari semua tab lain dan tidak pernah diedit secara langsung.

Skor objective berbobot (angka utama):

=SUMPRODUCT(
  (Objectives!A2:A10<>"") *
  Objectives!D2:D10 *
  Objectives!E2:E10
)

Formula ini mengalikan bobot setiap objective dengan skor yang dihitung, lalu menjumlahkannya. Jika objective tidak diberi bobot secara setara, ini menghasilkan composite score yang sesungguhnya.

Baris progres per KR - ulangi pola ini untuk setiap KR:

Label KR:     ='Key Results'!C2
Target:       ='Key Results'!D2
Aktual:       =SUMIFS(Actuals!C:C,Actuals!A:A,'Key Results'!A2,Actuals!B:B,">="&QtrStart,Actuals!B:B,"<="&QtrEnd)
Progress %:   ='Key Results'!F2
Status RAG:   =IF('Key Results'!F2>=GreenThreshold,"🟢",IF('Key Results'!F2>=RedThreshold,"🟡","🔴"))

Aturan conditional formatting pada kolom Progress %:

AturanFormat
Nilai >= GreenThreshold (0,70)Isian hijau
Nilai >= RedThreshold (0,40)Isian kuning
Nilai < RedThreshold (0,40)Isian merah

Per Juni 2026, Google Sheets mendukung named range dalam aturan conditional formatting - gunakan GreenThreshold dan RedThreshold secara langsung, bukan nilai yang di-hardcode, agar perubahan ambang batas otomatis berlaku ke seluruh model.

  • Buat blok ringkasan di bagian atas: composite score, jumlah KR yang sesuai jalur (≥70%), jumlah yang berisiko (<40%), dan tanggal akhir kuartal yang diambil dari QtrEnd
  • Tambahkan rasio cakupan pipeline jika relevan: =SUMIFS(Actuals!C:C,...) / Objectives!D2 diformat ke 1 desimal (misal, 2,9x vs. target 3,2x)
  • Format composite score sebagai persentase besar dan tebal - ini adalah angka yang dilihat CFO; buat agar tidak bisa terlewatkan
  • Tambahkan ="Per: "&TEXT(MAX(Actuals!B:B),"dd mmm yyyy") untuk menampilkan kapan data terakhir diperbarui, agar dashboard yang kedaluwarsa langsung terlihat

Pro Tip

Beri nama tab Dashboard menjadi "📊 Dashboard" dan Actuals menjadi "📥 Actuals". Prefiks emoji membuat tujuan tab langsung terbaca dan mengurutkan tab secara visual berdasarkan jenisnya.
6

Tambahkan Formula Template OKR untuk Analisis Tren dan Kesenjangan

Snapshot statis tidak cukup untuk paket laporan kuartalan ke dewan direksi. Anda perlu menunjukkan arah, bukan hanya posisi.

Tren NRR kuartal ke kuartal (mengasumsikan aktual kuartal sebelumnya berada di tab Actuals yang sama dengan label periode):

=SUMIFS('Actuals'!C:C,
        'Actuals'!A:A, "KR-01",
        'Actuals'!D:D, "Q1 2026")
/ SUMIFS('Actuals'!C:C,
         'Actuals'!A:A, "KR-01",
         'Actuals'!D:D, "Q2 2026") - 1

Kesenjangan terhadap target - seberapa jauh dari tujuan dalam satuan:

='Key Results'!D2 - SUMIFS(Actuals!C:C, Actuals!A:A, 'Key Results'!A2,
  Actuals!B:B, ">=" & QtrStart, Actuals!B:B, "<=" & QtrEnd)

Pelacakan gross margin (jika salah satu KR Anda adalah target margin):

=SUMIFS('P&L'!C:C,'P&L'!B:B,">="&QtrStart,'P&L'!B:B,"<="&QtrEnd)
/ SUMIFS('P&L'!D:D,'P&L'!B:B,">="&QtrStart,'P&L'!B:B,"<="&QtrEnd)

Dengan target gross margin 66,2%, formula seperti ini membuat kesenjangan terhadap target menjadi real-time, tanpa perlu refresh manual.

  • Tambahkan sparkline** untuk setiap KR menggunakan =SPARKLINE(Actuals!C2:C52, {"charttype","line";"color","#1a73e8"}) - muat dalam satu sel dan menampilkan arah tanpa objek chart
  • Sorot kolom kesenjangan** menggunakan conditional format: merah jika kesenjangan > 20% dari target, kuning jika 10-20%, hijau untuk yang lainnya
  • Tambahkan sel "sisa minggu"**: =NETWORKDAYS(TODAY(), QtrEnd) - mengetahui Anda memiliki 6 minggu kerja tersisa vs. 12 mengubah seberapa mendesak skor progres 60% terbaca

Pro Tip

Buat satu "baris template" untuk tampilan KR - semua formula, semua pemformatan - lalu duplikasi 15 kali. Setiap KR baru hanya perlu mengganti KR_ID di kolom A. Tinggi baris dan lebar kolom yang konsisten membuat dashboard bisa dicetak tanpa penyesuaian.
7

Lindungi, Bagikan, dan Versi Template OKR

Model yang bisa dirusak siapa saja secara tidak sengaja bukan lagi sebuah model, melainkan sebuah risiko.

Proteksi sheet - terapkan segera:

  • Actuals**: Hanya tim entri data yang bisa mengedit kolom A-D; jangan lindungi penambahan baris baru (mereka perlu menambah baris)
  • Dashboard, Objectives, Key Results, Assumptions**: Lindungi semua sel; buat daftar pengecualian untuk 3-5 orang yang mengelola model
  • Gunakan Tools > Protect Sheets and Ranges, bukan pengaturan berbagi tingkat file - keduanya adalah kontrol yang independen
  • Beri komentar pada setiap formula yang tidak jelas** menggunakan Insert > Note, bukan kolom pembantu - notes tidak merusak rentang formula
  • Bagikan hanya tab Dashboard** untuk distribusi ke dewan direksi: File > Share > publikasikan tampilan yang difilter, bukan seluruh workbook
  • Buat named range bernama ModelVersion yang menunjuk ke sel di Assumptions yang menyimpan string versi - referensikan di footer Dashboard agar setiap cetakan bisa mengidentifikasi dirinya sendiri

Pro Tip

Tambahkan sheet tersembunyi "Panduan Entri Data" dengan instruksi untuk tab Actuals: apa yang masuk di setiap kolom, format yang tepat untuk KR_ID, dan apa yang harus dilakukan jika metrik masuk di tengah kuartal. Orang yang memasukkan data di bulan ke-3 mungkin bukan orang yang membangun model ini.

Kesimpulan

Yang telah Anda bangun adalah template OKR tracker yang sesungguhnya: model 5 tab di mana data aktual mengalir ke atas melalui formula, dashboard memperbarui dirinya sendiri, dan satu-satunya pekerjaan manual adalah memasukkan pengukuran baru di Actuals. Dengan composite progress 86%, NRR aktual 108%, dan cakupan pipeline 2,9x vs. target 3,2x, dashboard menceritakan kisahnya sendiri tanpa ada yang perlu menginterpretasikan spreadsheet secara langsung dalam rapat.

Biaya pemeliharaan terbesar model ini ke depannya adalah menjaga Actuals tetap terkini. Di sinilah otomasi membuktikan nilainya. Coba ModelMonkey gratis selama 14 hari - bekerja di Google Sheets maupun Excel dan dapat menarik metrik langsung dari HubSpot, Stripe, dan Google Analytics ke tab Actuals Anda secara terjadwal.

Pertanyaan Umum

Berapa banyak key result yang sebaiknya dimiliki setiap objective dalam template OKR Google Sheets?

3-5 KR per objective adalah batas praktis untuk struktur template ini. Lebih dari 5, formula AVERAGEIFS di tab Objectives mulai merata-ratakan noise; dashboard juga menjadi terlalu panjang untuk dibaca dalam satu tampilan tanpa menggulir. Jika sebuah objective benar-benar memiliki 8 hasil yang terukur, bagi menjadi 2 objective.

Apakah template OKR tracker ini bisa menangani beberapa tim atau departemen?

Ya - tambahkan kolom `Owner` atau `Team` pada tab Objectives dan Key Results, lalu tambahkan kolom tersebut sebagai kriteria filter dalam formula SUMIFS Anda. Dashboard dapat menampilkan composite seluruh perusahaan beserta rincian per tim menggunakan data Actuals yang sama. SUMPRODUCT yang difilter berdasarkan tim adalah pendekatan yang paling bersih.

Bagaimana cara menangani KR dengan target "semakin rendah semakin baik", seperti tingkat churn pelanggan?

Simpan target dan aktual dalam bentuk mentahnya (misal, target = 0,05, aktual = 0,03 untuk churn 3%). Sesuaikan formula progres untuk menghitung `1 - (aktual / target)` alih-alih `aktual / target`. KR di mana aktual berada di bawah target harus terbaca sebagai progres > 100%, bukan < 100%. Tandai KR-KR ini dengan kolom pembantu agar cabang formula jelas bagi siapa pun yang mengaudit model.

Apa cara yang tepat untuk menangani penambahan KR di tengah kuartal?

Tambahkan KR baru ke tab Key Results dengan tanggal mulai di kolom `KR_Start` opsional. Sesuaikan SUMIFS di Key Results untuk juga memfilter `Actuals!B:B >= KR_Start` agar aktual sebelum KR tidak menggelembungkan pengukuran. Jangan melakukan backfill pada target - KR yang ditambahkan di minggu ke-8 dari kuartal 13 minggu sebaiknya targetnya diprorasikan atau cukup dicatat sebagai "kuartal parsial" di kolom Owner.

Apa bedanya dengan template OKR yang tersedia di galeri template Google Sheets?

Template OKR bawaan Google adalah tata letak satu tab dengan dropdown status manual. Template tersebut tidak menghubungkan aktual ke target melalui formula, tidak merangkum ke composite score berbobot, dan tidak memfilter berdasarkan rentang tanggal. Struktur 5 tab dalam panduan ini lebih mendekati model keuangan ringan daripada task tracker - menghasilkan angka yang bisa Anda pertahankan dalam rapat dewan direksi, bukan daftar yang Anda perbarui berdasarkan perasaan.