Loại bỏ dòng trống (1 người xem)

Liên hệ QC

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

quyennhi

Thành viên mới
Tham gia
10/11/08
Bài viết
30
Được thích
1
Tôi có file dữ liệu lớn khoảng 1500 dòng, trong đó có các dòng trống xen kẻ. Muốn loại bỏ nhanh các dòng trống phải làm thế nào? Mong các anh chị hướng dẫn.
 

File đính kèm

Bỏ dòng trống

Bạn có thể dùng AutoFilter.
 

File đính kèm

Tôi có file dữ liệu lớn khoảng 1500 dòng, trong đó có các dòng trống xen kẻ. Muốn loại bỏ nhanh các dòng trống phải làm thế nào? Mong các anh chị hướng dẫn.

Có mấy cách;
1. Dùng Autofilter lọc các khoảng Blank -> Delete Row
2. Dùng phím tắt:
Đặt trỏ vào bất cứ ô nào trong bảng tính -> Ctrl+Spacebar -> Ctrl+G -> Alt+S -> K
Sau đó nhấn Ctrl+"-" -> R -> OK
 
Có mấy cách;
1. Dùng Autofilter lọc các khoảng Blank -> Delete Row
2. Dùng phím tắt:
Đặt trỏ vào bất cứ ô nào trong bảng tính -> Ctrl+Spacebar -> Ctrl+G -> Alt+S -> K
Sau đó nhấn Ctrl+"-" -> R -> OK

Theo bạn dat_butmuc hướng dẫn câu thứ nhất thì tôi hiểu là chọn các ô trống, nhưng câu thứ 2 Sau đó nhấn Ctrl+"-" -> R -> OK ... thì tôi làm không được và không hiểu là lệnh gì? Ctrl + " -> tôi không thấy xuất hiện cửa sổ lệnh nào. Do trong dòng có chứa dữ liệu có 1 vài ô trống nên bị xoá nhầm dòng có dữ liệu luôn. Xin hỏi làm sao chọn được các dòng trống hoàn toàn. Xin dược hướng dẫn thêm . Cám ơn.
 
Theo bạn dat_butmuc hướng dẫn câu thứ nhất thì tôi hiểu là chọn các ô trống, nhưng câu thứ 2 Sau đó nhấn Ctrl+"-" -> R -> OK ... thì tôi làm không được và không hiểu là lệnh gì? Ctrl + " -> tôi không thấy xuất hiện cửa sổ lệnh nào. Do trong dòng có chứa dữ liệu có 1 vài ô trống nên bị xoá nhầm dòng có dữ liệu luôn. Xin hỏi làm sao chọn được các dòng trống hoàn toàn. Xin dược hướng dẫn thêm . Cám ơn.

- Ctrl+"-" có nghĩa là Phím Ctrl và phím - (dấu trừ) => là phím tắt dùng hiện cửa sổ delete (trong đó bạn muốn xóa ô, dòng, cột gì cũng được, ở trên phím R - được hiểu là Row
- Không muốn xóa nhầm dữ liệu thì chuyển trỏ lại một ô nào đó của cột cần xóa (chọn các dòng có chứa ô trống trong đó để xóa dòng...)
Tôi nghĩ bạn phải hiểu cấu trúc của dữ liệu bạn để xóa
Nhìn file của bạn nếu có cấu trúc như vậy tôi chỉ cần vài giây là xóa xong - kể cả mấy nghìn dòng,...
Thân,
 
Nhờ giúp giùm tôi vấn đề là: có 2 sheet (sheet1, sheet2), sheet1 có rất nhiều dòng (gồm cả công thức,...) nhưng có những dòng có giá trị trả về 0 hoặc "", tôi muốn copy giá trị từ sheet1 sang sheet2 với điều kiện loại bỏ dòng có giá trị trả về 0 hoặc "" mà không phải filter hay adv. filter. Pro ơi hãy giúp tôi nhé.
 
Bạn đưa con trỏ chuột vào dòng đầu tiên (tiêu đề bảng tính)
chọn chức năng data\filter\autofilter

lúc này nhấp chọn vào mũi tên một cột bất kỳ muốn lọc dữ liệu ví dụ cột "Tên Công Ty" chọn blank
thì bảng dữ liệu sẽ liệt kê ra các dòng mà có "tên công ty" là trống. Ta chỉ việc chọn các dòng này bằng cách nhấn vào kéo chuột trên thanh bên trái màn hình sau đó chọn delete. xongxuôôi bò chọn menu data\filter\autofilter thì bảng dữ liệu sẽ chỉ còn các dòng có tên công ty mà thôi.
Chắc bạn thấy cũng dể hiểu, dể làm phải không
 
Bài viết của bác dat_butmuc hay quá. hihi. Nhưng em vẫn chưa hiểu Ctr + G là lệnh gì. Bác cho em hỏi phím tắt đó có chức năng gì được ko ạ ?
 
Bài viết của bác dat_butmuc hay quá. hihi. Nhưng em vẫn chưa hiểu Ctr + G là lệnh gì. Bác cho em hỏi phím tắt đó có chức năng gì được ko ạ ?

Bạn cứ bấm phím tắt ấy sẽ tự biết thôi ---> Thí nghiệm để có câu trả lời thay vì phải hỏi (những vấn đề mà ta có thể tự thí nghiệm)
 
Bài viết của bác dat_butmuc hay quá. hihi. Nhưng em vẫn chưa hiểu Ctr + G là lệnh gì. Bác cho em hỏi phím tắt đó có chức năng gì được ko ạ ?
Nói chung bài của anh DAT_butmuc muốn bạn vào hộp thoại Goto Special để chọn chức năng tìm ô trống sau đó chọn nó, sau đó chọn chức năng xóa dòng trống đã chọn
nếu bạn thực hành phím tắc không được tôi sẽ hướng dẫn thao tác cho bạn
Home->Find & Select -> goto special -> blank
sau đó chọn delete hàng là xong
 
Lần chỉnh sửa cuối:
Tôi có 1 cột gồm 10 dòng trong đó có một số dòng là tên người và một số dòng là số 0. Làm cách nào có thể lấy ra tên người từ danh sách đó và xếp chúng nằm trên các dòng kề nhau và bỏ đi những số 0. Vì tôi muốn làm tự động nên không dùng các công cụ sort hay filter. Ai biết xin chỉ giúp. Cảm ơn
 
Tôi có 1 cột gồm 10 dòng trong đó có một số dòng là tên người và một số dòng là số 0. Làm cách nào có thể lấy ra tên người từ danh sách đó và xếp chúng nằm trên các dòng kề nhau và bỏ đi những số 0. Vì tôi muốn làm tự động nên không dùng các công cụ sort hay filter. Ai biết xin chỉ giúp. Cảm ơn
Dùng công thức cũng được nếu số dòng ít.
Dùng VBA chạy "cái rẹt" là xong.
Hổng có file thì hổng làm được gì đâu.
 
Cảm ơn bạn, xin gửi file đính kèm nhờ bạn giúp
Nhìn cấu trúc File của bạn thì bạn không nên dùng VBA vì bạn sẽ không biết cách tùy biến, bạn nên sử dụng công thức. Bạn tham khảo công thức sau, kết thúc bằng tổ hợp 3 phím Ctrl + Shift + Enter
Mã:
=IF(ROW(1:1)<=COUNTIF($B$6:$B$15,"<>0"),INDEX($B$6:$B$15,SMALL(IF($B$6:$B$15<>0,ROW(INDIRECT("1:"&ROWS($B$6:$B$15))),""),ROW(1:1))),"")
 
Nhìn cấu trúc File của bạn thì bạn không nên dùng VBA vì bạn sẽ không biết cách tùy biến, bạn nên sử dụng công thức. Bạn tham khảo công thức sau, kết thúc bằng tổ hợp 3 phím Ctrl + Shift + Enter
Mã:
=IF(ROW(1:1)<=COUNTIF($B$6:$B$15,"<>0"),INDEX($B$6:$B$15,SMALL(IF($B$6:$B$15<>0,ROW(INDIRECT("1:"&ROWS($B$6:$B$15))),""),ROW(1:1))),"")
Cảm ơn bạn nhiều. Để tôi làm thử
 
Xóa những row có dữ liệu trong một column !!

Do CSDL của mình lớn(còn nhiều row & column)nên không thể xóa bằng cách chọn từng row mà xóa !!
nếu dùng filter thì minh nghĩ CSDL lớn nên không ổn
Mình thấy có cách xóa row trống:
ctrl+G-->blanks rất hay
còn cách nào khác không phải xóa row trống mà xóa row có dữ liệu(do dữ liệu trộn lại nên k có một quy tắc nào hết)
Mình đã dùngcủa Advanced Filter nhưng do CSDL lớn nên rất chậm và bị đứng máy !!
Mong các bạn chỉ giúp !!!

Have A Nice Day !!!
------------$$ % $$-------------
Thanks & Best Regards
Nguyễn Hữu Toàn
 

File đính kèm

Do CSDL của mình lớn(còn nhiều row & column)nên không thể xóa bằng cách chọn từng row mà xóa !!
nếu dùng filter thì minh nghĩ CSDL lớn nên không ổn
Mình thấy có cách xóa row trống:
ctrl+G-->blanks rất hay
còn cách nào khác không phải xóa row trống mà xóa row có dữ liệu(do dữ liệu trộn lại nên k có một quy tắc nào hết)
Mình đã dùngcủa Advanced Filter nhưng do CSDL lớn nên rất chậm và bị đứng máy !!
Mong các bạn chỉ giúp !!!

Have A Nice Day !!!
------------$$ % $$-------------
Thanks & Best Regards
Nguyễn Hữu Toàn
Tham khảo code (Enable Marco):
[gpecode=vb]
Sub Button1_Click()
Dim iR As Long
With Sheets("Sheet1")
For iR = Range("A65535").End(xlUp).Row To 2 Step -1
If Cells(iR, 2) = "" Or Cells(iR, 3) <> "" Then
Cells(iR, 1).EntireRow.Delete
End If
Next
End With
End Sub

[/gpecode]
 

File đính kèm

Tham khảo code (Enable Marco):
[gpecode=vb]
Sub Button1_Click()
Dim iR As Long
With Sheets("Sheet1")
For iR = Range("A65535").End(xlUp).Row To 2 Step -1
If Cells(iR, 2) = "" Or Cells(iR, 3) <> "" Then
Cells(iR, 1).EntireRow.Delete
End If
Next
End With
End Sub

[/gpecode]
Leo chọn dòng đủ điều kiện, gán vào mảng kết quả, đưa vào sheet sẽ nhanh hơn với dữ liệu lớn
Thân
 
Sort lại file !!

Cảm ơn bạn rất nhiều !!
chuẩn lắm--=0}}}}}
Cho mình hỏi thêm có CODE nào sort lại file đó không !!

Have A Nice Day !!!
------------$$ % $$-------------
Thanks & Best Regards
Nguyn Hu Toàn
 
Leo chọn dòng đủ điều kiện, gán vào mảng kết quả, đưa vào sheet sẽ nhanh hơn với dữ liệu lớn
Thân
Bác "con cò giả" xem chỗ nào chưa ổn thì sửa lại dùm em với:
[gpecode=vb]
Sub Sheet2_Button1_Click()
Dim sArr(), rArr()
Dim iR As Long, nR As Long, jR As Long
With Sheet2
Range("H2:I" & Range("H65535").End(xlUp).Row).ClearContents
sArr = Range("A2:C" & Range("A65535").End(xlUp).Row).Value
ReDim rArr(1 To UBound(sArr, 1), 1 To 3)
For iR = 1 To UBound(sArr, 1)
If sArr(iR, 2) <> "" And sArr(iR, 3) = "" Then
nR = nR + 1
For jR = 1 To 3
rArr(nR, jR) = sArr(iR, jR)
Next jR
End If
Next iR
Range("H2").Resize(nR, 3) = rArr
End With
End Sub
[/gpecode]
 

File đính kèm

Cách khác Dùng filter đi cho lẹ

[GPECODE=vb]
Sub CopyDK()
With Sheet2.Range("A1:C1000")
.AutoFilter 1, "<>"
.AutoFilter 3, "="
.Copy Range("G1")
.AutoFilter
End With
End Sub
[/GPECODE]
 
Xin hỏi: nếu dữ liệu tới mấy chục ngàn dòng thì Filter có ổn không? Tốc độ có nhanh hơn mảng không?
Cảm ơn!

Filter có hạn chế của nó là nếu dữ liệu nhiều mà không trùng lắp thì nó hiện được dữ liệu 10.000 dòng trong list như vẫn có thể dùng code được ví dụ dữ liệu anh muốn lấy nằm ở 2 dòng 65535 với 65536 đi thì chạy code trên hơi bị đuối ah
Nhân đây các bạn test dùm mình code này cũng để lấy dữ liệu bài trên mà sao máy mình bị báo lỗi
[GPECODE=vb]
With Range("C1:C12").SpecialCells(xlCellTypeBlanks)
.Offset(, -2).SpecialCells(xlCellTypeConstants, 23).Resize(, 3).Copy Range("G1")
End With
End Sub
[/GPECODE]

Báo lỗi chỗ Resize +-+-+-++-+-+-++-+-+-+
 
Chào bạn,

Mình đã áp dụng công thức của bạn trong trường hợp dòng có giá trị là 0 nằm trong cột cần lọc.
Nhưng mình có chút thắc mắc là nếu dòng chứa 0 nằm ở cột khác thì công thức trên không đúng cho lắm.
Nhờ bạn xử lý giúp trong trường hợp này.
Ví dụ
Cột A Cột B
ABC 2
CBD 0
FGH 1
..............
Kết quả trả về là
Cột A Cột B
ABC 2
FGH 1
.............
Cảm ơn bạn...
Nhìn cấu trúc File của bạn thì bạn không nên dùng VBA vì bạn sẽ không biết cách tùy biến, bạn nên sử dụng công thức. Bạn tham khảo công thức sau, kết thúc bằng tổ hợp 3 phím Ctrl + Shift + Enter
Mã:
=IF(ROW(1:1)<=COUNTIF($B$6:$B$15,"<>0"),INDEX($B$6:$B$15,SMALL(IF($B$6:$B$15<>0,ROW(INDIRECT("1:"&ROWS($B$6:$B$15))),""),ROW(1:1))),"")
 
Capture.PNG cả nhà làm ơn cho mình hỏi là để dồn đk các dòng trống như hình trên thì có các nào dùng hàm cho nhanh k ạ ?? k dùng đến công cụ !!!!
 

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

Back
Top Bottom