Các bác cho em hỏi về lọc dữ liệu của array với ạ

Liên hệ QC

tukut3boyhp9x

Thành viên mới
Tham gia
9/1/18
Bài viết
16
Được thích
1
Giới tính
Nam
Chào mọi người ạ
em có một danh sách gồm 45 số (vd ảnh) (không quan trọng ngang dọc)
em muốn loại bỏ dữ liệu nằm trong 4 số đã chọn đi
em đã dùng filter nhưng giá trị của nó không cố định nó lấy tất cả các số chứa số lọc bao gồm cả chục và đơn vịScreenshot 2021-09-15 161142.png
 
Giải pháp
Em muốn đưa dữ liệu ra không bao gồm bốn số đã chọn ở Range("A2 : D2") ạ
Dạ em lấy hình làm ví dụ thôi ạ nếu bác cần e gửi bác file ạ
Ý là em muốn hỏi code trong vba thôi chứ không em dùng filter lọc dần ra cũng được ạ
Bài đã được tự động gộp:


Dạ em muốn hỏi code về vba ấy ạ chứ bên workbook em có thể dùng filter với countif cũng hoạt động được
Bài đã được tự động gộp:


Bác cho em xin demo được không ạ
Chép thủ tục này vào module và cho chạy thử xem đã đúng ý chưa:

Mã:
Sub LoaiBoSo()
    Dim objDic As Object
    Dim c As Long, u As Long
    Dim arrFindCell, arrData
    Set objDic = CreateObject("Scripting.Dictionary")
    c = ActiveSheet.UsedRange.Columns.Count
    arrData = Range(Cells(2, 1), Cells(2, c)).Value
    arrFindCell =...
Chào mọi người ạ
em có một danh sách gồm 45 số (vd ảnh) (không quan trọng ngang dọc)
em muốn loại bỏ dữ liệu nằm trong 4 số đã chọn đi
em đã dùng filter nhưng giá trị của nó không cố định nó lấy tất cả các số chứa số lọc bao gồm cả chục và đơn vịView attachment 266131
Bạn muốn xóa như thế nào? Xóa kiểu clear (xóa giá trị tại một ô và làm ô đó thành ô trống), hay xóa kiểu delete (xóa ô và dồn ô khác qua)?
Bạn đưa file lên đi, đừng gửi hình.
 
Upvote 0
Chào mọi người ạ
em có một danh sách gồm 45 số (vd ảnh) (không quan trọng ngang dọc)
em muốn loại bỏ dữ liệu nằm trong 4 số đã chọn đi
em đã dùng filter nhưng giá trị của nó không cố định nó lấy tất cả các số chứa số lọc bao gồm cả chục và đơn vịView attachment 266131
Nạp số đã chọn vào dictionary rồi duyệt qua các số để kiểm tra xem nó có chưa nếu có rồi thì xóa đi.
 
Upvote 0
Sao bạn không thêm 1 sheet mới để hiển thị kết quả. Sheet bạn chụp thì xem như là sheet Data chứa dữ liệu. Tại sheet mới này cách đơn giản dễ hiểu nhất là bạn đặt công thức = vị trí các ô bên sheet Data nhưng sẽ kèm theo mệnh đề If để loại trừ các số bạn chọn cho = 0 hoặc chỉnh không hiện số 0.
 
Upvote 0
Bạn muốn xóa như thế nào? Xóa kiểu clear (xóa giá trị tại một ô và làm ô đó thành ô trống), hay xóa kiểu delete (xóa ô và dồn ô khác qua)?
Bạn đưa file lên đi, đừng gửi hình.
Em muốn đưa dữ liệu ra không bao gồm bốn số đã chọn ở Range("A2 : D2") ạ
Dạ em lấy hình làm ví dụ thôi ạ nếu bác cần e gửi bác file ạ
Ý là em muốn hỏi code trong vba thôi chứ không em dùng filter lọc dần ra cũng được ạ
Bài đã được tự động gộp:

Sao bạn không thêm 1 sheet mới để hiển thị kết quả. Sheet bạn chụp thì xem như là sheet Data chứa dữ liệu. Tại sheet mới này cách đơn giản dễ hiểu nhất là bạn đặt công thức = vị trí các ô bên sheet Data nhưng sẽ kèm theo mệnh đề If để loại trừ các số bạn chọn cho = 0 hoặc chỉnh không hiện số 0.
Dạ em muốn hỏi code về vba ấy ạ chứ bên workbook em có thể dùng filter với countif cũng hoạt động được
Bài đã được tự động gộp:

Nạp số đã chọn vào dictionary rồi duyệt qua các số để kiểm tra xem nó có chưa nếu có rồi thì xóa đi.
Bác cho em xin demo được không ạ
 

File đính kèm

  • Book1.xlsx
    9.3 KB · Đọc: 2
Upvote 0
Em muốn đưa dữ liệu ra không bao gồm bốn số đã chọn ở Range("A2 : D2") ạ
Dạ em lấy hình làm ví dụ thôi ạ nếu bác cần e gửi bác file ạ
Ý là em muốn hỏi code trong vba thôi chứ không em dùng filter lọc dần ra cũng được ạ
Bài đã được tự động gộp:


Dạ em muốn hỏi code về vba ấy ạ chứ bên workbook em có thể dùng filter với countif cũng hoạt động được
Bài đã được tự động gộp:


Bác cho em xin demo được không ạ
Chép thủ tục này vào module và cho chạy thử xem đã đúng ý chưa:

Mã:
Sub LoaiBoSo()
    Dim objDic As Object
    Dim c As Long, u As Long
    Dim arrFindCell, arrData
    Set objDic = CreateObject("Scripting.Dictionary")
    c = ActiveSheet.UsedRange.Columns.Count
    arrData = Range(Cells(2, 1), Cells(2, c)).Value
    arrFindCell = Range("A4:E4").Value
    u = UBound(arrData, 2)
    For c = 1 To u
        objDic(arrData(1, c)) = ""
    Next
    For c = 1 To 5
        objDic.Remove arrFindCell(1, c)
    Next
    Range("A6").Resize(, objDic.Count).Value = objDic.Keys
End Sub
 
Upvote 1
Giải pháp
Web KT
Back
Top Bottom