Xoá dữ liệu có điều kiện (1 người xem)

Liên hệ QC

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

trantuonganh2008

Thành viên thường trực
Tham gia
8/11/08
Bài viết
305
Được thích
53
Hi mọi người, Nhờ các bạn viết VBA dùm mình sao cho xoá dữ liệu nằm trong 2 đầu mút có text là "A" tại cột A ở tất cả các sheet VD: ở sheet 1, mình có dữ liệu từ A3:A10, với A3 & A10 có text là "A", mình muốn xoá dữ liệu từ A4 đến A9 (không xoá A3 & A10, chỉ xoá dữ liệu từ A4 đến A9 chứ không delete dòng). Ở sheet 2 thì dữ liệu từ A6:A20 với A6 & A20 có text "A" và cũng xoá dữ liệu tương tự như ở sheet 1 (xoá từ A7 đến A19). Cám ơn mọi người nhiều.
 
Lần chỉnh sửa cuối:
Trong các Ô cần xoá chỉ có dữ liệu là chữ A hay là một chuỗi text mà trong chuỗi text đó có chữ A.... Bạn nói rõ hơn thì mọi người mới giúp bạn
 
Upvote 0
Dữ liệu ở 2 đầu mút là dữ liệu ngày, mình căn cứ vào 2 đầu mút có dữ liệu "A" cho dễ nhận biết để xoá thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
2 đầu mút có dữ liệu bắt đầu là "Thang". Xin lưu ý là: 1 .
 
Lần chỉnh sửa cuối:
Upvote 0
Sorry mọi người. Mình xin nói lại. Lưu ý là: 1.
 
Lần chỉnh sửa cuối:
Upvote 0
1. Chỉ xoá dữ liệu chứ không xoá dòng. 2. Chỉ xoá dữ liệu nằm trong 2 đầu mút có text là "Thang". Dữ liệu bên dưới (chỉ có 1 đầu mút) thì không xoá.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
1. Chỉ xoá dữ liệu chứ không xoá dòng.
2. Chỉ xoá dữ liệu nằm trong 2 đầu mút có text là "Thang". Dữ liệu bên dưới (chỉ có 1 đầu mút) thì không xoá.
Bạn dùng thử code sau
PHP:
Sub XoaData()
Dim endR As Long, iR As Long
With Sheets("Sheet1")
  endR = .Cells(65000, 1).End(xlUp).Row
  For iR = 7 To endR
    If Left(.Cells(iR, 1), 5) <> "Thang" Then
        .Cells(iR, 1).ClearContents
    End If
  Next iR
End With
End Sub
 
Upvote 0
Giúp mình sửa lại code cho tất cả các sheet luôn ThuNghi ơi, mình thấy bạn làm chỉ có sheet1 thôi. Cám ơn bạn nhiều
 
Lần chỉnh sửa cuối:
Upvote 0
1. Chỉ xoá dữ liệu chứ không xoá dòng.
2. Chỉ xoá dữ liệu nằm trong 2 đầu mút có text là "Thang". Dữ liệu bên dưới (chỉ có 1 đầu mút) thì không xoá.
Thử vậy xem:
PHP:
Sub Test()
  Application.ScreenUpdating = False
  With Range([A3], [A65536].End(xlUp))
    .AutoFilter 1, "Thang*"
    With Intersect(.Cells, .Offset(1)).SpecialCells(12)
      With Range(Replace(.Address, ",", ":"))
        If .Rows.Count > 2 Then .Resize(.Rows.Count - 2).Offset(1).ClearContents
      End With
    End With
    .AutoFilter
  End With
  Application.ScreenUpdating = True
End Sub
Không chắc ăn lắm nhưng cứ test thử và cho biết kết quả nhé
 
Upvote 0
Chưa được bác ơi, vẫn chỉ xoá có sheet1 hà! Cám ơn bác nhiều!
 
Lần chỉnh sửa cuối:
Upvote 0
Chưa được bác ơi, vẫn chỉ xoá có sheet1 hà! Cám ơn bác nhiều!
Mèn ơi. Thêm 1 vòng lặp nữa.
PHP:
Sub XoaData()
Dim endR As Long, iR As Long
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
  With Sh
    endR = .Cells(65000, 1).End(xlUp).Row
    For iR = 1 To endR
      If Left(.Cells(iR, 1), 5) <> "Thang" Then
          .Cells(iR, 1).ClearContents
      End If
    Next iR
  End With
Next Sh
End Sub
 
Upvote 0
Hi ThuNghi, Mình thử lại thấy hơi khác với yêu cầu một chút. Dữ liệu chỉ được xoá khi nó nằm gói trong 2 đầu mút có text là "Thang", Nếu đầu này có text mà đầu kia không có thì không xoá. Còn code của bạn thì xoá sạch chỉ chừa lại text. Nhờ bạn giúp mình sửa lại nhé, cảm ơn nhiều!
 
Lần chỉnh sửa cuối:
Upvote 0
Hi ThuNghi,
Mình thử lại thấy hơi khác với yêu cầu một chút. Dữ liệu chỉ được xoá khi nó nằm gói trong 2 đầu mút có text là "Thang", Nếu đầu này có text mà đầu kia không có thì không xoá. Còn code của bạn thì xoá sạch chỉ chừa lại text. Nhờ bạn giúp mình sửa lại nhé, cảm ơn nhiều!
Bạn kiểm tra code của tôi tại bài #10 xem có đúng yêu cầu bạn chưa? Nếu đúng thì thêm 1 vòng lập duyệt qua các sheet nữa là xong!
 
Upvote 0
Bạn kiểm tra code của tôi tại bài #10 xem có đúng yêu cầu bạn chưa? Nếu đúng thì thêm 1 vòng lập duyệt qua các sheet nữa là xong!

Táy máy test thử thì thấy
+) Chỉ có sheet1 là code chạy tốt (dữ liệu có ở dòng 4)
+) Những sheet còn lại, dữ liệu bất đầu không ở dòng 4 nên sai tùm lum
Chưa được bác ơi, vẫn chỉ xoá có sheet1 hà! Cám ơn bác nhiều!
 
Upvote 0
Hân hạnh được tái ngộ master boyxin, lâu quá không gặp!!!
 
Lần chỉnh sửa cuối:
Upvote 0
Táy máy test thử thì thấy
+) Chỉ có sheet1 là code chạy tốt (dữ liệu có ở dòng 4)
+) Những sheet còn lại, dữ liệu bất đầu không ở dòng 4 nên sai tùm lum
Trời đất!
Code chạy được là do xác định được vị trí của dữ liệu cơ mà
Có code nào có thể chạy được với mọi dữ liệu đâu chứ ---> Thế nên người ta mới khuyên nhập liệu rõ ràng và chuẩn
------------------------
Vấn đề ở đây tôi cần xác định là: Code của tôi có đúng ý tác giả hay không? Nếu đúng thì mới làm tiếp
 
Lần chỉnh sửa cuối:
Upvote 0
1. Chỉ xoá dữ liệu chứ không xoá dòng.
2. Chỉ xoá dữ liệu nằm trong 2 đầu mút có text là "Thang". Dữ liệu bên dưới (chỉ có 1 đầu mút) thì không xoá.

Thử với code của ndu96081631 nhưng sửa lại tý xíu (có thêm 1 yêu cầu không được nhập dữ liệu vào dòng 1)

PHP:
Sub Test()
Dim Sh As Worksheet
    Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Worksheets
With Sh
  With Sh.Range(.[A1].End(xlDown).Offset(-1), .[A65536].End(xlUp))
    .AutoFilter 1, "Thang*"
    With Intersect(.Cells, .Offset(1)).SpecialCells(12)
      With Sh.Range(Replace(.Address, ",", ":"))
        If .Rows.Count > 2 Then .Resize(.Rows.Count - 2).Offset(1).ClearContents
      End With
    End With
    .AutoFilter
  End With
End With
Next
    Application.ScreenUpdating = True
End Sub
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom