Nhờ chỉ giúp em lọc dữ liệu (1 người xem)

  • Thread starter Thread starter hitlecp
  • Ngày gửi Ngày gửi
Liên hệ QC

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

Sự hỏng có chi bất ngờ
Từ Xương tới Mỡ, bây giờ đến Da
(Tiên trách kỷ, hậu trách nhân vậy thầy ạ!)
........................
 
hehe em sẽ rút kinh nghiệm thầy ah, không biết thầy có thể hỗ trợ em giúp em phần lọc dữ liệu đó không ah, em ko rành về VBA lắm mong chỉ dùm ah
Bài đã được tự động gộp:

Viết Hoa những từ "quy định" là quy định từ cấp I.
Tên người ta mà viết thế là không đúng "quy định". Chỉ những người không biết quy định mới viết thế.
-----------------------------------
Cái học ... đã hỏng rồi.
(Xin lỗi đã liên lụy "Trần Tế Xương")
http://gocthoduong.blogspot.com/2016/04/kinh-hoa-cai-hoc-nha-nho-cua-tran-te.html
-----------------------------

Bạn ghi chú lại dòng lệnh này, xóa giá trị của mảng thì còn đâu mà xài.
------------------------------------
Vie-Cam: 3-0
tại em rõ nhanh quá em quên, em sẽ rút kinh nghiệm
 
Lần chỉnh sửa cuối:
Bạn cứ làm thêm điều kiện nữa vào trong code là được mà.Code của bác Ba Tê là.Đầu tiên xác định điều kiện rồi so sánh điều kiện.Rồi lấy giá trị cho mảng mới.là được bạn xem.
Mã:
Public Sub Gpe_Loc()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long, Rws As Long, Col As Long, fDate As Long, eDate As Long, SName As String
SName = Range("C2").Value 'lay ten sheets can kiem tra
fDate = Range("C3").Value ' chon ngay nho nhat can kiem tra
eDate = Range("C4").Value 'chon ngày lon nhat can kiem tra
Col = 57
With Sheets(SName)
    R = .Range("B60000").End(xlUp).Row 'chon dong cuoi cung o cot B
    If R > 8 Then ' kiem tra dieu kien de lay mang
        sArr = .Range("A9:A" & R).Resize(, Col).Value  ' nap gia tri vao mang
        Rws = UBound(sArr)   'xac dinh dong lon nhat trong mang
        ReDim dArr(1 To R, 1 To Col)  ' khai bao mang moi
        For I = 1 To Rws              'vong lap de duyet qua cac gia tri trong mang
            If sArr(I, 2) >= fDate Then   'so sanh gia tri cot thu 2 cua mang voi thoi gian nho nhat
                If sArr(I, 2) <= eDate Then 'so sanh gia tri cot thu 2 cua mang voi thoi gian lon nhat
                    K = K + 1                'neu gia tri mang thoa man 2 dieu kien thi K se duoc tang them 1 gia tri
                    dArr(K, 1) = K            'gan vi tri thu nhat cua mang moi bang K (day la so thu tu cua mang)
                    For J = 2 To Col           'vong lap de lay cac gia tri con lai vao trong mang moi
                        dArr(K, J) = sArr(I, J) 'gan gia tri
                    Next J
                End If
            End If
        Next I
    End If
End With
Range("A9").Resize(1000, Col).ClearContents     'xoa gia tri cua mang can gan
If K Then Range("A9").Resize(K, Col) = dArr      'gan gia tri cua mang
End Sub
cái này mình mò rồi nhưng mình không rành về vba lắm, nếu được bạn giúp dùm mình với cảm ơn bạn
 
cái này mình mò rồi nhưng mình không rành về vba lắm, nếu được bạn giúp dùm mình với cảm ơn bạn
Mã:
Public Sub Gpe_Loc()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long, Rws As Long, Col As Long, fDate As Long, eDate As Long, SName As String
Dim nguoinop As String  'khai bao bien nguoi nop
SName = Range("C2").Value 'lay ten sheets can kiem tra
fDate = Range("C3").Value ' chon ngay nho nhat can kiem tra
eDate = Range("C4").Value 'chon ngày lon nhat can kiem tra
nguoinop = Range("E3").Value  'lay theo nguoi nop
Col = 57
With Sheets(SName)
    R = .Range("B60000").End(xlUp).Row 'chon dong cuoi cung o cot B
    If R > 8 Then ' kiem tra dieu kien de lay mang
        sArr = .Range("A9:A" & R).Resize(, Col).Value  ' nap gia tri vao mang
        Rws = UBound(sArr)   'xac dinh dong lon nhat trong mang
        ReDim dArr(1 To R, 1 To Col)  ' khai bao mang moi
        For I = 1 To Rws              'vong lap de duyet qua cac gia tri trong mang
            If sArr(I, 2) >= fDate Then   'so sanh gia tri cot thu 2 cua mang voi thoi gian nho nhat
                If sArr(I, 2) <= eDate Then 'so sanh gia tri cot thu 2 cua mang voi thoi gian lon nhat
                   If UCase(nguoinop) = UCase(sArr(I, 5)) Then        'so sanh nguoi nop voi data duoc so sanh
                    K = K + 1                'neu gia tri mang thoa man 2 dieu kien thi K se duoc tang them 1 gia tri
                    dArr(K, 1) = K            'gan vi tri thu nhat cua mang moi bang K (day la so thu tu cua mang)
                    For J = 2 To Col           'vong lap de lay cac gia tri con lai vao trong mang moi
                        dArr(K, J) = sArr(I, J) 'gan gia tri
                    Next J
                   End If
                End If
            End If
        Next I
    End If
End With
Range("A9").Resize(1000, Col).ClearContents     'xoa gia tri cua mang can gan
If K Then Range("A9").Resize(K, Col) = dArr      'gan gia tri cua mang
End Sub
Đây bạn xem có thêm trường người nộp.
 
Mã:
Public Sub Gpe_Loc()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long, Rws As Long, Col As Long, fDate As Long, eDate As Long, SName As String
Dim nguoinop As String  'khai bao bien nguoi nop
SName = Range("C2").Value 'lay ten sheets can kiem tra
fDate = Range("C3").Value ' chon ngay nho nhat can kiem tra
eDate = Range("C4").Value 'chon ngày lon nhat can kiem tra
nguoinop = Range("E3").Value  'lay theo nguoi nop
Col = 57
With Sheets(SName)
    R = .Range("B60000").End(xlUp).Row 'chon dong cuoi cung o cot B
    If R > 8 Then ' kiem tra dieu kien de lay mang
        sArr = .Range("A9:A" & R).Resize(, Col).Value  ' nap gia tri vao mang
        Rws = UBound(sArr)   'xac dinh dong lon nhat trong mang
        ReDim dArr(1 To R, 1 To Col)  ' khai bao mang moi
        For I = 1 To Rws              'vong lap de duyet qua cac gia tri trong mang
            If sArr(I, 2) >= fDate Then   'so sanh gia tri cot thu 2 cua mang voi thoi gian nho nhat
                If sArr(I, 2) <= eDate Then 'so sanh gia tri cot thu 2 cua mang voi thoi gian lon nhat
                   If UCase(nguoinop) = UCase(sArr(I, 5)) Then        'so sanh nguoi nop voi data duoc so sanh
                    K = K + 1                'neu gia tri mang thoa man 2 dieu kien thi K se duoc tang them 1 gia tri
                    dArr(K, 1) = K            'gan vi tri thu nhat cua mang moi bang K (day la so thu tu cua mang)
                    For J = 2 To Col           'vong lap de lay cac gia tri con lai vao trong mang moi
                        dArr(K, J) = sArr(I, J) 'gan gia tri
                    Next J
                   End If
                End If
            End If
        Next I
    End If
End With
Range("A9").Resize(1000, Col).ClearContents     'xoa gia tri cua mang can gan
If K Then Range("A9").Resize(K, Col) = dArr      'gan gia tri cua mang
End Sub
Đây bạn xem có thêm trường người nộp.
bạn giúp mình với mình đánh theo bạn rồi nhưng khi lọc theo tên người nộp nó lại ko chạy, nó cứ lọc theo thời gian thì đúng, ý mình là mình chỉ cần lọc một trong những điều kiện (nguoinop, phieuthu, noidung) thì nó sẽ lọc ra theo những điều kiện đó chứ không cần đánh hết điều kiện lọc ra ah bạn, tại sao nó chỉ đúng với điều kiện thời gian, còn những thằng khác thì không, bạn xem file giúp mình nhe cảm ơn bạn nhiều, thật sự mình không biết về VBA mong bạn giúp mình với.
 

File đính kèm

Lần chỉnh sửa cuối:
bạn giúp mình với mình đánh theo bạn rồi nhưng khi lọc theo tên người nộp nó lại ko chạy, nó cứ lọc theo thời gian thì đúng, ý mình là mình chỉ cần lọc một trong những điều kiện (nguoinop, phieuthu, noidung) thì nó sẽ lọc ra theo những điều kiện đó chứ không cần đánh hết điều kiện lọc ra ah bạn, tại sao nó chỉ đúng với điều kiện thời gian, còn những thằng khác thì không, bạn xem file giúp mình nhe cảm ơn bạn nhiều, thật sự mình không biết về VBA mong bạn giúp mình với.
Bạn xem lại file này.
Chú ý không viết tắt, có đầy đủ Chấm, Phẩy, chữ Hoa đầu câu, đầu dòng.
 

File đính kèm

Bạn xem lại file này.
Chú ý không viết tắt, có đầy đủ Chấm, Phẩy, chữ Hoa đầu câu, đầu dòng.
Dạ em cảm ơn anh, nhưng em chạy nó báo lỗi màu vàng trong đoạn code VBA này là sao vậy anh, dạ anh nếu mình chọn điều kiện lọc mà mình chỉ viết tắt các chữ đầu nó vẫn lọc ra dạ phải không anh. Mong anh xem lại dùm em.
 

File đính kèm

  • 4.png
    4.png
    216.9 KB · Đọc: 6
Dạ em cảm ơn anh, nhưng em chạy nó báo lỗi màu vàng trong đoạn code VBA này là sao vậy anh, dạ anh nếu mình chọn điều kiện lọc mà mình chỉ viết tắt các chữ đầu nó vẫn lọc ra dạ phải không anh. Mong anh xem lại dùm em.
Gởi cái hình thì sao biết bạn đã làm gì với sheet?
- Có thể là ô C2 trống (Có ghi rõ trong File: C2 bắt buộc phải chọn) hoặc không có sheet nào có tên = ô C2.
- Code này dò tìm "giống giống", không chính xác. Chỉ cần nhập ô người nộp "Nguyễn" thì nó sẽ lấy tất cả những tên có chữ Nguyễn.
Nếu bạn muốn chính xác thì phải nhập đầy đủ, chính xác tên cần lọc.
 
Web KT

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

Back
Top Bottom