Các câu hỏi về lọc dữ liệu, lọc với nhiều điều kiện

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Các bạn giúp mình 2 bài toán tìm kiếm và lọc các dữ liệu ,vui lòng mở file đính kèm

Một giải pháp cho những ai yêu thích Name

Về phần trích lọc danh sách duy nhất thì trên diển đàn có nói nhiều rồi, tôi chỉ muốn góp phần bài toán trích theo điều kiện (Trần thị)
Đặt 2 name là đủ:

listA = $A$3:$A$12
VT =IF(ISERR(SEARCH($E$1,listA)),"",ROW(INDIRECT("1:"&ROWS(listA))))

Và cuối cùng có công thức:

C3 =IF(ROW(1:1)>COUNT(VT),"",INDEX(listA,SMALL(VT,ROW(1:1)),1))

Kéo fill xuống!
Bạn hoangdanh282vn chú ý: Cẩn thận với hàm INDIRECT vì ko phải khi nào cũng cho kết quả đúng… Bạn hãy thử kéo vùng listA ra khỏi cột A thì sẽ biết liền.. Kết quả sai ngay lập tức
ANH TUẤN

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM
Khóa học SprinGO phù hợp

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM

Khóa học “Thiết kế Tổng phần thưởng (Total Reward) chuẩn khung SHRM” giúp bạn nắm vững toàn bộ hệ thống đãi ngộ theo chuẩn...

Xem khóa học
★★★★★ 5 ★ 1 👤 102 ▥ 0
Quảng cáo

Bạn nên đọc

102 Responses

  1. hands says:

    Các bác giúp em sửa lỗi VBA in lọc1539này với ạ

    Xóa dòng này đi1538

    code em dùng cho file này thì vẫn ok, nhưng sang file kia thì vẫn báo lỗi autofilter method of Range class failed

    ô ca là ô ca như nào?

    Lỗi là lỗi ở dòng nào?

    Bây giờ bệnh nhân vật vã sắp ngỏm tới nơi rồi vẫn chụp hình seo phi gửi cho bác sĩ thì khỏi bệnh sao được.

    em cũng không biết là lỗi ở dòng nào ạ, code này bác @Nhattanktnn viết cho nhưng em áp dụng sang file khác thì không được hu hu hu…
    em hiểu ra rồi, dữ liệu phải được sắp xếp theo thứ tự ngày tháng từ ngày 1/1 đến 31/12 thì code chạy ok luôn ạ.

  2. hands says:

    Bác nào chuyển giúp cái thủ tục sau thành hàm đươc không ạ

    Public Sub MyFilter()
        Dim lngStart As Long, lngEnd As Long
        lngStart = Range("E1").Value 'assume this is the start date
        lngEnd = Range("E2").Value 'assume this is the end date
        Range("C1:C13").AutoFilter field:=1, _
            Criteria1:=">=" & lngStart, _
            Operator:=xlAnd, _
            Criteria2:="<=" & lngEnd
    End Sub

    vi.extendoffice.com/documents/excel/910-excel-filter-between-two-dates.html

    Hàm Filter, công thức:
    =FILTER(A2:C13,(C2:C13>=E1)*(C2:C13<=E2))

    Hàm filter chỉ có trong excel 360 mà bác, em dùng excel 2019 ạ

    Nếu không có hàm Filter và đang xài 2019

    Function MyFilter(DataRng As Range, StartD As Date, EndD As Date, DCol As Long)
    Dim DataArr(), ResultArr(), RwsCount As Long, ColCount As Long
    DataArr = DataRng.Value
    RwsCount = UBound(DataArr, 1)
    ColCount = UBound(DataArr, 2)
    For i = 1 To RwsCount
        If DataArr(i, DCol) >= StartD And DataArr(i, DCol) <= EndD Then
            k = k + 1
            ReDim Preserve ResultArr(1 To ColCount, 1 To k)
            For j = 1 To ColCount
                ResultArr(j, k) = DataArr(i, j)
            Next
        End If
    Next
    MyFilter = Application.Transpose(ResultArr)
    End Function

    Dcol là thứ tự của cột chứa ngày.
    H2 =myfilter(A2:C16,F1,F2,3)

    3227

    Cảm ơn bác nhiều, nhưng nếu em dùng dấu Phẩy (,) để cách giữa các tham số
    Còn nếu em thay dấu Phẩy (,) bằng dấu Chấm phẩy (;) thì kết quả chỉ ra không đúng bác ah

    Chả lẽ 2019 không ra được kết quả mảng?
    Thử: tô khối H2:J12 gõ công thức rồi Ctrl shift Enter
    Xài: H2 =Index(MyFilter($A$2:$C$12,$F$1,$F$2,3),Row(B1),Column(B1)), fill ngang và fill dọc đến khi lỗi thì ngưng

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm