Giúp đỡ code: Trích lọc dữ liệu có điều kiện (2 người xem)

Liên hệ QC

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

alexanderhuti

Thành viên chính thức
Tham gia
25/8/09
Bài viết
62
Được thích
6
Tôi có vấn đề này nhờ xin nhờ các anh/chị/em GPE giúp đỡ:

- Sheet "Dulieu" chứa thông tin khách hàng đã mua hàng, số tiền, mặt hàng,.....
"Dulieu" được cập nhật hàng ngày.

- Yêu cầu đặt ra là tại sheet "Trichloc": khi gõ từ khoá vào (ví dụ: coca cola) và chọn kiểu tìm kiếm (nghĩa là tìm kiếm theo tên khách hàng/ hay theo phân loại hàng/ hay theo mặt hàng/ theo trọng lượng/ theo số tiền/...)
thì chương trình sẽ lọc dữ liệu ở sheet "Dulieu" và copy vào sheet "Trichloc" theo các nội dung bắt đầu từ ô A5.

- Ghi chú: Khi tìm kiếm theo khách hàng/ hay mặt hàng thì từ khoá là kiểu tìm kiếm gần đúng. Ví dụ:
Tìm kiếm theo công ty: gõ từ khoá là "Coca"
thì cho phép lọc và copy tất cả các công ty có từ khoá này. Ví dụ: Cong ty Coca Cola 1; Company Coca Cola 2; Factory Coca Cola
Hay tìm kiếm theo tên hàng: ví dụ từ khoá là "chuot" thì cho phép lọc và copy tất cả mặt hàng: chuot logitech, chuot HP, chuot China...

Xin chân thành cảm ơn!
 

File đính kèm

Mã:
Public Sub GPE()
Dim sArr, dArr, I As Long, J As Long, K As Long
sArr = Sheet1.Range("A1").CurrentRegion.Value
ReDim dArr(1 To UBound(sArr), 1 To UBound(sArr, 2))
For I = 3 To UBound(sArr)
    If sArr(I, 1) >= [E1].Value And sArr(I, 1) <= [E2].Value Then
        If sArr(I, 10) = [I2].Value Then
            K = K + 1
            For J = 1 To UBound(sArr, 2)
                dArr(K, J) = sArr(I, J)
            Next
        End If
    End If
Next

    If K Then
        [A6].CurrentRegion.Offset(1).ClearContents
        [A7].Resize(K, UBound(sArr, 2)).Value = dArr
    End If
End Sub

ủa anh hpkhuong ơi , anh ghi Macro làm sao mà ra được đoạn code này vậy ? chỉ em với. Chứ em thâu Macro thao tác Filter nó toàn ra cái code gì khác xa với code của anh không à. hic.
 
Upvote 0
Mã:
Public Sub GPE()
Dim sArr, dArr, I As Long, J As Long, K As Long
sArr = Sheet1.Range("A1").CurrentRegion.Value
ReDim dArr(1 To UBound(sArr), 1 To UBound(sArr, 2))
For I = 3 To UBound(sArr)
    If sArr(I, 1) >= [E1].Value And sArr(I, 1) <= [E2].Value Then
        If sArr(I, 10) = [I2].Value Then
            K = K + 1
            For J = 1 To UBound(sArr, 2)
                dArr(K, J) = sArr(I, J)
            Next
        End If
    End If
Next

    If K Then
        [A6].CurrentRegion.Offset(1).ClearContents
        [A7].Resize(K, UBound(sArr, 2)).Value = dArr
    End If
End Sub

Hi hp Khuong

Trước hết cám ơn bạn đã nhiệt tình giúp đở mình nha. Mất nay mình ko vào diễn đàn nên trả lời hơi chậm, thông cảm giúp mình nhé

Ak, Code bạn gửi, mình ko thấy ĐK nào lọc từ ngày đến ngày cả. ???. Bạn trả lời giúp mình với
 
Upvote 0
em cũng có yêu cầu gần giống về vấn đề này mong mọi người giúp đỡ (em mới tìm hiểu về VBA đc 3 ngày).
- chỗ e có khoảng 14 Đại lý, mỗi đại lý sẽ có 1 mã đại lý từ 001 - 014
- BC of từng đại lý khá dày về nhiều thông số.em cần làm báo cáo tổng thống kê về tổng số KH của từng ĐL, có bnhiu KH mua Lẻ, bnhiu KH mua Sỉ ở từng ĐL đó.
- Kh ở từng đại lý sẽ có 1 mã KH tăng dần trong từng ĐL, ko bị trùng lắp do có mã ĐL trong mã KH (vd: KH ở ĐL 1 mang mã 001000435643, KH ở ĐL 5 mang mã 005000435643)
- Cột Loại KH sẽ cho biết KH nào mua lẻ KH nào mua Sỉ, 1 KH có thể phát sinh nhiều lần mua ở cùng 1 ĐL (cố định KH mua lẻ thì ko fai KH mua Sỉ), phát sinh nhiều lần mua, nhiều Hóa đơn khác nhau nhưng vẫn chỉ 1 mã KH.

mổi ĐL sẽ gửi BC hàng tháng về, e gom lại 14 cái BC vào 1 file Excel mỗi BC nằm ở 1 Sheet để làm. e mong mọi người giúp e code VBA cho vấn đề này!

Dữ liệu đã được mã hóa trên hệ thống nội bộ nên ko thể trích xuất ra và gửi cho mọi người xem!
 
Upvote 0
Nếu tôi làm thì làm như vầy:
Cột nào muốn tìm chính xác thì tô màu vào dòng 5 của cột đó, Tôi tô P5,R5 và S5, bạn có thể chọn thêm.
Cột nào không tô màu thì tìm gần giống.
Lấy tất cả các sheet có tên khác với "Trichloc" ghi vào sheet "Trichloc".
Dữ liệu khoảng 20 sheet, mỗi sheet khoảng 50.000 dòng hổng biết chạy có nỗi không.
Cảm ơn Thầy Ba Tê, em thử dùng code thấy chạy tốt. Duy chỉ có trở ngại là khi em copy dữ liệu khác vào cái bảng mà Thầy đã tạo sẵn ( giữ nguyên các tiêu đề cột, chỉ thay đổi các bản ghi) thì code đều ko chạy, ko lọc ra được gì.
Muội xin nhờ Thầy Ba Tê cũng như các huynh trong GPE giải đáp giùm muội.
Muội xin cảm ơn !
P/s. Muội xin phép nói thêm là trường hợp như vậy muội gặp rất nhiều với các code khác. Khi muội lấy về chạy thử với dữ liệu cũ có sẵn thì rất tốt, nhưng cứ khi muội copy dữ liệu ở ngoài vào là code ko chạy nữa. Muội thực sự lạ quá, mong các Thầy, các Sư huynh chỉ giáo cho.
 
Upvote 0
Cảm ơn Thầy Ba Tê, em thử dùng code thấy chạy tốt. Duy chỉ có trở ngại là khi em copy dữ liệu khác vào cái bảng mà Thầy đã tạo sẵn ( giữ nguyên các tiêu đề cột, chỉ thay đổi các bản ghi) thì code đều ko chạy, ko lọc ra được gì.
Muội xin nhờ Thầy Ba Tê cũng như các huynh trong GPE giải đáp giùm muội.
Muội xin cảm ơn !
P/s. Muội xin phép nói thêm là trường hợp như vậy muội gặp rất nhiều với các code khác. Khi muội lấy về chạy thử với dữ liệu cũ có sẵn thì rất tốt, nhưng cứ khi muội copy dữ liệu ở ngoài vào là code ko chạy nữa. Muội thực sự lạ quá, mong các Thầy, các Sư huynh chỉ giáo cho.
Tỉ tỉ đăng bài mới đi. Code viết cho file cụ thể, nếu cùng cấu trúc và kiểu dữ liệu của file đó mới áp dụng được.
 
Upvote 0
Nếu tôi làm thì làm như vầy:
Cột nào muốn tìm chính xác thì tô màu vào dòng 5 của cột đó, Tôi tô P5,R5 và S5, bạn có thể chọn thêm.
Cột nào không tô màu thì tìm gần giống.
Lấy tất cả các sheet có tên khác với "Trichloc" ghi vào sheet "Trichloc".
Dữ liệu khoảng 20 sheet, mỗi sheet khoảng 50.000 dòng hổng biết chạy có nỗi không.

Muội đã chạy thử với khoảng 30 sheet, mỗi sheet cũng gần 30k dòng mà thấy vẫn ổn ạ. Hay là do muội đợi nó quen rồi hông bít nữa :D Muội xin cảm ơn !
 
Lần chỉnh sửa cuối:
Upvote 0
Hi bạn, Do tính chất công việc thường lập đi lập lại, và dữ liệu rất nhiều. Nên mình cần một code VBA tối ưu nhất.

Mình đã thử các cách mình biết, trong đó có việc ghi lại macro tự động, nhưng vẫn ko hiệu quả bạn à. Mong bạn chỉ giúp mình

Bạn có thể sửa dụng code này, tùy biến thoải mái.
Có gì không hiểu thì xem video sau:
 

File đính kèm

Upvote 0
Xin nhờ các anh chị chỉ giúp:
Em xin mượn tạm file của Thầy Ba Tê để thực hiện. Em dời dòng điều kiện từ cột 1 sang cột 2 của sheet Trichloc thì điều kiện trích lọc đúng ( khi tô màu ô ở dòng 5 ) đã không còn tác dụng ( nó chỉ trích lọc các nội dung gần đúng ).
Nhờ các anh chị chỉ giúp phải chỉnh dòng lệnh chỗ nào để code có tác dụng như mong muốn ( khi tô màu ở ô nào thì sẽ trích lọc nội dung đúng theo yêu cầu đó ).
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom