lọc và tính tổng dữ liệu trùng

Liên hệ QC

resta

Thành viên mới
Tham gia
9/3/13
Bài viết
6
Được thích
0
mình mới học excel nên không thạo mong mọi người giúp đỡ
mình đang cần giải quyết bài toán lọc và sắp xếp theo kiểu giống file đính kèm
mình xin cảm ơn!
 

File đính kèm

  • tinh tong du lieu trung.xlsx
    8.3 KB · Đọc: 20
mình mới học excel nên không thạo mong mọi người giúp đỡ
mình đang cần giải quyết bài toán lọc và sắp xếp theo kiểu giống file đính kèm
mình xin cảm ơn!
Bạn nên đọc lại nội quy của diễn đàn! tiêu đề bị phạm quy!
 
vâng mình xin rút kinh nghiệm
 
mình mới học excel nên không thạo mong mọi người giúp đỡ
mình đang cần giải quyết bài toán lọc và sắp xếp theo kiểu giống file đính kèm
mình xin cảm ơn!
Bài này dùng công thức hơi khó, bạn dùng code này xem:
PHP:
Sub a()
Dim arr, i As Long, j As Long, n As Long, result
arr = Range("A1:d" & [d1].End(xlDown).Row)
With CreateObject("Scripting.dictionary")
    For i = 2 To UBound(arr)
        For j = 2 To UBound(arr, 2)
            If Not .exists(arr(i, 1) & "(" & arr(1, j) & ")") Then
                .Add arr(i, 1) & "(" & arr(1, j) & ")", Val(arr(i, j))
            Else
                .Item(arr(i, 1) & "(" & arr(1, j) & ")") = .Item(arr(i, 1) & "(" & arr(1, j) & ")") + arr(i, j)
            End If
        Next j
    Next i
    ReDim result(1 To .Count, 1 To 2)
    For i = 0 To .Count - 1
        If .items()(i) Then
            n = n + 1: result(n, 1) = .keys()(i): result(n, 2) = .items()(i)
        End If
    Next i
    [a10].Resize(n, 2) = result
End With
End Sub
 
Bài này dùng công thức hơi khó, bạn dùng code này xem:
PHP:
Sub a()
Dim arr, i As Long, j As Long, n As Long, result
arr = Range("A1:d" & [d1].End(xlDown).Row)
With CreateObject("Scripting.dictionary")
    For i = 2 To UBound(arr)
        For j = 2 To UBound(arr, 2)
            If Not .exists(arr(i, 1) & "(" & arr(1, j) & ")") Then
                .Add arr(i, 1) & "(" & arr(1, j) & ")", Val(arr(i, j))
            Else
                .Item(arr(i, 1) & "(" & arr(1, j) & ")") = .Item(arr(i, 1) & "(" & arr(1, j) & ")") + arr(i, j)
            End If
        Next j
    Next i
    ReDim result(1 To .Count, 1 To 2)
    For i = 0 To .Count - 1
        If .items()(i) Then
            n = n + 1: result(n, 1) = .keys()(i): result(n, 2) = .items()(i)
        End If
    Next i
    [a10].Resize(n, 2) = result
End With
End Sub

rất ok bạn ak. đúng thứ mình cần. cảm ơn bạn!
 
bạn excel_lv1.5 ơi khi mình đưa vào bài của mình thì không được như ý
mình thêm vài dữ liệu thì nó tính sai
mong bạn giúp mình
 

File đính kèm

  • tinh tong du lieu trung.xlsm
    18.9 KB · Đọc: 10
Nếu dùng End(xlDown) thì nên có bước kiểm tra là có dữ liệu hay không...
 

File đính kèm

  • tinh tong du lieu trung.xlsx
    17 KB · Đọc: 18
Lại một thanh niên thích nhờ người ta viết code, rồi về nhà hi hoe sửa code, nhưng cuối cùng có sửa được đâu.

Trong việc xác định hàng cuối, dù đúng dù sai thì đều nhất thiết phải kiểm tra xem bảng dữ liệu có thực sự có dữ liệu không, không chỉ là xlup, hay xlDown. Dễ dãi trong code sẽ có ngày không có cám mà anh nhá.
 
Web KT
Back
Top Bottom