Tôi làm điều này mọi lúc với vba. Tôi khá chắc chắn rằng tôi đã sử dụng cùng một phương pháp kể từ office 95 ', với những thay đổi nhỏ được thực hiện cho vị trí cột. Nó có thể được thực hiện với ít dòng hơn nếu bạn không xác định các biến. Nó có thể được thực hiện nhanh hơn nếu bạn có nhiều dòng để đi qua hoặc nhiều thứ bạn cần để xác định nhóm của mình.
Tôi đã gặp phải tình huống trong đó một "nhóm" dựa trên 2-5 ô. Ví dụ này chỉ nhìn vào một cột, nhưng nó có thể được mở rộng dễ dàng nếu bất cứ ai dành thời gian để chơi với nó.
Điều này giả sử 3 cột và bạn phải sắp xếp theo cột group_values. Trước khi bạn chạy macro, chọn ô đầu tiên bạn muốn so sánh trong cột group_values.
'group_values, some_number, blank_columnToHoldSubtotals
'(công cụ ở đây)
'cookie 1 trống
'cookie 3 trống
'Bánh 4 trống
'mũ 0 trống
'mũ 3 trống
'...
'dừng lại
Tổng phụ ()
'xác định hai chuỗi và một tổng số phụ
Dim thisOne, thatOne As String
Dim subCount As Double
'gieo các giá trị
thisOne = ActiveCell. Giá trị
thatOne = ActiveCell. Offerset (1, 0)
số phụ = 0
'thiết lập một vòng lặp sẽ đi cho đến khi nó đạt đến giá trị dừng
Trong khi (ActiveCell.Value <> "stop")
'So sánh một giá trị ô với ô bên dưới nó.
Nếu (thisOne = thatOne) Sau đó
'nếu các ô bằng nhau, số dòng được thêm vào tổng số phụ
subCount = subCount + ActiveCell. Offerset (0, 1). Giá trị
Khác
'nếu các ô không bằng nhau, tổng số phụ được ghi và thiết lập lại tổng phụ.
ActiveCell. Offerset (0, 2) .Value = ActiveCell. Offerset (0, 1) .Value + subCount
số phụ = 0
Kết thúc nếu
'chọn ô tiếp theo xuống
ActiveCell. Offerset (1, 0) .Chọn
'gán các giá trị của ô hiện hoạt và giá trị bên dưới nó cho các biến
thisOne = ActiveCell. Giá trị
thatOne = ActiveCell. Offerset (1, 0)
xoay về
Kết thúc phụ