Đếm số phần tử (duy nhất) có trong Dropdown list khi AutoFilter (1 người xem)

Liên hệ QC

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

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,958
- Giã sử tôi có vùng dử liệu A1:D20 (với dòng 1 là tiêu đề)
- Tôi AutoFilter cho vùng này và khi tôi bấm vào Dropdown button tại cột A thì sẽ nhìn thấy 1 danh sách duy nhất trong đó
Vậy xin hỏi:
Bằng cách nào có thể đếm được số lượng phần tử duy nhất trong Dropdown list ấy nếu như:
- Không dùng công thức đếm duy nhất (SUMPRODUCT(1/COUNTIF..... )
- Không dùng Advanced Filter để lọc ra 1 cột phụ
 
Dùng công thức mảng

Cảm ơn bạn nhiều nha!
Dùng trong code thì chạy tốt. Còn Ctr - Shift - Enter thì nó chạy không đúng, nó chỉ ra số đầu tiên thôi.
Thân.

Trước hết bạn phải chọn 1 vài ô, sau đó nhập công thức, nhấn Ctrl-S-E
cách khác: dùng địa chỉ tuyệt đối khi chọn range, sau khi tạo được cthức cho 1 ô thì có thể kéo sang các ô khác %#^#$
-hvl-
 
Upvote 0
Ý bạn là vầy?
1226248537.jpg
Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Hì, tôi nhầm, chỉ dùng được 1 cách: chọn 1 số ô để tạo công thức mảng thì mới đúng!
Nói chung, hàm này dùng để khai thác mã thì tốt hơn dùng trực tiếp trong Excel!
-hvl-
 
Upvote 0
Ôi chao... tôi hiểu rồi... Cực kỳ tuyệt vời luôn!
Thì ra thuật toán nằm ở chổ Filter the list, in-place + Unique Records Only
Vậy thì cuối cùng đoạn code củ chuối dài lê thê kia có thể rút gọn lại thành:
PHP:
Option Explicit
Sub Loc()
 Dim Rng As Range
 [M4].CurrentRegion.ClearContents
 Set Rng = [B4].CurrentRegion
 Rng.Resize(, 1).AdvancedFilter 1, , , True
 Rng.SpecialCells(12).Copy Destination:=[M4]
 ActiveSheet.ShowAllData
End Sub
Vậy mà tôi đi giãi quyết lòng vòng.. NGU thật
Cãm ơn bạn rất nhiều

Em lại không hiểu ý câu hỏi.

Bác có thể dùng AF 1 lần duy nhất với Criteri là công thức được đấy : Tức là chỉ có cột B (Cột được chọn), là duy nhất còn các cột khác ăn theo cột B mà thôi.

PHP:
Sub LocOB()
    Range("J13").FormulaR1C1 = "=COUNTIF(R5C2:R[-8]C[-8],R[-8]C[-8])=1"
    Range("B4:H30").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "J12:J13"), CopyToRange:=Range("M17"), Unique:=True
    Range("J13").ClearContents
End Sub
Thân!
 

File đính kèm

Upvote 0
Vậy bác có cách nào lọc 1 mảng ảo không. Ví dụ mảng arr() có các giá trị như (1,2,3,2,3,4,7,8,1)
Và kết quả cho ra mng() có giá trị là (1,2,3,4,7,8).
Em đang cần.
Thân.

Tớ góp vui tí :

PHP:
Function OB(ParamArray Mang())
    On Error Resume Next
    Dim TempCell As Range, Temp As Range
    Dim TimThay As Boolean
    Dim i As Long, iR As Long, iC As Long
    Dim MangTemp(1 To 10000, 0)
    iR = 1
    For i = LBound(Mang) To UBound(Mang)
        Set Temp = Mang(i)
        For Each TempCell In Temp
            ' Kiem tra xem da co phan tu nay chua
            For iC = 1 To iR - 1
                If MangTemp(iC, 0) = TempCell.Value Then
                    TimThay = True
                    Exit For
                End If
            Next
            If TimThay = False Then
                MangTemp(iR, 0) = TempCell.Value
                iR = iR + 1
            Else
                TimThay = False
            End If
        Next
    Next
    OB = MangTemp()
End Function

Thân!
 

File đính kèm

Upvote 0
Sao cũng hàm mảng mà cái của bác thì dùng (C-S-E) được vậy? Cảm ơn bác. Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Chủ đề này rất hay, cần thiết cho những người mới tìm hiểu như em.
 
Upvote 0
Web KT

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

Back
Top Bottom