Nhờ giúp chuyển từ sub lọc dữ liệu thành function

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

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)

3340

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

Khoá học Trưởng phòng nhân sự
Khóa học SprinGO phù hợp

Khoá học Trưởng phòng nhân sự

Nguồn nhân lực là một trong Tứ trụ kinh doanh của doanh nghiệp, có tác động tới sự tồn tại và phát triển bền...

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

Bạn nên đọc

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm