Lọc dữ liệu theo điều kiện qua Sheet khác ??? (2 người xem)

Liên hệ QC

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

M@trixs

Thành viên thường trực
Tham gia
3/3/11
Bài viết
257
Được thích
336
Hiện tại M@trixs có 1 file công việc gởi đến ACE nhờ giải giùm. ACE down file đính kèm nhé !!!

Mục đích của M@trixs cần như sau: ACE lọc ở Sheet [Ho so] với điều kiện ở cột loại có giá trị là "H. Đồng". Các giá trị cần lọc và copy qua Sheet [Hop dong] bao gồm:


Sheet Hồ Sơ . . . . . . . . . . . . . . . . . . . . . . Sheet Hợp đồng

Số hiệu văn bản . . . . . . . . . . . . . . . . . . . . . . Số hợp đồng

Ngày ký . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ngày ký

Giai đoạn . . . . . . . . . . . . . . . . . . . . .. . . . . . Giai đoạn

Nội dung . . . . . . . . . . . . . . . . . . . . . . . . . . . Nội dung công việc

Tổ chức, đơn vị phát hành . . . . . . . . . . .. . . . Bên liên quan



Mong ACE trong 4rum giúp M@trixs một tay. Rất cảm ơn vì đã ghé ngang và đọc bài của M@trixs

Trân thành cảm ơn sự giúp đỡ rất nhiều !!!

M@trixs cũng tìm trên 4rum một đoạn code Loc_DSHS của bác nào á (quên mất tên rồi, cho xin lỗi tác giả nhé), thấy nó cũng đáp ứng cho công việc được nhưng không biết cách tùy biến để làm cho cái của mình +-+-+-+. Mọi người tham khảo ở file đính kèm luôn nhé !!
 

File đính kèm

Lần chỉnh sửa cuối:
Mong mọi người giúp giùm M@trixs với. Đang cần quá !!!
 
Mong mọi người giúp giùm M@trixs với. Đang cần quá !!!
Yêu cầu của bạn và kết quả lọc của cái file người ta làm đâu có giống nhau mà bạn đòi ĐẠO CODE của người ta, hiiiiiiiii ^^
Bạn cần người khác giúp gấp mà vẫn đưa dữ liệu ảo lên để test CODE. Vậy tôi viết theo dữ liệu bạn đưa lên nhé, sai thì bạn tự chịu mà đúng thì bạn tự chỉnh là phù hợp với mục đích công việc của bạn!
PHP:
Sub LochDong()
Dim i As Long
Dim sArr(), dArr()
sArr = Sheets("Ho So").Range("B5:G24").Value
ReDim dArr(1 To UBound(sArr), 1 To 18)
For i = 1 To UBound(sArr)
    If sArr(i, 1) = ActiveSheet.Name Then
        k = k + 1
        dArr(k, 1) = k
        dArr(k, 2) = sArr(i, 4)
        dArr(k, 3) = sArr(i, 2)
        dArr(k, 5) = sArr(i, 3)
        dArr(k, 8) = sArr(i, 5)
    End If
Next
If k Then [A5].Resize(k, 18) = dArr
End Sub
 

File đính kèm

Cảm ơn bạn nhiều nhé. Mình đưa dữ liệu ảo do là mình chưa có dữ liệu thật bạn ơi !!!

Dù gì cũng giúp mình rồi bạn trót thương thêm lần nữa giải thích code cho mình được không. Vì mình muốn sao này còn tận dụng thêm code này làm nhiều cái nữa. Nhưng giờ nhìn vào thì chả hiểu gì hết. Mình cũng có hiểu sơ sơ về VBA 1 tí, nên chắc bạn gảii thích tí mình sẽ hiểu !!!

Với lại bạn xem lại tí. Vì là hợp đồng của mình bên Sheet [Ho So] không phải là cố định, mà tùy thuộc và công việc cụ thể mà nó sẽ có nhiều hoặc ít hợp đồng. Cái này bạn giải quyết chỉ cho có 7 hợp đồng thôi ?????
 
Lần chỉnh sửa cuối:
Với lại bạn xem lại tí. Vì là hợp đồng của mình bên Sheet [Ho So] không phải là cố định, mà tùy thuộc và công việc cụ thể mà nó sẽ có nhiều hoặc ít hợp đồng. Cái này bạn giải quyết chỉ cho có 7 hợp đồng thôi ?????
- Trong đoạn code mình viết trên kia bạn thay câu lệnh này :
sArr = Sheets("Ho So").Range("B5:B24").Value
THÀNH
sArr = Sheets("Ho So").Range("B5:B" & Sheets("Ho So").[B65536].End(xlUp).Row).Resize(, 9).Value

PHP:
Sub LochDong()
Dim i As Long
Dim sArr(), dArr()
sArr = Sheets("Ho So").Range("B5:B" & Sheets("Ho So").[B65536].End(xlUp).Row).Resize(, 9).Value
ReDim dArr(1 To UBound(sArr), 1 To 18)
For i = 1 To UBound(sArr)
    If sArr(i, 1) = ActiveSheet.Name Then
        k = k + 1
        dArr(k, 1) = k
        dArr(k, 2) = sArr(i, 4)
        dArr(k, 3) = sArr(i, 2)
        dArr(k, 5) = sArr(i, 3)
        dArr(k, 8) = sArr(i, 5)
    End If
Next
[A5:R1000].ClearContents
If k Then [A5].Resize(k, 18) = dArr
End Sub
Dù gì cũng giúp mình rồi bạn trót thương thêm lần nữa
Thôi, mình chả dám trót thương gì bạn đâu, mình chỉ dám trót thương người mình iu thôi, hiiiii ^^.

Vậy mình giải thích thuật toán nhé, vì bạn biết sơ sơ về VBA chắc các câu lệnh trên không có gì khó khăn với bạn. Trình tự như sau:

1. Nạp toàn bộ dữ liệu từ B5 : J... trong sheet “Ho So” vào sArr

2. Dùng vòng FOR quét qua toàn bộ dữ liệu của cột B sheet “Ho So” và so sánh trong dữ liệu trong cột B nếu dữ liệu cell nào trùng với tên sheet đang làm việc (Activesheet.name = H.Đồng – câu lệnh này trả về tên sheet đang làm việc) thì tăng biến k và gán dữ liệu tương ứng từ mảng sArr sang mảng kết quả dArr. Vậy nên bạn chú ý cách đặt tên sheet cần lọc kết quả nhé, nó phải trùng với tên trường mà bạn muốn lọc ở cột B sheet “Ho So” đó, hiện tại là H.Đồng. Khi bạn muốn lọc Q.Định thì bạn chỉ cần thay tên sheet thành Q.Định, lọc T.Trình thì thay tên sheet thành T.Trình....

3. Cuối cùng là đổ kết quả ra sheet
 
Lần chỉnh sửa cuối:
@hoamattroicoi: Mình không hiểu sao nhưng bảng lọc thì OK. Nhưng có 1 vấn đề quan trọng hơn nữa đó là: Ở bảng kết quả đã lọc ra mình có thêm một số cột nữa, và tương ứng với 1 hợp đồng mình sẽ thêm một số thông tin nữa cho hợp đồng đó, nhưng khi click qua sheet khác rồi trở về sheet [H.Đồng] thì tính năng lọc vẫn chạy nhưng các thông tin mình thêm vào thì lại mất tiêu hết trơn à.....

Làm sao để vừa lọc mà vừa ghi thêm được thông tin đây hả bạn ????? ACE nào giúp mình với nhé !
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom