Bạn nên có 1 sheet chứa vài kết quả để mọi thành viên còn hiểu để giúp.e cần tính tổng tại cột B với mã kh xuất hiện duy nhất 1 lần tại cột A nhờ các b đặt hàm giúp ạ.
Ps: do dữ liệu dài vài trăm nghìn dòng nên e ko muốn tạo cột phụ hoặc filter cộng tay .
=SUMPRODUCT((COUNTIFS(A2:A20,A2:A20,A2:A20,">0")=1)*B2:B20)e cần tính tổng tại cột B với mã kh xuất hiện duy nhất 1 lần tại cột A nhờ các b đặt hàm giúp ạ.
Ps: do dữ liệu dài vài trăm nghìn dòng nên e ko muốn tạo cột phụ hoặc filter cộng tay .
=SUMPRODUCT((COUNTIFS(A2:A20,A2:A20,A2:A20,">0")=1)*B2:B20)
=SUMPRODUCT((COUNTIFS(A2:A20,A2:A20,A2:A20,">0")=1)*(B2:B20>200000)*B2:B20)e có để kết quả là 6237000 mà. ý em muốn là cột A chỉ lấy các giá trị xuất hiện 1 lần là ô màu trắng ( có màu là xuất hiện >1 lần) tổng thì lấy ở cột B
Bài đã được tự động gộp:
cảm ơn b. b giải thích hàm giúp em để e sử dụng những lần sau được ko ạ.
Bài đã được tự động gộp:
cảm ơn b. e có 1 ps là cột A vẫn điều kiện xuất hiện 1 lần và côt b chỉ tính tổng với giá trị > 200000 b giúp e với
b ơi e dùng tham chiếu đến khoảng 250.000 dòng thì ko thể chạy được hàm có cách nào xử lý được không ạ?=SUMPRODUCT((COUNTIFS(A2:A20,A2:A20,A2:A20,">0")=1)*(B2:B20>200000)*B2:B20)
Sao cứ xón xón vậy bạn? Nói hết luôn một lượt từ bài đầu tiên được không?phát sinh thêm 1 chút nữa
hết rồi b ạ . tại ô sếp nhiều yc ko nói hết. b giúp e vớiSao cứ xón xón vậy bạn? Nói hết luôn một lượt từ bài đầu tiên được không?
Bạn quên cái vụ xón xón e b ko yc rồi sao?Sao cứ xón xón vậy bạn? Nói hết luôn một lượt từ bài đầu tiên được không?
Sao cứ xón xón vậy bạn?
...
Bạn quên cái vụ xón xón ...
Với 250.000 dòng nên dùng code VBAb ơi e dùng tham chiếu đến khoảng 250.000 dòng thì ko thể chạy được hàm có cách nào xử lý được không ạ?
và phát sinh thêm 1 chút nữa là e cần thêm: điều kiện cột A xuất hiện 1 lần count cột B với giá trị > 0 b đặt hàm giúp e với
hàm em còn chưa viết được VBA thì quá khó. b giúp em với. cảm ơn b nhiềuVới 250.000 dòng nên dùng code VBA
VBA đòi hỏi cấu trúc dữ liệu chính xác, cắt bớt dòng dữ liệu gởi file và yêu cầu chính xác lênhàm em còn chưa viết được VBA thì quá khó. b giúp em với. cảm ơn b nhiều
em gửi dữ liệu chuẩn có rõ điều kiện cần rồi b giúp e với. e cảm ơn b nhiềuVBA đòi hỏi cấu trúc dữ liệu chính xác, cắt bớt dòng dữ liệu gởi file và yêu cầu chính xác lên
em gửi dữ liệu chuẩn có rõ điều kiện cần rồi b giúp e với. e cảm ơn b nhiều
Function CountIfOne(ByVal MaRng As Range, ByVal SoTienRng As Range, ByVal DieuKien As Double)
Dim Ma(), SoTien(), i&, sRow&, ikey$, k&
sRow = MaRng.Rows.Count
If sRow <> SoTienRng.Rows.Count Then CountIfOne = "#Ref": Exit Function
If sRow = 1 Then
ReDim Ma(1 To 1, 1 To 1): Ma(1, 1) = MaRng(1, 1)
ReDim SoTien(1 To 1, 1 To 1): SoTien(1, 1) = SoTienRng(1, 1)
Else
Ma = MaRng: SoTien = SoTienRng
End If
Set MaRng = Nothing: Set SoTienRng = Nothing
With CreateObject("scripting.dictionary")
For i = LBound(Ma) To sRow
ikey = Ma(i, 1): ikey2 = "#" & ikey
If .exists(ikey) = False Then
If .exists(ikey2) = False Then
If SoTien(i, 1) >= DieuKien Then
k = k + 1
.Add ikey, 1
Else
.Add ikey, 0
End If
End If
Else
k = k - .Item(ikey)
.Add ikey2, ""
.Remove (ikey)
End If
Next i
End With
CountIfOne = k
End Function
Function SumIfOne(ByVal MaRng As Range, ByVal SoTienRng As Range, ByVal DieuKien As Double)
Dim Ma(), SoTien(), i&, sRow&, ikey$, Tong As Double
sRow = MaRng.Rows.Count
If sRow <> SoTienRng.Rows.Count Then SumIfOne = "#Ref": Exit Function
If sRow = 1 Then
ReDim Ma(1 To 1, 1 To 1): Ma(1, 1) = MaRng(1, 1)
ReDim SoTien(1 To 1, 1 To 1): SoTien(1, 1) = SoTienRng(1, 1)
Else
Ma = MaRng: SoTien = SoTienRng
End If
Set MaRng = Nothing: Set SoTienRng = Nothing
With CreateObject("scripting.dictionary")
For i = LBound(Ma) To sRow
ikey = Ma(i, 1): ikey2 = "#" & ikey
If .exists(ikey) = False Then
If .exists(ikey2) = False Then
If SoTien(i, 1) >= DieuKien Then
Tong = Tong + SoTien(i, 1)
.Add ikey, SoTien(i, 1)
Else
.Add ikey, 0
End If
End If
Else
Tong = Tong - .Item(ikey)
.Add ikey2, ""
.Remove (ikey)
End If
Next i
End With
SumIfOne = Tong
End Function