Xóa những dòng thừa khác điều kiện đã cho sau khi lọc danh sách

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

kayhangry

Thành viên mới
Tham gia
11/10/20
Bài viết
4
Được thích
0
Hiện tại mình tìm được code đáp ứng nhu cầu của mình trên GPE rồi nhưng mình bị vướng như sau (code này tìm dữ liệu theo mã khách hàng):
1. Dữ liệu của mình có 12 cột, code này viết cho dữ liệu có 19 cột, mình xóa bớt cột: 4, 5, 6, 7, 17, 18, 19 thì code k chạy, mình muốn biết cách xóa cột mà code vẫn hoạt động.
Edit: Mình muốn xóa luôn những cột trống của 2 sheet vì đó là cột thừa không dùng đến mà khi xóa thì code k chạy nên mới để những cột trống đó đi hỏi mọi người cách chỉnh code.
2. Khai báo biến I, J, K có phải là chỉ các cột I, J, K trong sheet 1 k?
3. Chỗ "[A7].Resize..." bên dưới, đoạn đó code chỉ ghi đè đúng số dòng của loại mã mình chọn, nếu mã sau mà ít dòng hơn mã trước thì nó vẫn hiện dữ liệu thừa của mã trước. Nếu mình muốn khi lọc xong thì xóa hết các dữ liệu khác mã chọn thì làm thế nào (hoặc có thể do dữ liệu mình khác với của người trước nên nó k chạy xóa dòng nữa nha)

*Phần mở rộng:
Mình muốn nâng cao 1 ít là k lọc tay theo từng mã nữa, mà khi bấm lọc nó sẽ tự động chạy ra các sheet riêng theo từng mã khách hàng có trong dữ liệu. Mong Anh/Chị hướng dẫn giúp mình.
Do file của mình hơi nhạy cảm nên mình xin phép thay dữ liệu thành các chữ cái và số ạ
Mình cám ơn

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, 10) = [I2].Value Then
            K = K + 1
            For J = 1 To UBound(sArr, 2)
                dArr(K, J) = sArr(I, J)
            Next
        End If
 
Next

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

File đính kèm

  • GIUP DO.xlsm
    52.8 KB · Đọc: 8
Lần chỉnh sửa cuối:
Nhìn cái e code này quen quen, hình như của sư phụ mình, SA_DQ?
(Cất rìu vô trở lại thôi)
 
Upvote 0
Hiện tại mình tìm được code đáp ứng nhu cầu của mình trên GPE rồi nhưng mình bị vướng như sau (code này tìm dữ liệu theo mã khách hàng):
1. Dữ liệu của mình có 12 cột, code này viết cho dữ liệu có 19 cột, mình xóa bớt cột: 4, 5, 6, 7, 17, 18, 19 thì code k chạy, mình muốn biết cách xóa cột mà code vẫn hoạt động.
2. Khai báo biến I, J, K có phải là chỉ các cột I, J, K trong sheet 1 k?
3. Chỗ "[A7].Resize..." bên dưới, đoạn đó code chỉ ghi đè đúng số dòng của loại mã mình chọn, nếu mã sau mà ít dòng hơn mã trước thì nó vẫn hiện dữ liệu thừa của mã trước. Nếu mình muốn khi lọc xong thì xóa hết các dữ liệu khác mã chọn thì làm thế nào (hoặc có thể do dữ liệu mình khác với của người trước nên nó k chạy xóa dòng nữa nha)

*Phần mở rộng:
Mình muốn nâng cao 1 ít là k lọc tay theo từng mã nữa, mà khi bấm lọc nó sẽ tự động chạy ra các sheet riêng theo từng mã khách hàng có trong dữ liệu. Mong Anh/Chị hướng dẫn giúp mình.
Do file của mình hơi nhạy cảm nên mình xin phép thay dữ liệu thành các chữ cái và số ạ
Mình cám ơn

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, 10) = [I2].Value Then
            K = K + 1
            For J = 1 To UBound(sArr, 2)
                dArr(K, J) = sArr(I, J)
            Next
        End If
 
Next

    If K Then
        [A6].CurrentRegion.Offset(1).ClearContents
        [A7].Resize(K, UBound(sArr, 2)).Value = dArr
    End If
End Sub
Bên Sheet baocao bạn nên ghi rõ cần lấy những cột nào sang (Những cột cần lấy) và điều kiện từ ngày đến ngày và khách hàng thì dữ liệu của bạn cần cột ngày (ngày phát sinh hoá đơn hay là ngày thu chi thì tại sheet thu/chi phải thêm dữ liệu để các anh chị trong diễn đàn tận tình giúp.
điều kiện dữ liệu và đầu ra tại Sheet baocao bạn yêu cầu cần lấy những cột nào tự sheet thuchi
 
Upvote 0
Bên Sheet baocao bạn nên ghi rõ cần lấy những cột nào sang (Những cột cần lấy) và điều kiện từ ngày đến ngày và khách hàng thì dữ liệu của bạn cần cột ngày (ngày phát sinh hoá đơn hay là ngày thu chi thì tại sheet thu/chi phải thêm dữ liệu để các anh chị trong diễn đàn tận tình giúp.
điều kiện dữ liệu và đầu ra tại Sheet baocao bạn yêu cầu cần lấy những cột nào tự sheet thuchi
Mình muốn bỏ nhũng cột đó luôn, vì đó là cột thừa của data cũ mình tải về, của mình ít hơn số cột trong file, mình thử xóa hẳn cột đi mà code k chạy nên đi hỏi xem đoạn code nào xác định số cột để mình sửa :D
 
Upvote 0
Delete các cột không sài
Tìm dòng .... và sửa bằng dòng sau :

If sArr(I, 6) = [I2].Value Then
 

File đính kèm

  • GIUP DO 222.xlsm
    50.4 KB · Đọc: 7
Upvote 0
Mình cám ơn các bạn nha, hiện tại bước 1 đã hoàn thành rồi, mình đang nghiên cứu đến bước 2 là thao tác 1 lần cho toàn bộ file.
Mô tả các bước như sau:
1. Từ bảng tổng hợp xóa khách hàng trùng để ra danh sách khách hàng duy nhất
2. Tạo hàng loạt sheet theo danh sách khách hàng phía trên
3. Đối chiếu file tổng hợp tìm mã khách hàng theo danh sách đã lọc, sau đó copy mã đó qua sheet đã tạo cùng tên với mã khách hàng
Mình đang k biết là 3 điều kiện này có kết hợp được với nhau k. Các bạn giúp mình với. Mình cám ơn
 

File đính kèm

  • GIUP DO_ver2.xlsm
    49.6 KB · Đọc: 4
Upvote 0
Có cách này đơn giản hơn mà không cần code kiết gì cả...
Chuyển dữ liệu qua table,
Vào design, insert slicer, và tự khám phá...
 

File đính kèm

  • GIUP DO_ver3.xlsx
    19.1 KB · Đọc: 3
Upvote 0
Web KT

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

Back
Top Bottom