Xóa tất cả dữ liệu trừ những ô đã chọn trước

  • Thread starter digita
  • Ngày gửi
Liên hệ QC
D

digita

Guest
Chào các bạn,

Tôi đang tìm cách giải quyết 1 vấn đề bằng phương cách VBA. Khi chỉ muốn giữ lại 1 vài ô dữ liệu để dùng vào việc khác và những ô có dữ liệu nầy lại không cùng 1 vùng chung. Thí dụ sau khi chọn các ô A10, A52, A102, A147 để giữ lại & xóa tất cả các ô khác trong cột A trừ những ô trên.

Chia từng vùng để xóa như là

range("A1:A9; A11:A51 ....").Delete Shift:=xlUp​

Thì hơi lượm thượm & mất thì giờ. Làm cách nào chọn những ô không được chọn trong cột?

Xin cám ơn trước & mong nhận được sự giúp đở từ các chiến hữu VBA gần xa.

Mến
 
Chỉnh sửa lần cuối bởi điều hành viên:
/)/(ình có củ chuối nước, bạn thử xem , nha!

Mã:
Option Explicit[b]
Sub DeleteRngs()[/b]
 Dim Rng As Range, SRng As Range, LRng As Range
 Set LRng = Range("A1: N99")
 Set SRng = Union(Cells(5, 2), Cells(9, 3), Cells(7, 4))
 Application.ScreenUpdating = False
 For Each Rng In LRng
    If Intersect(Rng, SRng) Is Nothing Then Rng = ""
 Next Rng[b]
End Sub[/b]
 
Cám ơn anh Sa. Code của anh rất hay. Tuy nhiên vấn đề khá phức tạp ở chổ là người dùng được chọn bất cứ các ô nào tùy thích trong 1 cột. Vị trí các ô chọn bất định. Sau khi biết được những ô trên thì bước thứ 2 là chọn các ô không được chọn trong cột. Hay nói cách khác làm sao chọn các ô không được chọn trong cùng 1 cột.

Cho coi qua cái specialcell properties mà không có cái chức năng như trên.

Mong anh cùng các bạn nghiên cứu thêm. Cám ơn nhiều.

Mến
 
/)/(ình hiểu đề bài của Digita như sau:

(hắc không phải đơn zản như vầy, chứ Digita:

Người ta chọn một số ô ( VD "C19:C29"; "C45: C54", "C99") trên 1 cột ('C') , (mà cột này chứa dữ liệu từ ô 'C5:C4321')
(/ậy nhiệm vụ đề ra là xóa dữ liệu trong cột 'C' chừa lại các ô mà người dùng đã chọn trước nêu trên (?)

--=--
 
Không anh ạ. Vì người dùng có thể chọn bất cứ ô nào ở bất cứ hàng nào trong sheet nên không thể dùng cách hard coding trong trường hợp nầy.

Sáng nay tôi đã viết xong cái code giải quyết chuyện này & chia sẽ cho mọi người cùng tham khảo. Trước hết chúng ta chạy code này để có dữ liệu mẩu:

Sub FillData()
With Range("A1:F" & Cells.Rows.Count)
.Formula = "=row()&column()"
.Value = .Value
End With
End Sub

Xong nhấn nút ctrl và dùng chuột chọn bất cứ ô nào bao nhiêu tùy thích trong cùng 1 cột. Cho dù sheet có dầy đặc data đến cỡ nào, code sau đây xóa hết các dòng có ô không được chọn trong tíc tắc:

Sub ShowSelectedRows()
Selection.EntireRow.Hidden = True
Cells.SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
Cells.EntireRow.Hidden = False
Cells(1, ActiveCell.Column).Select
Range(ActiveCell, ActiveCell.End(xlDown)).Interior.ColorIndex = 6
End Sub

Mến
 
Web KT
Back
Top Bottom