Giúp Code sắp xếp lại hàng bỏ qua các dòng trống (1 người xem)

Liên hệ QC

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

congnguyen88

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
22/7/14
Bài viết
355
Được thích
31
Mình có 1 bảng tính excel dữ liệu nằm trong vùng B3:E24 , Nhưng trong vùng này người dùng thường xuyên xóa bỏ đi các hàng ( có dòng có dữ liệu, có dòng không có dữ liệu) mình muốn Click vào 1 nút bấm thì dữ liệu nằm trong vùng B3:E24 sẽ sắp xếp lại theo trật tự và bỏ qua các dòng trống.

* Lưu ý là sắp xếp lại bỏ qua các dòng trống, nhưng không được Ẩn dòng
* Điều kiện : Chỉ cần 1 ô của hàng cột C trống thì sắp xếp lại bỏ qua các dòng trống đó luôn
 

File đính kèm

Ố la la!
Đúng là ngắn vô địch, chỉ có 1 dòng lệnh.
Nhưng!
"Câu" cũng vô địch!

1/ Người ta hổng chịu xóa cả dòng, vì có thể trên những dòng đó ở các cột khác dữ liệu vẫn "còn xài được"
2/ Người ta phải hỏi lại: dữ liệu không phải cố định C3:C24 thì sao?
3/ Hu hu hu.......

Cái đồ quỷ này em offset rồi resize thì xoá ầm ầm chứ gì, hí hí. Cũng là 1 dòng thôi.
********
ý ý mà hình như cốc có xóa được anh ơi. Code nó không cho em resize mới tức chứ.
 
Lần chỉnh sửa cuối:
Upvote 0
Cái đồ quỷ này em offset rồi resize thì xoá ầm ầm chứ gì, hí hí. Cũng là 1 dòng thôi.
Nhưng cả bài của tôi và của Hải đều sai "tè lè"
Người ta còn có yêu cầu ghi lại STT liên tục kìa.
Hồi nãy tôi cũng không xem kỹ cột STT.
Chắc phải 2 dòng lệnh trở lên rồi.
Ẹc..
 
Upvote 0
Cái đồ quỷ này em offset rồi resize thì xoá ầm ầm chứ gì, hí hí. Cũng là 1 dòng thôi.
********
ý ý mà hình như cốc có xóa được anh ơi. Code nó không cho em resize mới tức chứ.

không resize được là đúng rui

Muốn code ngắn gọn 1 dòng thì thế này mới được

Mã:
Sub Trim1Cells()
    With [C5:C65000].SpecialCells(4): Union(.Offset(, -1), .Offset(0), .Offset(, 1), .Offset(, 2)).Delete xlUp: End With
End Sub


Người ta còn có yêu cầu ghi lại STT liên tục kìa.
..
Còn việc đặt thứ tự không thấy chủ topic nhắc tới, mà y.c này nghe lạ

Xoá dòng ô, sao chủ topic không tự khi macro???
 
Upvote 0
Hoặc phương án nữa ngắn gọn hơn

PHP:
Sub TrimCells()
    Intersect([C5:C65000].SpecialCells(4).EntireRow, [B:E]).Delete xlUp
End Sub

đảm bảo chỉ xóa trong vùng B:E
 
Upvote 0
Đúng là ngắn.....vô địch ( bởi vậy chưa có "dzợ"), nhưng nhìn em này "EntireRow.Delete" hình như ......trật "tè le hột me" rồi hay sao í
Híc
Em mà code cái vụ xóa dòng thì không chê vào đâu được nhá. Dùng For Next xóa trên mảng là nhanh nhấp nháy. Còn cái vụ ngắn...vô địch thì cũng không ngắn lắm ... đâu. Hic
 
Upvote 0
Em mà code cái vụ xóa dòng thì không chê vào đâu được nhá. Dùng For Next xóa trên mảng là nhanh nhấp nháy. Còn cái vụ ngắn...vô địch thì cũng không ngắn lắm ... đâu. Hic
Những dạng bài xóa dòng này có nhiều trên diễn đàn rồi:
1) Xóa trực tiếp trên sheet bằng vòng lặp
2) Dùng SpicialCells chọn những dòng nào thỏa thì "thịt" những thằng đó
3) Dùng vòng lặp, chọn em nào không thỏa, bỏ vào mảng, xong thì xóa bảng cũ, gán mảng xuống sheet
Híc, ai thích kiểu nào thì "chơi" kiểu đó
Còn vụ kia, khi nào lấy vợ như ku Tùng mình mới tin. Hihi
 
Upvote 0
Với dữ liệu như file của bạn.
Xoá hết các dòng phía dưới dòng 24, xoá hết Merge cells
PHP:
Public Sub GPE()
Range([B3], [B65536].End(xlUp)).Resize(, 4).Sort Key1:=[B3]
[B3].End(xlDown).Offset(1).Resize(100, 4).Clear
End Sub

Đúng ý của mình rồi mình Xin cảm ơn 1 tỷ lần
 
Upvote 0
Tính hỏng viết thêm nhưng thôi kệ bon chen với anh cho vui. Em code phải ngắn hơn cho anh tức coi chơi
Bảo đảm thằng này là ngắn vô địch luôn
PHP:
Sub xoaxoa()
[C3:C24].SpecialCells(4).EntireRow.Delete
End Sub

Code bạn khác với người ta bạn ak, người ta xóa dòng từ cot B đến cột F còn của bạn xóa hết các hàng đó luôn ( mình muốn các dữ liệu nằm bên phải hoặc bên trái của cột từ B đến F sẽ không duoc xóa )
 
Upvote 0
Upvote 0
Hoặc phương án nữa ngắn gọn hơn

PHP:
Sub TrimCells()
    Intersect([C5:C65000].SpecialCells(4).EntireRow, [B:E]).Delete xlUp
End Sub

Đúng roi, chính xác rồi anh... Anh có thể giải thich giúp em là SpecialCells(4). là gì dc hok
SpecialCells(4) tức là chọn C5:C65000 chọn Ctrl+G chọn blanks

Nếu không biết code chứ record ra cái nào không cần thì bỏ đây là code tôi record ra được vẫn đáp ứng yêu cầu bạn?

Mã:
Sub Macro2()
    
    
    Range("C3:C24").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.EntireRow.Delete
    
End Sub
 
Upvote 0
Hoặc phương án nữa ngắn gọn hơn

PHP:
Sub TrimCells()
    Intersect([C5:C65000].SpecialCells(4).EntireRow, [B:E]).Delete xlUp
End Sub

Đúng roi, chính xác rồi anh... Anh có thể giải thich giúp em là SpecialCells(4). là gì dc hok

4 là chọn ô Blank tương đương hằng số xlCellTypeBlanks

Chú ý thận trọng nên tôi để 65000, nếu dữ liệu của bạn nhiều nhất là tới dòng 1000, thì thay số đó bằng 1001 nhé cho nó gọn và nhanh hơn
 
Upvote 0
Web KT

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

Back
Top Bottom