Tính tổng mã kh xuất hiện 1 lần

Liên hệ QC

newex

Thành viên chính thức
Tham gia
29/7/15
Bài viết
88
Được thích
8
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 .
 

File đính kèm

  • Tính tổng KH 1 lần .xlsx
    10.2 KB · Đọc: 22
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 .
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.
Tôi xem File xong chẳng hiểu bạn muốn thế nào luôn.
 
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ó để 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:

=SUMPRODUCT((COUNTIFS(A2:A20,A2:A20,A2:A20,">0")=1)*B2:B20)

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
 
Lần chỉnh sửa cuối:
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
=SUMPRODUCT((COUNTIFS(A2:A20,A2:A20,A2:A20,">0")=1)*(B2:B20>200000)*B2:B20)
 
=SUMPRODUCT((COUNTIFS(A2:A20,A2:A20,A2:A20,">0")=1)*(B2:B20>200000)*B2:B20)
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 ạ?
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
 
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 ạ?
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
Với 250.000 dòng nên dùng code VBA
 

File đính kèm

  • du lieu chuan.xlsx
    8.9 KB · Đọc: 2
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
Mã:
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
Xem cách dùng trong file
 

File đính kèm

  • du lieu chuan.xlsm
    18.6 KB · Đọc: 14
Web KT
Back
Top Bottom