PDA

View Full Version : Xoá dòng, cột trống trong bảng tính excel



hoatuyettrang
19-06-2008, 16:13
Mượn bài viết của bạn hỏi về vấn đề này

Hôm nay tôi sẽ hướng dẫn với các bạn một số bước cơ bản để xóa ô trống (blank) trong Excel 2007 đến 2010.

Bước 1, các bạn mở bảng tính và nhấn Ctrl + A để chọn toàn bộ, hoặc chọn phần dữ liệu nhất định cần áp dụng:

[Only registered and activated users can see links]

Tiếp theo bạn nhấn F5, một hộp thoại ra hiện ra:

[Only registered and activated users can see links]

Bạn nhấn vào nút Special và xuất hiện hôp thoại sau, bạn chọn Blank rồi nhấn OK:

[Only registered and activated users can see links]

Sau đó, Excel sẽ lựa chọn tất cả các ô dữ liệu trống trong bảng tính, và để xóa bỏ thì các bạn nhấn [Ctrl] [-], hộp thoại Delete sẽ hiển thị, chọn tiếp Entire Row hoặc Entire Column để thay đổi các ô xung quanh và xóa bỏ ô dữ liệu trống:

[Only registered and activated users can see links]

Chúc mọi người thành công.





Các bác cho em hỏi với
Em muốn xoá mốt số dòng, cột trống(không có sô liệu) trên một bảng tính thì làm thế nào ạ; Xoá thủ công từng dòng một trong bảng tính thì lâu quá à!

SA_DQ
19-06-2008, 21:05
Trước tiên bạn chọn 1 cột làm chuẩn (có chứa những ô Blank và Non Blank) sau đó đánh dấu khối toàn bộ cột đó, ấn Ctrl+G (goto) --> Chọn Special --> Chọn Blanks. Sau đó ấn Ctrl+"-" -->Chọn Entire Row -->Ấn OK. Xong.

nguyenhuyen
03-07-2008, 15:41
cho em hoi mot van de.
ho ten la cot doc, ma cong doan la cac hang ngang, duoi ma cong doan la don gia (cung la hang ngang),ben duoi la cot so luong vay em muon tinh tong thanh tien em phai lam cong thuc nhu the nao mong cac anh chi dum.

bác này k chịu đọc nội quy diễn đàn jcả.:wall:

atmt17
28-09-2008, 20:22
Ví dụ xoá dòng nha:
-Quét 1 cột dử liệu, bấm Ctrl + G\Special\Bank rồi OK
-Click phải trên vùng vừa được chọn, chọn Delete\Entire row
Xoá cột tương tự
Nếu dùng macro để xoá thì cũng sẽ theo cách này, khỏi Filter

NamLamSon
28-09-2008, 20:36
Ví dụ xoá dòng nha:
-Quét 1 cột dử liệu, bấm Ctrl + G\Special\Bank rồi OK
-Click phải trên vùng vừa được chọn, chọn Delete\Entire row
Xoá cột tương tự
Nếu dùng macro để xoá thì cũng sẽ theo cách này, khỏi Filter

Híc nghe lời bác này là chít đó.
Vì sao ???? Cách làm của bác đó sẽ xoá đi tất tần tật những cell không có dữ liệu, chứ không phải là xoá đi những dòng không có dữ liệu àh.
Nếu làm theo cách này không cẩn thận thì dữ liệu của các bạn sẽ bị trộn tùm lum àh.

Cách này lại đơn giản và hiệu quả nếu làm thủ công

Bạn thử dùng Filter, lọc dòng Blanks, Delete...

atmt17
28-09-2008, 21:01
Híc nghe lời bác này là chít đó.
Vì sao ???? Cách làm của bác đó sẽ xoá đi tất tần tật những cell không có dữ liệu, chứ không phải là xoá đi những dòng không có dữ liệu àh.
Nếu làm theo cách này không cẩn thận thì dữ liệu của các bạn sẽ bị trộn tùm lum àh.

Đồng ý điều này, nên tôi mới nói là chọn 1 cột. Chọn cột nào là việc của bạn chứ!
Cách làm đơn giản đương nhiên có khiếm khuyết

VanHao
28-09-2008, 21:09
Các bác cho em hỏi với
Em muốn xoá mốt số dòng, cột trống(không có sô liệu) trên một bảng tính thì làm thế nào ạ; Xoá thủ công từng dòng một trong bảng tính thì lâu quá à!

Nếu chỉ xóa dòng trống thì dùng macro này thử xem :

Sub xoadong()
Range("A" & [A60000].End(xlUp).Row + 1) = 1
Cells(1, 1).Select
Set c = ActiveCell
Do While Not c.Offset(0, 0).Value = 1
If c.Offset(0, 0).Value = "" Then
Range(c.Offset(0, 0), c.Offset(0, 0)).Select
Selection.EntireRow.Delete
Set c = ActiveCell
Else
Set c = c.Offset(1, 0)
End If
Loop
End Sub

Gán cho macro một phím tắt và muốn xóa thì cứ việc nhấn phím.

QDuc
29-09-2008, 06:06
Nếu chỉ xóa dòng trống thì dùng macro này thử xem : Gán cho macro một phím tắt và muốn xóa thì cứ việc nhấn phím.
Xin lỗi trước, nhưng cách của VanHao tuy có vẻ Hàm lâm, nhưng sẽ chậm hơn cách duyệt các records từ dưới lên đầu;
Tất nhiên ta có thể không xóa ngay từng record; mà dùng phương thức UNION() để gom chúng lại & xóa một lúc.
Thân ái & vui vẽ!:wall:

atmt17
29-09-2008, 07:57
Nếu dùng VBA mà duyệt các cell từ trên xuống dưới thì có mà chậm rì rì! Dựa trên cơ sở AutoFilter\Blank chứ. Chỉ duyệt qua 1 dòng tiêu đề duy nhất
Ví dụ dử liệu của ta từ cột A đến cột H, dưới 1000 dòng, trong đó dòng 1 là dòng tiêu đề, vậy ta dùng code này sẽ nhanh hơn:


Sub XoaDongrong()
Dim Rng As Range
Set Rng = [A1:H1000]
Rng.AutoFilter
For i = 1 To Rng.Columns.Count
Rng.AutoFilter Field:=i, Criteria1:="="
Next
Rng.Offset(1).SpecialCells(12).EntireRow.Delete
ActiveSheet.AutoFilterMode = False
End Sub
Hoặc


Sub XoaDongrong()
Dim Rng As Range
Set Rng = [A1:H1000]
Rng.AutoFilter
For i = 1 To Rng.Columns.Count
Rng.AutoFilter Field:=i, Criteria1:="="
Next
Rng.SpecialCells(4).SpecialCells(12).EntireRow.Del ete
ActiveSheet.AutoFilterMode = False
End Sub

HongViet
29-09-2008, 08:16
Híc nghe lời bác này là chít đó.
Vì sao ???? Cách làm của bác đó sẽ xoá đi tất tần tật những cell không có dữ liệu, chứ không phải là xoá đi những dòng không có dữ liệu àh.
Nếu làm theo cách này không cẩn thận thì dữ liệu của các bạn sẽ bị trộn tùm lum àh.




Option Explicit
Sub DelBlankRows()
Dim Rng As Range, Clls As Range, dRng As Range

Set Rng = _
Sheet1.Columns("C:C").SpecialCells(xlCellTypeBlanks)
For Each Clls In Rng
If WorksheetFunction.Count(Clls.EntireRow) = 0 Then
If dRng Is Nothing Then
Set dRng = Clls.EntireRow
Else
Set dRng = Union(dRng, Clls.EntireRow)
End If
End If
Next Clls
dRng.Delete
End Sub

atmt17
29-09-2008, 08:20
Xét về mặt tốc độ thì vòng lập quét theo dòng vẩn chậm hơn rất nhiều so với quét theo cột.
Nếu dử liệu đầy đủ 256 cột, 65536 dòng thì vòng lập quét theo dòng sẽ chậm hơn 256 lần so với quét theo cột, đúng không?

DuongLanVi
25-11-2013, 10:03
Gom lại hết các dòng thỏa điều kiện (ở đây là: cột 'G:G' chứa ô trống) & xóa 1 lần



Sub XoaDong_OTrong()
Dim BlankRng As Range, Rng As Range, DelRng As Range
Set BlankRng = ActiveSheet.UsedRange.Columns("G:G").SpecialCells(xlCellTypeBlanks)
For Each Rng In BlankRng
If DelRng Is Nothing Then
Set DelRng = Rng
Else
Set DelRng = Union(DelRng, Rng)
End If
Next Rng
DelRng.EntireRow.Delete

End Sub

europlast
08-06-2014, 10:22
Ngoài cách dùng VBA còn cách nào không các bạn ?

QDuc
10-06-2014, 07:02
Làm thủ công đi bạn; Đường nào cũng đến La mã!