Đếm dữ liệu với nhiều điều kiện có trùng lặp (1 người xem)

Người dùng đang xem chủ đề này

luckily176

Thành viên mới
Tham gia
26/2/10
Bài viết
20
Được thích
1
Em có dữ liệu như file đính kèm. Có 2 cột: mặt hàng, và tên khách hàng.
Có hàng trăm mặt hàng, mà mỗi mặt hàng ứng với nhiều khách hàng, các khách hàng này có lặp lại trong 1 mặt hàng
Vậy sử dụng công thức nào để đếm được mỗi mặt hàng có bao nhiêu khách hàng đang sử dụng mà k trùng lặp khách hàng? (Mỗi đối tượng khách hàng thì đang sử dụng bao nhiêu mặt hàng? cái này em sẽ làm tương tự nếu tính được câu trên)
Cái khó ở chỗ không đc dùng công cụ lọc khách hàng trùng. Phải dữ nguyên các dữ liệu nên e muốn dùng công thức để tính toán, để khi dữ liệu đầu vào thay đổi, thì kết quả công thức sẽ tự thay đổi theo
Mọi người giúp em với ah
 

File đính kèm

Đếm DL

Bạn xem file, nếu có thể bạn gửi file gốc lên nhé!
 

File đính kèm

Em có dữ liệu như file đính kèm. Có 2 cột: mặt hàng, và tên khách hàng.
Có hàng trăm mặt hàng, mà mỗi mặt hàng ứng với nhiều khách hàng, các khách hàng này có lặp lại trong 1 mặt hàng
Vậy sử dụng công thức nào để đếm được mỗi mặt hàng có bao nhiêu khách hàng đang sử dụng mà k trùng lặp khách hàng? (Mỗi đối tượng khách hàng thì đang sử dụng bao nhiêu mặt hàng? cái này em sẽ làm tương tự nếu tính được câu trên)
Cái khó ở chỗ không đc dùng công cụ lọc khách hàng trùng. Phải dữ nguyên các dữ liệu nên e muốn dùng công thức để tính toán, để khi dữ liệu đầu vào thay đổi, thì kết quả công thức sẽ tự thay đổi theo
Mọi người giúp em với ah
Cách đơn giản nhất nhưng cũng hiệu quả không kém, là bạn dùng Pivot Table với dòng là khách hàng và cột là Mã Sản phẩm hay ngược lại, và giá trị là gì cũng được.
Sau khi dùng Pivot xong bạn có thể dùng Count để đếm thì kết quả ra mỹ mãn và rất nhanh, chưa tới 1 phút làm

Picture1.jpg
 
Lần chỉnh sửa cuối:
Cách đơn giản nhất nhưng cũng hiệu quả không kém, là bạn dùng Pivot Table với dòng là khách hàng và cột là Mã Sản phẩm hay ngược lại, và giá trị là gì cũng được.
Sau khi dùng Pivot xong bạn có thể dùng Count để đếm thì kết quả ra mỹ mãn và rất nhanh, chưa tới 1 phút làm

View attachment 81296

Em cũng đang xài Pivot để phân tích file dữ liệu gốc này. Nhưng lại k nghỉ ra việc dùng count để đếm lọc lại lần nữa.
Gợi ý của a quá đơn giản mà rất hay. Nếu dữ liệu mình thay đổi thì chỉ cần 1 cái F5.
CẢM ƠN ANH
 
Cách đơn giản nhất nhưng cũng hiệu quả không kém, là bạn dùng Pivot Table với dòng là khách hàng và cột là Mã Sản phẩm hay ngược lại, và giá trị là gì cũng được.
Sau khi dùng Pivot xong bạn có thể dùng Count để đếm thì kết quả ra mỹ mãn và rất nhanh, chưa tới 1 phút làm

View attachment 81296
hay quá. đúng cái em đang cần tìm. em cám ơn bác nhiều ạ
 
Lâu không ôn lại Dictionary, em viết vẫn còn kém ở bẫy lỗi, nhờ mọi người góp ý giúp em hoàn thiện hơn ah:

PHP:
Sub Tke()
    Dim Dic1, Dic2, DL(), KQ(), Tmp, i As Long, j As Long, kk As Long
    DL = Range("A2:B1000").Value
    ReDim KQ(1 To UBound(DL, 1), 1 To 2)
    Set Dic1 = CreateObject("Scripting.Dictionary")
    Set Dic2 = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(DL, 1) Step 1
        If DL(i, 1) <> "" And DL(i, 2) <> "" Then
            Tmp = DL(i, 1) & DL(i, 2)
            If Not Dic1.Exists(DL(i, 1)) Then
                j = j + 1
                Dic1.Add DL(i, 1), j
                KQ(j, 1) = DL(i, 1)
                kk = 0
            End If
            If Not Dic2.Exists(Tmp) Then
                Dic2.Add Tmp, ""
                kk = kk + 1
                KQ(j, 2) = kk
            End If
        End If
    Next i
    If j Then [D15].Resize(j, 2).Value = KQ
End Sub
 

File đính kèm

Bài này có cách nào dùng công thức mà không cần cột phụ không hả các bác?
 
Xin thày Ndu có thể giải thích dùm em trình tự thuật toán theo công thức (không cần phải đi chi tiết vào từng hàm, em cần hiểu được ý tưởng bước đi thôi ah)?

PHP:
=COUNT(1/FREQUENCY(IF(($A$2:$A$100=D15),IF($B$2:$B$100<>"",MATCH($B$2:$B$100,$B$2:$B$100,0))),(IF(($A$2:$A$100=D15),IF($B$2:$B$100<>"",MATCH($B$2:$B$100,$B$2:$B$100,0))))))

Ngoài cách này ra liệu có cách nào nữa không ah, nếu có xin chỉ giúp để em học tập.
Em xin cảm ơn
 
Xin thày Ndu có thể giải thích dùm em trình tự thuật toán theo công thức (không cần phải đi chi tiết vào từng hàm, em cần hiểu được ý tưởng bước đi thôi ah)?

PHP:
=COUNT(1/FREQUENCY(IF(($A$2:$A$100=D15),IF($B$2:$B$100<>"",MATCH($B$2:$B$100,$B$2:$B$100,0))),(IF(($A$2:$A$100=D15),IF($B$2:$B$100<>"",MATCH($B$2:$B$100,$B$2:$B$100,0))))))

Ngoài cách này ra liệu có cách nào nữa không ah, nếu có xin chỉ giúp để em học tập.
Em xin cảm ơn

Giải thích cái này khá trừu tượng, nói chung bạn chỉ cần nhớ cú pháp áp dụng cho việc đếm duy nhất có điều kiện là thế này:
=COUNT(1/FREQUENCY(Điều kiện, Điều kiện))
Và cái Điều kiện ở trên phải làm sao để nó là 1 mảng mà các phần tử của mảng này phải là Number
Với công thức ở trên thì Điều kiện chính là đoạn này:
IF(($A$2:$A$100=D15),IF($B$2:$B$100<>"",MATCH($B$2:$B$100,$B$2:$B$100,0)))
Tùy bài mà Điều kiện sẽ khác nhau nhưng cú pháp chung vẫn là thế
 
Lần chỉnh sửa cuối:
Giải thích công thức =COUNT(1/{2;0;1;2;0;0})=3

Sau khi kiểm tra bằng F9, em thấy kết quả cuối cùng là

PHP:
=COUNT(1/{2;0;1;2;0;0})

Em thắc mắc tại sao nó lại là 3 ah, nhờ thày giảng giải dùm em với ah
-----------
Em hiểu rồi ah, cảm ơn thày rất nhiều
 
Lần chỉnh sửa cuối:
Cách đơn giản nhất nhưng cũng hiệu quả không kém, là bạn dùng Pivot Table với dòng là khách hàng và cột là Mã Sản phẩm hay ngược lại, và giá trị là gì cũng được.
Sau khi dùng Pivot xong bạn có thể dùng Count để đếm thì kết quả ra mỹ mãn và rất nhanh, chưa tới 1 phút làm

View attachment 81296

Bài này có cách gì mà không cần dùng đến hàm Count (mà chỉ cần Pivot 1 bước là xong) không ah?
 

File đính kèm

Sau khi dùng Pivot xong bạn có thể dùng Count để đếm thì kết quả ra mỹ mãn và rất nhanh, chưa tới 1 phút làm
Bác cho tôi hỏi thêm 1 chút, tôi đang dùng pivot để đếm tại cột B, trong cột có 2 giá trị 0 và 1, tôi chỉ muốn đếm giá trị 1 có được không?
VD:
Tại sheet data
- Khách hàng A lấy sản phẩm a
- Khách hàng B lấy sản phẩm b
sau khi đặt công thức cột BJ đếm lần xuất hiện có giá trị 0 và 1.
Tại pivot SDN. Diễn biến tôi muốn xem lần xuất hiện theo tháng => xảy ra 2 trường hợp: 1. nếu count thì bị đếm cả giá trị 0 => sai mục đích; 2. nếu sum => đúng mục đích nhưng không loại bỏ được giá trị 0 => khó quan sát
 
Lần chỉnh sửa cuối:
Nếu dùng sum đúng mục đích thì cứ dùng. còn thấy số 0 hay không thì định dạng lại là ok
nếu không dùng hàm sum thì dùng hàm countif cũng ok
 
Nếu dùng sum đúng mục đích thì cứ dùng. còn thấy số 0 hay không thì định dạng lại là ok
nếu không dùng hàm sum thì dùng hàm countif cũng ok
Đúng vậy, hiện tại tôi vẫn đang dùng hàm Sum để đạt mục đích của mình.
Tuy nhiên, với số 0 thì tôi đang phải bới thóc tìm gạo (tìm 10/trên vài trăm hàng dữ liệu) nên cũng khá khó khăn. Nếu bác có công thức sumif trong pivotable, bác có thể chỉ dẫn kỹ hơn được không vì tôi chỉ tìm thấy hàm Count (không tìm thấy Countif) trong Value Field Setting.
Nếu có thể bác giúp tôi với nhé. Thanks
 

Bài viết mới nhất

Back
Top Bottom