Bagaimana cara menggunakan sum di excel melalui vba?
Di Excel, Anda bisa menggunakan VBA untuk menghitung jumlah nilai dari rentang sel atau beberapa rentang. Dan, dalam tutorial ini, kita akan mempelajari berbagai cara menggunakannya.
Jumlahkan di VBA menggunakan WorksheetFunction
Di VBA, ada beberapa fungsi yang bisa Anda gunakan, namun tidak ada fungsi khusus untuk tujuan tersebut. Ini tidak berarti kita tidak bisa menghasilkan uang. Di VBA, ada properti bernama WorksheetFunction yang dapat membantu Anda memanggil fungsi dalam kode VBA.
Pertimbangkan jumlah nilai dalam rentang A1:A10.
- Pertama masuk ke properti fungsi lembar kerja, lalu pilih fungsi SUM dari daftar.
- Selanjutnya, Anda harus memasukkan tanda kurung awal seperti yang Anda lakukan saat memasukkan fungsi di spreadsheet.
- Setelah itu, kita perlu menggunakan objek rentang untuk merujuk pada rentang yang ingin kita hitung jumlahnya.
- Di akhir, ketikkan tanda kurung tutup dan tetapkan nilai kembalian fungsi ke sel B1.
Range ("B1") = Application.WorksheetFunction.Sum(Range("A1:A10"))
Sekarang ketika Anda menjalankan kode ini, kode ini menghitung jumlah nilai yang Anda miliki dalam rentang A1:A10 dan memasukkan nilainya di sel B1.
Jumlah nilai seluruh kolom atau baris
Dalam hal ini, cukup tentukan baris atau kolom, bukan rentang yang kita gunakan pada contoh sebelumnya.
' for the entire column A Range ("B1") = Application.WorksheetFunction.Sum( Range ("A:A")) ' for entire row 1 Range ("B1") = Application.WorksheetFunction.Sum( Range ("1:1"))
Gunakan VBA untuk menambahkan nilai pilihan
Sekarang misalkan Anda ingin menjumlahkan nilai sel yang dipilih saja karena Anda dapat menggunakan kode seperti ini.
Sub vba_sum_selection() Dim sRange As Range Dim iSum As Long On Error GoTo errorHandler Set sRange = Selection iSum = WorksheetFunction.Sum(Range(sRange.Address)) MsgBox iSum errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
Pada kode di atas, kita menggunakan seleksi, lalu menentukannya dalam variabel “sRange”, lalu kita menggunakan alamat variabel rentang ini untuk mendapatkan jumlahnya.
Jumlah VBA dari semua sel di atas
Kode berikut mengekstrak semua sel dan jumlah nilai dan memasukkan hasilnya ke dalam sel yang dipilih.
Sub vba_auto_sum() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection. End (xlUp). End (xlUp).Address iLast = Selection. End (xlUp).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Sum(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
Tambahkan rentang dinamis menggunakan VBA
Demikian pula, Anda dapat menggunakan rentang dinamis saat menggunakan VBA untuk menambahkan nilai.
Sub vba_dynamic_range_sum() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection.Offset(1, 1).Address iLast = Selection.Offset(5, 5).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Sum(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
Tambahkan kolom atau baris dinamis
Demikian pula, jika Anda ingin menggunakan kolom dinamis, Anda dapat menggunakan kode berikut yang akan mengambil kolom sel aktif dan menjumlahkan semua nilai yang Anda miliki di sana.
Sub vba_dynamic_column() Dim iCol As Long On Error GoTo errorHandler iCol = ActiveCell.Column MsgBox WorksheetFunction.Sum(Columns(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
Dan berturut-turut.
Sub vba_dynamic_row() Dim iRow As Long On Error GoTo errorHandler iRow = ActiveCell.Row MsgBox WorksheetFunction.Sum(Rows(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
Gunakan SUMIF dengan VBA
Sama seperti penjumlahan, Anda bisa menggunakan fungsi SUMIF untuk menjumlahkan nilai dengan kriteria seperti pada contoh berikut.
Sub vba_sumif() Dim cRange As Range Dim sRange As Range Set cRange = Range ("A2:A13") Set sRange = Range ("B2:B13") Range ("C2") = _ WorksheetFunction.SumIf(cRange, "Product B", sRange) End Sub