Hỏi cách dồn dữ liệu, xóa ô trống

Liên hệ QC

nguyendinhhien

Thành viên chính thức
Tham gia
6/11/07
Bài viết
60
Được thích
70
Các anh chị chỉ giúp em với! Có Code nào giải quyết giùm eM:
Em có file muốn dồn xóa các ô trắng trong file để dồn dữ liệu sang bên trái (file đính kèm), nhưng có thể dồn với 2 cột làm mốc được không?
Cụ thể là trong sheet "BBNT GD": các dữ liệu từ cột F đến cột T sẽ dồn sang các cột E, F....(xóa các ô trống trong khoản F đến T)
Dữ liệu từ cột U trở đi sẽ dồn lại bắt đầu từ cột U (xóa các ô trống trong cột U trở đi để dữ liệu liền mạch)
Em cám ơn!
 

File đính kèm

  • Book2.xlsx
    32.3 KB · Đọc: 43
Các anh chị chỉ giúp em với! Có Code nào giải quyết giùm eM:
Em có file muốn dồn xóa các ô trắng trong file để dồn dữ liệu sang bên trái (file đính kèm), nhưng có thể dồn với 2 cột làm mốc được không?
Cụ thể là trong sheet "BBNT GD": các dữ liệu từ cột F đến cột T sẽ dồn sang các cột E, F....(xóa các ô trống trong khoản F đến T)
Dữ liệu từ cột U trở đi sẽ dồn lại bắt đầu từ cột U (xóa các ô trống trong cột U trở đi để dữ liệu liền mạch)
Em cám ơn!

Nhờ giúp mà bạn giải thích sao khó hiểu quá:

- Vì cột E có dữ liệu, nếu xóa cột F:T thì dữ liệu cột U có cộng vào cột E hay không? Nếu cộng vào thì nối chuổi, nếu không cộng vào thì xóa từ cột E:T là xong, các cột từ U:AK nó sẽ dồn qua thay thế cho cột E:T vừa xóa, không lẽ đơn giản vậy sao? Hay còn vấn đề gì khác mà lời giải thích bạn của bạn tôi không hiểu?
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn đăng bài này tại đây là sai BOX rồi thì fải

Các anh chị chỉ giúp em với! Có Code nào giải quyết giùm eM:
Em có file muốn dồn xóa các ô trắng trong file để dồn dữ liệu sang bên trái (file đính kèm), nhưng có thể dồn với 2 cột làm mốc được không?
Cụ thể là trong sheet "BBNT GD": các dữ liệu từ cột F đến cột T sẽ dồn sang các cột E, F....(xóa các ô trống trong khoản F đến T)
Dữ liệu từ cột U trở đi sẽ dồn lại bắt đầu từ cột U (xóa các ô trống trong cột U trở đi để dữ liệu liền mạch)
Em cám ơn!

& với nội dung dồn (dời) dữ liệu, thì càng sai BOX do chuyện này chỉ có thể nhờ VBA mới làm được;

Dù sao cũng cần hỏi bạn thêm, là hình như bạn cần dời toàn bô cột dữ liệu sang cột "rỗng" chứ đâu fải dời từng ô sang ô "rỗng" trong dòng, fải không?
 
Upvote 0
Nhờ giúp mà bạn giải thích sao khó hiểu quá:

- Vì cột E có dữ liệu, nếu xóa cột F:T thì dữ liệu cột U có cộng vào cột E hay không? Nếu cộng vào thì nối chuổi, nếu không cộng vào thì xóa từ cột E:T là xong, các cột từ U:AK nó sẽ dồn qua thay thế cho cột E:T vừa xóa, không lẽ đơn giản vậy sao? Hay còn vấn đề gì khác mà lời giải thích bạn của bạn tôi không hiểu?
Đại ý nó là như thế này các anh chị xem giúp e với:
Untitled.jpg
 
Upvote 0
& với nội dung dồn (dời) dữ liệu, thì càng sai BOX do chuyện này chỉ có thể nhờ VBA mới làm được;

Dù sao cũng cần hỏi bạn thêm, là hình như bạn cần dời toàn bô cột dữ liệu sang cột "rỗng" chứ đâu fải dời từng ô sang ô "rỗng" trong dòng, fải không?
Vâng, lâu lâu e ko post bài nên sai box, các anh chị thông cảm hoặc chuyển box giùm em chứ đừng lỡ xóa ạ :(
 
Upvote 0
Vâng, lâu lâu e ko post bài nên sai box, các anh chị thông cảm hoặc chuyển box giùm em chứ đừng lỡ xóa ạ :(

ai dám đảm bảo cho đến khi chưa được dời sang Box khác chứ ... @!>><

Mã:
=IFERROR(INDEX(List;SMALL(IF(List<>""; COLUMN(List)-MIN(COLUMN(List))+1;"");COLUMNS($A$6:A6)));",")

Ctrl+Shift+Enter

pic.jpg
 

File đính kèm

  • a list ignoring blanks.xlsx
    33.1 KB · Đọc: 62
Upvote 0
Nếu vậy thì bạn chỉ việc xóa các cột cần xóa là được mà vẫn không ảnh hưởng đến hàm lấy dữ liệu trong các Cell trong bảng tính.
Mình muốn hỏi có thể lập code với yêu cầu ntn hay ko? Code viết ntn. Vì với dữ liệu ít thì xoá tay là ok, nhưng với dữ liệu vài nghìn dòng thì xoá thủ công chắc chết liền
 
Upvote 0
Mình muốn hỏi có thể lập code với yêu cầu ntn hay ko? Code viết ntn. Vì với dữ liệu ít thì xoá tay là ok, nhưng với dữ liệu vài nghìn dòng thì xoá thủ công chắc chết liền
Gieo thử 1 quẻ thế này coi đúng không.
HTML:
Sub DonDong()
Dim data1(), data2(), Res1(), Res2(), i, j, J1, J2
data1 = Range([E3], [B65536].End(3).Offset(, 3)).Resize(, 16).Value
data2 = Range([U3], [B65536].End(3).Offset(, 19)).Resize(, 16).Value
ReDim Res1(1 To UBound(data1), 1 To UBound(data1, 2))
ReDim Res2(1 To UBound(data2), 1 To UBound(data2, 2))
For i = 1 To UBound(data1)
   For j = 1 To UBound(data1, 2)
      If data1(i, j) <> "" Then
         J1 = J1 + 1
         Res1(i, J1) = data1(i, j)
      End If
      If data2(i, j) <> "" Then
         J2 = J2 + 1
         Res2(i, J2) = data2(i, j)
      End If
   Next
   J1 = 0: J2 = 0
Next
[E3].Resize(i - 1, UBound(data1, 2)) = Res1
[U3].Resize(i - 1, UBound(data2, 2)) = Res2
End Sub
 
Upvote 0
Sub DeleteBlankRows()

' Khai bao cac bien
Dim ColSelect, BegRow, EndRow, ColValue, Counter, i

' Xac dinh cot, dong can xu ly.

Counter = 0
For Each Item In Selection
If Counter = 0 Then
BegRow = Item.Row
ColSelect = Item.Column
Counter = Counter + 1
End If
EndRow = Item.Row
Next Item

'
For i = EndRow To BegRow Step -1

ColValue = Cells(i, ColSelect).Value

If ColValue = 0 Or Trim(ColValue) = "" Then

Cells(i, ColSelect).Select
Selection.EntireRow.Delete

End If

Next i

End Sub


Sub DeleteBlankColumns()

' Khai bao cac bien
Dim ColSelect, BegRow, EndRow, BegCol, EndCol, RowValue, Counter, i

' Xac dinh cot, dong can xu ly.

Counter = 0
For Each Item In Selection
If Counter = 0 Then
BegRow = Item.Row
BegCol = Item.Column
RowSelect = Item.Row
Counter = Counter + 1
End If
EndRow = Item.Row
EndCol = Item.Column

Next Item

'
For i = EndCol To BegCol Step -1

RowValue = Cells(RowSelect, i).Value

If RowValue = 0 Or Trim(RowValue) = "" Then

Cells(RowSelect, i).Select
Selection.EntireColumn.Delete

End If
Next i

End Sub

Untitled.jpg

Đại ý nó là như thế này các anh chị xem giúp e với:
View attachment 125846
 

File đính kèm

  • Book1.xlsm
    13.7 KB · Đọc: 40
Upvote 0
Web KT
Back
Top Bottom