Saya melakukan ini sepanjang waktu dengan vba. Saya cukup yakin saya telah menggunakan metode yang sama sejak office 95 ', dengan sedikit perubahan yang dilakukan untuk penempatan kolom. Ini dapat dilakukan dengan lebih sedikit baris jika Anda tidak mendefinisikan variabel. Ini dapat dilakukan lebih cepat jika Anda memiliki banyak baris untuk melewati atau lebih banyak hal yang Anda perlu mendefinisikan grup Anda.
Saya telah mengalami situasi di mana 'grup' didasarkan pada 2-5 sel. Contoh ini hanya terlihat pada satu kolom, tetapi dapat diperluas dengan mudah jika ada yang meluangkan waktu untuk bermain dengannya.
Ini mengasumsikan 3 kolom, dan Anda harus mengurutkan berdasarkan kolom group_values. Sebelum Anda menjalankan makro, pilih sel pertama yang ingin Anda bandingkan di kolom group_values.
'group_values, some_number, empty_columnToHoldSubtotals
'(semuanya ada di sini)
'cookie 1 kosong
'cookie 3 kosong
'kue 4 kosong
kosong 0
kosong 3
'...
'berhenti
Subtotal ()
'mendefinisikan dua string dan penghitung subtotal
Redupkan satu ini, satu itu sebagai string
Dim subCount As Double
'benih nilai-nilai
thisOne = ActiveCell.Value
thatOne = ActiveCell.Offset (1, 0)
subCount = 0
'atur loop yang akan pergi sampai mencapai nilai berhenti
While (ActiveCell.Value <> "stop")
'membandingkan nilai sel dengan sel di bawahnya.
Jika (thisOne = thatOne) Kemudian
'jika sel-selnya sama, jumlah baris ditambahkan ke sub-bagian
subCount = subCount + ActiveCell.Offset (0, 1) .Nilai
Lain
'jika sel-selnya tidak sama, subkountnya ditulis, dan subtotal diatur ulang.
ActiveCell.Offset (0, 2) .Value = ActiveCell.Offset (0, 1) .Value + subCount
subCount = 0
Berakhir jika
'pilih sel berikutnya ke bawah
ActiveCell.Offset (1, 0). Pilih
'menetapkan nilai-nilai sel aktif dan yang di bawahnya ke variabel
thisOne = ActiveCell.Value
thatOne = ActiveCell.Offset (1, 0)
Pergi ke
End Sub