Sub HitungStatistik()
'Membuat variabel untuk menyimpan worksheet aktif
Dim ws As Worksheet
Set ws = ActiveSheet
'Membuat variabel untuk menyimpan baris terakhir data
Dim LastRow As Long
'Mencari baris terakhir yang berisi data pada kolom B (NIK)
LastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
'==================================================
'TOTAL
'==================================================
'Menjumlahkan seluruh nilai pada kolom E (Nilai)
ws.Range("E14") = WorksheetFunction.Sum(ws.Range("E4:E" & LastRow))
'Menjumlahkan seluruh nilai pada kolom F (Absensi)
ws.Range("F14") = WorksheetFunction.Sum(ws.Range("F4:F" & LastRow))
'Menjumlahkan seluruh nilai pada kolom G (Target)
ws.Range("G14") = WorksheetFunction.Sum(ws.Range("G4:G" & LastRow))
'Menjumlahkan seluruh nilai pada kolom H (Penjualan)
ws.Range("H14") = WorksheetFunction.Sum(ws.Range("H4:H" & LastRow))
'Menjumlahkan seluruh nilai pada kolom I (Gaji)
ws.Range("I14") = WorksheetFunction.Sum(ws.Range("I4:I" & LastRow))
'==================================================
'NILAI TERTINGGI
'==================================================
ws.Range("E15") = WorksheetFunction.Max(ws.Range("E4:E" & LastRow))
ws.Range("F15") = WorksheetFunction.Max(ws.Range("F4:F" & LastRow))
ws.Range("G15") = WorksheetFunction.Max(ws.Range("G4:G" & LastRow))
ws.Range("H15") = WorksheetFunction.Max(ws.Range("H4:H" & LastRow))
ws.Range("I15") = WorksheetFunction.Max(ws.Range("I4:I" & LastRow))
'==================================================
'NILAI TERENDAH
'==================================================
ws.Range("E16") = WorksheetFunction.Min(ws.Range("E4:E" & LastRow))
ws.Range("F16") = WorksheetFunction.Min(ws.Range("F4:F" &LastRow))
ws.Range("G16") = WorksheetFunction.Min(ws.Range("G4:G" & LastRow))
ws.Range("H16") = WorksheetFunction.Min(ws.Range("H4:H" & LastRow))
ws.Range("I16") = WorksheetFunction.Min(ws.Range("I4:I" & LastRow))
'==================================================
'RATA-RATA
'==================================================
ws.Range("E17") = WorksheetFunction.Average(ws.Range("E4:E" & LastRow))
ws.Range("F17") = WorksheetFunction.Average(ws.Range("F4:F" & LastRow))
ws.Range("G17") = WorksheetFunction.Average(ws.Range("G4:G" & LastRow))
ws.Range("H17") = WorksheetFunction.Average(ws.Range("H4:H" & LastRow))
ws.Range("I17") = WorksheetFunction.Average(ws.Range("I4:I" & LastRow))
'Mengatur format mata uang pada Penjualan dan Gaji
ws.Range("H14:I17").NumberFormat = """Rp ""#,##0.00"
'Mengatur format rata-rata menjadi 2 angka di belakang koma
ws.Range("E17:G17").NumberFormat = "0.00"
'Menampilkan pesan jika proses selesai
MsgBox "Perhitungan berhasil!", vbInformation
End Sub
Penjelasan bagian LastRow
Bagian ini memang yang paling sering membuat bingung.
LastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
Mari kita uraikan satu per satu.
1. ws.Rows.Count
Artinya menghitung jumlah baris pada worksheet.
Di Excel modern jumlahnya adalah:
1048576
Jadi sebenarnya VBA membaca:
ws.Cells(1048576, "B")
Artinya:
Pergi ke sel B1048576 (baris paling bawah Excel).
2. .End(xlUp)
Ini sama seperti menekan keyboard:
Ctrl + ↑
Misalnya di kolom B seperti ini
B1
B2
B3 NIK
B4 EMP001
B5 EMP002
B6 EMP003
B7 EMP004
B8 EMP005
B9 EMP006
B10 EMP007
B11 EMP008
B12 EMP009
B13 EMP010
B14 kosong
B15 kosong
...
B1048576 kosong
VBA mulai dari bawah
B1048576
kemudian
Ctrl + ↑
berhenti di
B13
karena itu adalah sel terakhir yang masih berisi data.
3. .Row
Mengambil nomor barisnya.
Jadi
LastRow = 13
Ilustrasi
Kolom B
B1
B2
B3 NIK
B4 EMP001
B5 EMP002
B6 EMP003
B7 EMP004
B8 EMP005
B9 EMP006
B10 EMP007
B11 EMP008
B12 EMP009
B13 EMP010 ← LastRow
B14
B15
...
B1048576
Maka
LastRow = 13
Kemudian saat VBA menjalankan
ws.Range("E4:E" & LastRow)
VBA menggabungkan teks:
"E4:E" & 13
menjadi
E4:E13
yang sama persis dengan menulis:
Range("E4:E13")
Kenapa memakai kolom B?
Karena kolom B (NIK) selalu terisi untuk setiap pegawai.
Kalau nanti jumlah pegawai bertambah menjadi 100 orang, otomatis menjadi:
EMP099
EMP100
maka:
LastRow = 103
sehingga kode berubah otomatis menjadi:
Range("E4:E103")
Tanpa perlu mengubah macro lagi.
💡 Untuk materi VBA bagi pemula, saya biasanya menyebut baris ini sebagai “rumus mencari baris terakhir yang berisi data”, karena ini adalah teknik yang hampir selalu digunakan saat membuat macro agar dapat menyesuaikan jumlah data secara otomatis.
Info Belajar Ms Excel 0821 2038 8854