Xử lý hàng validation và filter bằng VBA (1 người xem)

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

tnfsmith

Thành viên hoạt động
Tham gia
26/3/07
Bài viết
151
Được thích
0
Giới tính
Nam
Mình xin nhờ các bạn xử lý hộ dùm mình này thư tiêu đề.

Mình đã hoàn thành khá nhiều với dữ liệu này xong chỉ còn phần này thì mình xử lý chưa xong. Mong các bạn giải đáp hộ.

Chi tiết trong file đính kèm.
Xin cám ơn!
 
Lần chỉnh sửa cuối:
Mình xin nhờ các bạn xử lý hộ dùm mình này thư tiêu đề.

Mình đã hoàn thành khá nhiều với dữ liệu này xong chỉ còn phần này thì mình xử lý chưa xong. Mong các bạn giải đáp hộ.

Chi tiết trong file đính kèm.
Xin cám ơn!
Nói thiệt là xem xong file hỏng hiểu bạn muốn kết quả ra thế nào nữa. Thay vì giải thích thì tại sao không cho kết quả tạm vào bảng tính cho dễ hình dung chút.
 
Upvote 0
Thanks mình đã minh hoạ kết quả trong file gửi lại. Bạn tham khảo nhé.
Xin cám ơn!
 
Lần chỉnh sửa cuối:
Upvote 0
Thanks mình đã minh hoạ kết quả trong file gửi lại. Bạn tham khảo nhé.
Xin cám ơn!
Nếu muốn được giúp thì hãy cho dữ liệu thật 1 chút, chứ kiểu dữ liệu trong file viết code rồi cũng mất thời gian để sửa lại toàn bộ.
 
Upvote 0
Ok đây là cấu trúc dữ liệu thật, có 02 cột mình tô màu vàng ở sheet1 là dữ liệu cần lọc so với sheet VCLI.
Những cột khác mình xoá nội dung vì có liên quan đến thông tin cá nhân khách hàng bên mình.
Xin cám ơn
 
Lần chỉnh sửa cuối:
Upvote 0
Ok đây là cấu trúc dữ liệu thật, có 02 cột mình tô màu vàng ở sheet1 là dữ liệu cần lọc so với sheet VCLI.
Những cột khác mình xoá nội dung vì có liên quan đến thông tin cá nhân khách hàng bên mình.
Xin cám ơn


Mã:
Sub tt()

Dim phong As Range
[v8].Value = [F5].Value
Set phong = [T2:T5].Find([f6], , , xlWhole)
[w8:w16].Value = Application.WorksheetFunction.Transpose(phong.Offset(, 3).Resize(, 10).Value)
Sheet1.[A1:AM1000].AdvancedFilter 1, Sheet2.[V7].Resize([W1000].End(3).Row - 6, 2)
Sheet3.Cells.ClearContents
Sheet1.[a1].CurrentRegion.SpecialCells(12).Copy Sheet3.[a1]
Application.CutCopyMode = False
Sheet1.ShowAllData
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Ok đây là cấu trúc dữ liệu thật, có 02 cột mình tô màu vàng ở sheet1 là dữ liệu cần lọc so với sheet VCLI.
Những cột khác mình xoá nội dung vì có liên quan đến thông tin cá nhân khách hàng bên mình.
Xin cám ơn
Thử code này xem sao. Cảm giác rủi nhiều hơn may
Kết quả tạm ở sheet2 và sheet3
PHP:
Sub QH()
Dim nguon(), I, J, K, kk, N, MaNV, ngay
Dim d As Object, Res(), Res2()
Set d = CreateObject("scripting.dictionary")
nguon = Sheet1.[A1].CurrentRegion.Value
ReDim Res(1 To UBound(nguon), 1 To 49)
ReDim Res2(1 To UBound(nguon), 1 To 49)
ngay = Sheet2.[F5].Value
MaNV = Sheet2.[T:T].Find(Sheet2.[F6], , , 1).Offset(, 1).Resize(, 11).Value
For J = 1 To UBound(MaNV, 2)
   If MaNV(1, J) <> "" Then
      d.Item(MaNV(1, J)) = ""
   End If
Next
For I = 2 To UBound(nguon)
   If nguon(I, 29) = ngay And d.exists(nguon(I, 37)) Then
      K = K + 1
      For N = 1 To 49
         Res(K, N) = nguon(I, N)
      Next
   Else
       kk = kk + 1
      For N = 1 To 49
         Res2(kk, N) = nguon(I, N)
      Next
   End If
Next
If K > 0 Then Sheet3.[A2].Resize(K, 39) = Res
If kk > 0 Then Sheet4.[A2].Resize(K, 39) = Res2
End Sub
 
Upvote 0
Mã:
Sub tt()

Dim phong As Range
[v8].Value = [F5].Value
Set phong = [T2:T5].Find([f6], , , xlWhole)
[w8:w16].Value = Application.WorksheetFunction.Transpose(phong.Offset(, 3).Resize(, 10).Value)
Sheet1.[A1:AM1000].AdvancedFilter 1, Sheet2.[V7].Resize([W1000].End(3).Row - 6, 2)
Sheet3.Cells.ClearContents
Sheet1.[a1].CurrentRegion.SpecialCells(12).Copy Sheet3.[a1]
Application.CutCopyMode = False
Sheet1.ShowAllData
End Sub
Mình edit code của bạn lại thì chạy ko chuẩn nữa, không chịu copy và paste và sheet4. Những chổ tô đen là mình sửa lại.
Code hiện tại của bạn chỉ copy những cột có giá trị đúng OFFCR chưa kết hợp được với cột PRDATE6 . Vì vậy kết quả khi copy tại sheet3 chỉ lấy giá trị tại OFFCR.
Bạn xem lại dùm mình nhé.

Mã:
Sub tt()
Dim phong As Range
[V8].Value = [F5].Value
Set phong = [B][T3:T5][/B].Find([f6], , , xlWhole)
[w8:[B]w23[/B]].Value = Application.WorksheetFunction.Transpose(phong.Offset(,[B] 2[/B]).Resize(, 10).Value)
Sheet1.[A1:AM1000].AdvancedFilter 1, Sheet2.[[B]V8[/B]].Resize([W1000].End(3).Row - 6, 2)
Sheet4.Cells.ClearContents
Sheet1.[a1].CurrentRegion.SpecialCells(12).Copy [B]Sheet4[/B].[a1]
Application.CutCopyMode = False
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Mình edit code của bạn lại thì chạy ko chuẩn nữa, không chịu copy và paste và sheet4. Những chổ tô đen là mình sửa lại.
Code hiện tại của bạn chỉ copy những cột có giá trị đúng OFFCR chưa kết hợp được với cột PRDATE6 . Vì vậy kết quả khi copy tại sheet3 chỉ lấy giá trị tại OFFCR.
Bạn xem lại dùm mình nhé.

Mã:
Sub tt()
Dim phong As Range
[V8].Value = [F5].Value
Set phong = [B][T3:T5][/B].Find([f6], , , xlWhole)
[w8:[B]w23[/B]].Value = Application.WorksheetFunction.Transpose(phong.Offset(,[B] 2[/B]).Resize(, 10).Value)
Sheet1.[A1:AM1000].AdvancedFilter 1, Sheet2.[[B]V8[/B]].Resize([W1000].End(3).Row - 6, 2)
Sheet4.Cells.ClearContents
Sheet1.[a1].CurrentRegion.SpecialCells(12).Copy [B]Sheet4[/B].[a1]
Application.CutCopyMode = False
End Sub

bạn up cái file lên tôi mới biết nó sai ở đâu
bạn sửa lại chổ [V8] thì v8 và W8 là dòng tiêu đề nha
chổ [t3:t5] thì không cần sửa, find nó chạy nha lắm nên bạn có thể để là [T:T]
chổ [w8:W23]..........thì phải làm sau cho 2 mảng này bằng nhau.
thôi bạn cứ úp cái file lên cho dể hiểu
 
Upvote 0
Ok file đây bạn.
Cám ơn bạn nhiều
 
Lần chỉnh sửa cuối:
Upvote 0
Ok file đây bạn.
Cám ơn bạn nhiều

hy vọng kỳ này trúng
Mã:
Sub tt()
Dim phong As Range, datano As Long
    
    Set phong = [T:T].Find([f6], , , xlWhole)
    datano = phong.End(2).Column - 21
    With Sheet4
        .[a1:aw1].Value = Sheet1.[a1:aw1].Value
        .[A2:AW60000].Clear
        .[aK2].Resize(datano).Value = Application.WorksheetFunction.Transpose(phong.Offset(, 2).Resize(, datano).Value)
         .[ac2].Resize(datano).Value = Sheet2.[F5].Value
        Sheet1.[A1:AM1000].AdvancedFilter 1, .[a1].Resize(datano, 49)
         .[A2:AW60000].Clear
        Sheet1.[a1].CurrentRegion.SpecialCells(12).Copy Sheet4.[a1]
    End With
    Application.CutCopyMode = False
    Sheet1.ShowAllData
    
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Phòng P1 lọc dữ liệu ok cho tất cả các mã nhân viên

Vẫn còn lỗi một chỗ là tại P2 và P3 mã nhân viên ở cột thứ 3 nó không lọc với ngày 260814. Mình nhìn hoài mà không biết lỗi chỗ nào...
 
Lần chỉnh sửa cuối:
Upvote 0
Phòng P1 lọc dữ liệu ok cho tất cả các mã nhân viên

Vẫn còn lỗi một chỗ là tại P2 và P3 mã nhân viên ở cột thứ 3 nó không lọc với ngày 260814. Mình nhìn hoài mà không biết lỗi chỗ nào...

nó lấy không hết vùng điều kiện
thêm
Mã:
 Sheet1.[A1:AM1000].AdvancedFilter 1, .[a1].Resize(datano[COLOR=#ff0000] + 1[/COLOR], 49)
 
Upvote 0
Thanks bạn nhiều. Done.
Tiện thể cho mình hỏi thêm có cách nào mình kiểm tra file import từ nguồn ngoài vào file mình uploaded lên đây (file mau.xlsm) mà tên tiêu đề từng cột từ (A1:AW1) không giống như sheet1 thì báo lỗi "File nhập vào ko đúng định dạng" để mình biết mà kiểm tra nguồn vào.
 
Lần chỉnh sửa cuối:
Upvote 0
Thanks bạn nhiều. Done.
Tiện thể cho mình hỏi thêm có cách nào mình kiểm tra file import từ nguồn ngoài vào file mình uploaded lên đây (file mau.xlsm) mà tên tiêu đề từng cột từ (A1:AW1) không giống như sheet1 thì báo lỗi "File nhập vào ko đúng định dạng" để mình biết mà kiểm tra nguồn vào.

bạn "inport" từ đâu? excel hay phần mềm gì?
nếu từ excel và chỉ sợ sai dòng tiêu đề thì chỉ cấn copy vùng dữ liệu là được
 
Upvote 0
Mình cũng import từ file excel thôi bạn. Cấu trúc nó cũng giống như file sheet1 mình đưa lên đây. Nhưng mình muốn kt nếu như nguồn lấy vào có thay đổi thì mình biết mà sửa lại cho phù hợp. Mình kt đủ số hàng (column) và title (tiêu đề) như file mình đính kèm thì ok import bình thường. Nếu khác tiêu đề và thay đổi số cột thì báo lỗi để biết mà sửa code cho phù hợp hơn. Tránh dữ liệu đưa vào sai mà mình nhiều khi không để ý.
Thanks bạn
 
Upvote 0

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

Back
Top Bottom