Trang 1 của 2 12 CuốiCuối
Kết quả 1 đến 10 của 14

Chủ đề: Làm sao để đếm không trùng và có điều kiện mấy anh chị nhỉ?

  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi thanhhaixmsg
    Các Anh/chị cho em hỏi có cách nào đếm các giá trị không trùng và có điều kiện không ạ?

    Đếm các giá trị không trùng và lớn hơn 2, nếu kết quả = 2 giá trị thì đúng.
    Dùng hàm COUNTIF() nhé, bạn xem trong sách, hoặc tìm kiếm trên diễn đàn cũng có đó

    Nếu nhiều hơn 1 điều kiện thì dùng COUNTIFS()

  2. #2
    Trích dẫn Gửi bởi thanhhaixmsg
    Các Anh/chị cho em hỏi có cách nào đếm các giá trị không trùng và có điều kiện không ạ?

    Đếm các giá trị không trùng và lớn hơn 2, nếu kết quả = 2 giá trị thì đúng.
    Dùng hàm COUNTIF() nhé, bạn xem trong sách, hoặc tìm kiếm trên diễn đàn cũng có đó

    Nếu nhiều hơn 1 điều kiện thì dùng COUNTIFS()

    ah, thấy có thêm điều kiện không trùng: vậy thì tốt nhất up file lên, không ai làm thay cho bạn file giả lập đâu, muốn nhanh thì phải từ từ.

  3. #3
    1aido Guest
    Trích dẫn Gửi bởi thanhhaixmsg
    Các Anh/chị cho em hỏi có cách nào đếm các giá trị không trùng và có điều kiện không ạ?
    Ví dụ:
    1


    1


    2


    2


    2


    9


    10


    10

    Tôi tặng bạn hàm đếm không trùng(hàm tự tạo).
    Cách sử dụng:
    =Countk(Vùng cần đếm, Điều kiện đếm)
    ----------------------------------------
    Ví dụ như bài của bạn, cách dùng như sau:
    =countk(A1:A10,2)

    Tức đếm trong vùng A1:A10 các số lớn hơn 2.

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi chuot0106
    Tôi tặng bạn hàm đếm không trùng(hàm tự tạo).
    Cách sử dụng:
    =Countk(Vùng cần đếm, Điều kiện đếm)
    ----------------------------------------
    Ví dụ như bài của bạn, cách dùng như sau:
    =countk(A1:A10,2)

    Tức đếm trong vùng A1:A10 các số lớn hơn 2.
    Mã:
    Public Function countk(rng As Range, dk As String) As Long
    Dim arr(), i As Long, d As Long
    Dim Dic As Object
    Set Dic = CreateObject("Scripting.Dictionary")
    arr = rng
    For i = 1 To UBound(arr, 1)
     If Val(arr(i, 1)) > Val(dk) Then
        If Not Dic.Exists(arr(i, 1)) Then
            d = d + 1
            Dic.Add arr(i, 1), d
         End If
        End If
    Next i
       countk = d
    End Function
    ngắn như vậy được rồi

  5. #5
    dtphong_1989 Guest
    Trích dẫn Gửi bởi phihndhsp
    <div class="bbcode_container">
    <div class="bbcode_description">Code:
    </div>
    </div>
    Cảm ơn bạn đã rút gọn code dùm tôi![IMG]images/smilies/a20.gif[/IMG][IMG]images/smilies/a20.gif[/IMG][IMG]images/smilies/a20.gif[/IMG]

  6. #6
    kanhtran Guest
    Góp vui thêm công thức mảng
    {=SUM(IFERROR(1/COUNTIFS(A1:A10,">2",A1:A10,A1:A10),0))}

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Hau151978
    Góp vui thêm công thức mảng
    {=SUM(IFERROR(1/COUNTIFS(A1:A10,">2",A1:A10,A1:A10),0))}
    Phải công nhận anh quá siêu về công thức. Gặp những bài này thì nếu phải dùng công thức em chịu luôn.

  8. #8
    tddhcm148 Guest
    Trích dẫn Gửi bởi chuot0106
    Tôi tặng bạn hàm đếm không trùng(hàm tự tạo).
    Cách sử dụng:
    =Countk(Vùng cần đếm, Điều kiện đếm)
    ----------------------------------------
    Ví dụ như bài của bạn, cách dùng như sau:
    =countk(A1:A10,2)

    Tức đếm trong vùng A1:A10 các số lớn hơn 2.
    Mấy cái vụ đếm hay tính tổng CÓ ĐIỀU KIỆN này nó vô chừng lắm. Ai mà biết người ta sẽ dùng điều kiện thế nào mà bạn lại ghi trong code là If Val(kq(j, 1)) > Val(dk) Then
    Người khác thích đếm không trùng và <9 thì... lại sửa code à?
    Mặc khác, đã gọi là ĐIỀU KIỆN thì ta phải hình dung có thể có 1 đ/k hoặc nhiều đ/k
    Tóm lại: Không dễ ăn khi xây dựng mấy hàm kiểu này

  9. #9
    gamevui5k Guest
    Trích dẫn Gửi bởi ndu96081631
    Mấy cái vụ đếm hay tính tổng CÓ ĐIỀU KIỆN này nó vô chừng lắm. Ai mà biết người ta sẽ dùng điều kiện thế nào mà bạn lại ghi trong code là If Val(kq(j, 1)) > Val(dk) Then
    Người khác thích đếm không trùng và <9 thì... lại sửa code à?
    Mặc khác, đã gọi là ĐIỀU KIỆN thì ta phải hình dung có thể có 1 đ/k hoặc nhiều đ/k
    Tóm lại: Không dễ ăn khi xây dựng mấy hàm kiểu này
    Nói thật với thầy hàm này em viết với mục đích giải quyết công việc trước mắt của tác giả thôi. Nhiều khi cũng muốn viết code thật tổng quát áp dụng được cho nhiều bài khác nhau nhưng năng lực có hạn nên đành bó tay!
    Thêm vào code chút để có thêm lựa chọn kiểu so sánh khác.

    Mã:
    Public Function countk(rng As Range, kieu As String, dk As String) As Long
    Dim arr(), i As Long, d As Long
    Dim Dic As Object
    Set Dic = CreateObject("Scripting.Dictionary")
    arr = rng
    Select Case kieu
    
    
    Case Is = ">"
    For i = 1 To UBound(arr, 1)
     If Val(arr(i, 1)) > Val(dk) Then
        If Not Dic.Exists(arr(i, 1)) Then
            d = d + 1
            Dic.Add arr(i, 1), d
         End If
        End If
    Next i
       countk = d
    Case Is = "<"
    For i = 1 To UBound(arr, 1)
     If Val(arr(i, 1)) < Val(dk) Then
        If Not Dic.Exists(arr(i, 1)) Then
            d = d + 1
            Dic.Add arr(i, 1), d
         End If
        End If
    Next i
       countk = d
    Case Is = ">="
    For i = 1 To UBound(arr, 1)
     If Val(arr(i, 1)) >= Val(dk) Then
        If Not Dic.Exists(arr(i, 1)) Then
            d = d + 1
            Dic.Add arr(i, 1), d
         End If
        End If
    Next i
       countk = d
    Case Is = "<="
    For i = 1 To UBound(arr, 1)
     If Val(arr(i, 1)) <= Val(dk) Then
        If Not Dic.Exists(arr(i, 1)) Then
            d = d + 1
            Dic.Add arr(i, 1), d
         End If
        End If
    Next i
       countk = d
    End Select
    End Function
    ----------------------------------------
    P/S chủ topic: Cú pháp dùng như sau:
    =countk(Vùng, Kiểu so sánh,giá trị so sánh)
    ----------------------------------------------
    Ví dụ:
    =countk(A1:A10,"<=",2)

  10. #10
    dungcuthethaohc Guest
    Nếu xây dựng hàm COUNTK kiểu như COUNTIF thì có thể dùng cú pháp COUNTK(reference,criteria). Ở đây criteria tương tự trong COUNTIF ví dụ: 2, ">3", "<4"...
    Trong hàm lấy ký tự đầu tiên của criteria, nếu là số thì thêm dấu = vào. Dùng Evaluate để so sánh từng phần tử của reference với criteria.

Trang 1 của 2 12 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •