tại em rõ nhanh quá em quên, em sẽ rút kinh nghiệmViế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
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ạnBạ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
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
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.Đâ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
Bạn xem lại file này.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.
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.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.
Gởi cái hình thì sao biết bạn đã làm gì với sheet?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.