Skript VBA untuk Menghitung Sum, Max, Min, Average

kursus ms excel lengkap di cileungsi, cibubur

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

Leave a Reply

Your email address will not be published. Required fields are marked *