Dùng Advanced Filter.Chào anh/chị,
Nhờ anh/chị giúp em mã code Lọc dữ liệu theo từng chi nhánh, từ ngày đến ngày của dữ liệu như trong file (em có file đính kèm theo).
Em cám ơn.
Chào anh/chị,
Nhờ anh/chị giúp em mã code Lọc dữ liệu theo từng chi nhánh, từ ngày đến ngày của dữ liệu như trong file (em có file đính kèm theo).
Em cám ơn.
Sorry, attach lộn file
Dù chọn C2 là gì thì trong cột B kết quả vẫn là "SGN".Đây là 1 trong cách giải dở nhất cho bạn tìm hiểu ...
Không làm được vì cấu trúc các sheet có tiêu đề cột không giống nhau, số cột không giống nhau.Thầy Ba Tê có thể chỉ giúp em thêm được không ạ, trường hợp em tách ra từng sheet chi nhánh riêng để nhập liệu, nhưng xem kết quả ở sheet Check, thầy có thể giúp em mã code được không ạ (em có kèm theo file).
Em cám ơn
Dù chọn C2 là gì thì trong cột B kết quả vẫn là "SGN".
Chưa kiểm tra kết quả các cột khác.
Dạ, em sẽ thiết kế lại các tiêu đề cột lại cho hợp lý theo Sheet kết quảKhông làm được vì cấu trúc các sheet có tiêu đề cột không giống nhau, số cột không giống nhau.
Sheet kết quả cấu trúc chẳng giống sheet nào.
Dạ, thầy Ba Tê em đã sửa lại cấu trúc tiêu đề đồng nhất hết ở các sheet, nhờ thầy chỉ giúp em code cho kết quả ở 2 sheet: Loc và TongHop (em có đính kèm file mới ạ)Không làm được vì cấu trúc các sheet có tiêu đề cột không giống nhau, số cột không giống nhau.
Sheet kết quả cấu trúc chẳng giống sheet nào.
Thầy Ba Tê giúp em với ạDạ, thầy Ba Tê em đã sửa lại cấu trúc tiêu đề đồng nhất hết ở các sheet, nhờ thầy chỉ giúp em code cho kết quả ở 2 sheet: Loc và TongHop (em có đính kèm file mới ạ)
Em cám ơn!
Sheet "TongHop" bạn phải nhập số cột cần lấy dữ liệu vào dòng 8. (Tôi đã nhập thử từ cột D đến I)Dạ, thầy Ba Tê em đã sửa lại cấu trúc tiêu đề đồng nhất hết ở các sheet, nhờ thầy chỉ giúp em code cho kết quả ở 2 sheet: Loc và TongHop (em có đính kèm file mới ạ)
Em cám ơn!
Dạ, em cám ơn thầy Ba Te nhiều ạSheet "TongHop" bạn phải nhập số cột cần lấy dữ liệu vào dòng 8. (Tôi đã nhập thử từ cột D đến I)
thưa thầy nếu cũng file đó mà em mún lọc theo người nộp hoặc phiếu thu hay phiếu chi thì em phải làm sao thưa thầy...em mún tạo 2 3 ô lọc phiếu thu chi, ngày , và người nộp thì làm sao thưa thầy mong thầy giúp em với dạ thank thầySheet "TongHop" bạn phải nhập số cột cần lấy dữ liệu vào dòng 8. (Tôi đã nhập thử từ cột D đến I)
Tiếc là tôi đọc không hiểu "mún" là gì, "thank" là gì.thưa thầy nếu cũng file đó mà em mún lọc theo người nộp hoặc phiếu thu hay phiếu chi thì em phải làm sao thưa thầy...em mún tạo 2 3 ô lọc phiếu thu chi, ngày , và người nộp thì làm sao thưa thầy mong thầy giúp em với dạ thank thầy
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.dạ đây thưa thầy: ý em là em mún thêm điều kiện lọc nữa ko phải chỉ có ngày ko, mà còn có người nộp, hay phiếu thu hay chi: em chỉ cần lọc trong những điều kiện đó ngoài điều kiện thời gian ra: dạ file đính kèm ở sheet lọc nhe thầy mong thầy chỉ giúp em
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
Viết Hoa những từ "quy định" là quy định từ cấp I.thank bạn để mình làm thử: code của bạn có chú giải lun quá tuyệt ^^ VBA với mình còn mới quá...heheh đợi đầu năm nay sách của thầy phan tự hướng tái bản mua về ngâm cứu mới được
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.Range("A9").Resize(1000, Col).ClearContents 'xoa gia tri cua mang can gan
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.