Nhờ mọi người giúp Công thức đếm duy nhất có điều kiện

Liên hệ QC

Da Vinci

Thành viên mới
Tham gia
27/4/18
Bài viết
4
Được thích
2
Nhờ mọi người hỗ trợ mình yêu cầu nêu trong file đính kèm nhé. Mình muốn là dùng 1 công thức ra được kết quả, không muốn dùng thêm cột phụ hoặc qua các bước trung gian. Cảm ơn mọi người.
 

File đính kèm

Nhờ mọi người hỗ trợ mình yêu cầu nêu trong file đính kèm nhé. Mình muốn là dùng 1 công thức ra được kết quả, không muốn dùng thêm cột phụ hoặc qua các bước trung gian. Cảm ơn mọi người.
Hàm sau:

DEM KHACH HANG:=CALCULATE(DISTINCTCOUNT(Table1[Khách hàng]),FILTER(SUMMARIZE('Table1','Table1'[Khách hàng]),CALCULATE(COUNT(Table1[ngày mua]))>=2))
1630197083707.png
 
Bạn tranhungdao12a3 có thể thực hiện trực tiếp trên file mình gửi được không. Thanks bạn.
 
Nhờ mọi người hỗ trợ mình yêu cầu nêu trong file đính kèm nhé. Mình muốn là dùng 1 công thức ra được kết quả, không muốn dùng thêm cột phụ hoặc qua các bước trung gian. Cảm ơn mọi người.
Đề bài bạn đưa ra đang bị lệch mất 1 cột.
Bạn tham khảo công thức tôi làm theo file đính kèm (chưa nghĩ ra được cách bỏ trung gian).
Chắc dùng VBA mới làm được.
 

File đính kèm

Nhờ mọi người hỗ trợ mình yêu cầu nêu trong file đính kèm nhé. Mình muốn là dùng 1 công thức ra được kết quả, không muốn dùng thêm cột phụ hoặc qua các bước trung gian. Cảm ơn mọi người.
nếu bạn muốn dùng VBA thì thử xem. code cùi bắp thôi nhưng nếu dữ liệu nhiều dòng và phức tạp thì bảo đảm vẫn chạy đúng.
 

File đính kèm

File đính kèm

Nhờ mọi người hỗ trợ mình yêu cầu nêu trong file đính kèm nhé. Mình muốn là dùng 1 công thức ra được kết quả, không muốn dùng thêm cột phụ hoặc qua các bước trung gian. Cảm ơn mọi người.
Thử:
Mã:
E3=COUNT(1/(MMULT(N(IF(MATCH(B3:B9&C3:C9,B3:B9&C3:C9,)=ROW(1:7),B3:B9)=TRANSPOSE(IF(MATCH(B3:B9&C3:C9,B3:B9&C3:C9,)=ROW(1:7),B3:B9))),ROW(1:7)^0)*(MATCH(B3:B9,B3:B9,)=ROW(1:7))>=E2))
Ctrl+Shift+Enter.

Thân
 

File đính kèm

Đang thử dùng hàm FREQUENCY. .

.
 
Lần chỉnh sửa cuối:
Đề bài bạn đưa ra đang bị lệch mất 1 cột.
Bạn tham khảo công thức tôi làm theo file đính kèm (chưa nghĩ ra được cách bỏ trung gian).
Chắc dùng VBA mới làm được.
Thanks bạn, cách dùng qua cột phụ thì mình đã làm được trước đó rồi. Mình ưu tiên dùng 1 công thức để trả về kết quả trong 1 ô thôi.
Bài đã được tự động gộp:

nếu bạn muốn dùng VBA thì thử xem. code cùi bắp thôi nhưng nếu dữ liệu nhiều dòng và phức tạp thì bảo đảm vẫn chạy đúng.
Thanks bạn.
Bài đã được tự động gộp:

Thử:
Mã:
E3=COUNT(1/(MMULT(N(IF(MATCH(B3:B9&C3:C9,B3:B9&C3:C9,)=ROW(1:7),B3:B9)=TRANSPOSE(IF(MATCH(B3:B9&C3:C9,B3:B9&C3:C9,)=ROW(1:7),B3:B9))),ROW(1:7)^0)*(MATCH(B3:B9,B3:B9,)=ROW(1:7))>=E2))
Ctrl+Shift+Enter.

Thân
Thanks bạn Hiệp. Công thức này rất hay. Để mình chạy trên tập data lớn và kiểm tra lại xem kết quả ok không. Bạn giải thích giúp mình công thức này được không, và ý tưởng như thế nào để nghĩ ra công thức này nhỉ.
Bài đã được tự động gộp:

Đang thử dùng hàm FREQUENCY. .

.
Mình có nghĩ đến hàm này, nhưng chưa nghĩ được công thức như thế nào
 
Lần chỉnh sửa cuối:
Nếu bạn biết dùng Dax dùng công thức tôi gửi trên, nạp 10tr dòng cũng ko vấn đề gì nhé!
 
Mình có nghĩ đến hàm này, nhưng chưa nghĩ được công thức như thế nào

Công thức tính sau, xài đỡ UDF:

PHP:
Public Function DemKhachHang(ByVal rng As Range, ByVal num As Long) As Long
Application.Volatile
Dim arrData, i&, total&, temp$
Dim dic As Object
   
Set dic = CreateObject("Scripting.Dictionary")
arrData = rng.Value
For i = 1 To UBound(arrData, 1)
    temp = arrData(i, 1) & "|" & arrData(i, 2)
     If Not dic.Exists(temp) Then
        dic.Item(temp) = 1
        dic.Item(arrData(i, 1)) = dic.Item(arrData(i, 1)) + 1
        If dic.Item(arrData(i, 1)) = num Then total = total + 1
     End If
Next i
DemKhachHang = total
End Function
Cách sử dụng:

=DemKhachHang(B3:C9,2)

Hoặc:

=DemKhachHang(B3:C9,E2)
 
Web KT

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

Back
Top Bottom