NHG
Thành viên hoạt động
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
- Tham gia
- 15/1/07
- Bài viết
- 148
- Được thích
- 127
Hi các bạn
Mình tạo một hàm để lọc dữ liệu theo điều kiện với cú phát
Filter(Điều kiện; Cột điều kiện; Cột Kết quả; Số thứ tự)
![Filter.jpg Filter.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/194/194769-ff490c7b60618875bab2c1cda157c179.jpg?hash=_0kMe2BhiH)
ý tưởng là như này:
Gán cột điều kiện thành mảng có nhiều hàng và 1 cột; mở rộng mảng đó ra thành nhiều hàng và 2 cột
Duyệt điều kiện trong mảng; nếu trùng thì cột thứ 2 của mảng sẽ trả về số thứ tự của các ô thỏa mãn điều kiện
Hàm Filter sẽ so sánh số thứ tự trong đối số; nếu khớp số thứ tự trong mảng thì trả về kết quả
Nhưng do mình dùng nhiều vòng lặp quá nên công thức chạy rất ì ạch; dưới 5000 dòng dữ liệu thì ko sao, chứ nhiều hơn là ngồi chơi xơi nước ngay
Các bạn xem giúp m nhé
Function Filter_DieuKien_CotDieuKien_CotKetQua_STT(ByVal dk As String, ByVal vungdk As Range, ByVal mang As Range, ByVal STT As String)
Dim Dic As Object, arr(), sArray, i, j As Long, Item, Tmp
sArray = mang.Value
arr = vungdk.Value
ReDim Preserve sArray(1 To UBound(sArray), 1 To 2)
ReDim daura(1 To UBound(arr), 1 To 2)
For i = 1 To UBound(arr)
If UCase(arr(i, 1)) Like UCase(dk) Then
j = j + 1
daura(j, 1) = sArray(i, 1)
daura(j, 2) = j
End If
Next
For i = 1 To UBound(arr)
If STT = daura(i, 2) Then
kq = daura(i, 1)
End If
Next
Filter_DieuKien_CotDieuKien_CotKetQua_STT = kq
End Function
Mình tạo một hàm để lọc dữ liệu theo điều kiện với cú phát
Filter(Điều kiện; Cột điều kiện; Cột Kết quả; Số thứ tự)
![Filter.jpg Filter.jpg](https://www.giaiphapexcel.com/diendan/data/attachments/194/194769-ff490c7b60618875bab2c1cda157c179.jpg?hash=_0kMe2BhiH)
ý tưởng là như này:
Gán cột điều kiện thành mảng có nhiều hàng và 1 cột; mở rộng mảng đó ra thành nhiều hàng và 2 cột
Duyệt điều kiện trong mảng; nếu trùng thì cột thứ 2 của mảng sẽ trả về số thứ tự của các ô thỏa mãn điều kiện
Hàm Filter sẽ so sánh số thứ tự trong đối số; nếu khớp số thứ tự trong mảng thì trả về kết quả
Nhưng do mình dùng nhiều vòng lặp quá nên công thức chạy rất ì ạch; dưới 5000 dòng dữ liệu thì ko sao, chứ nhiều hơn là ngồi chơi xơi nước ngay
Các bạn xem giúp m nhé
Function Filter_DieuKien_CotDieuKien_CotKetQua_STT(ByVal dk As String, ByVal vungdk As Range, ByVal mang As Range, ByVal STT As String)
Dim Dic As Object, arr(), sArray, i, j As Long, Item, Tmp
sArray = mang.Value
arr = vungdk.Value
ReDim Preserve sArray(1 To UBound(sArray), 1 To 2)
ReDim daura(1 To UBound(arr), 1 To 2)
For i = 1 To UBound(arr)
If UCase(arr(i, 1)) Like UCase(dk) Then
j = j + 1
daura(j, 1) = sArray(i, 1)
daura(j, 2) = j
End If
Next
For i = 1 To UBound(arr)
If STT = daura(i, 2) Then
kq = daura(i, 1)
End If
Next
Filter_DieuKien_CotDieuKien_CotKetQua_STT = kq
End Function