Dấu những dòng không có dữ liệu (1 người xem)

Liên hệ QC

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

nguyenvanvien

Thành viên mới
Tham gia
28/9/06
Bài viết
32
Được thích
43
Nhờ các thành viên GPE giúp tôi sử dụng VBA viết thủ tục dấu những dòng không có dữ liệu cụ thể như sau :
Trong côt A có một số dòng bất kỳ, tôi muốn có 1 thủ tục duyệt từ dòng 1 tới dòng cuối cùng, dòng nào mà tại cột A không có dữ liệu thì dấu (Hide) dòng đó đi (dòng nào có dữ liệu thì không dấu)
 
Có một cách nhanh hơn mà ko dùng VBA đó là bạn tạo một cột phụ kiểm tra điều kiện chứa dữ liệu của cột A (có thể là len(A1)>0 chẳng hạn) sau đó dùng auto filter cho cột phụ này.
 
Upvote 0
Có một cách nhanh hơn mà ko dùng VBA đó là bạn tạo một cột phụ kiểm tra điều kiện chứa dữ liệu của cột A (có thể là len(A1)>0 chẳng hạn) sau đó dùng auto filter cho cột phụ này.

Bạn dùng thử xem.
Mã:
Sub andong()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim dc
dc = [a65536].End(xlUp).Row
For Each Da In Range("a1:a" & dc)
If Da = "" Then
Rows(Da.Row).Hidden = True
Else
Rows(Da.Row).Hidden = False
End If
Application.ScreenUpdating = True
Next Da
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
 
Upvote 0
AutoFilter -> với cột cần lọc, chọn (NonBlanks)
 
Upvote 0
Nhờ các thành viên GPE giúp tôi sử dụng VBA viết thủ tục dấu những dòng không có dữ liệu cụ thể như sau :
Trong côt A có một số dòng bất kỳ, tôi muốn có 1 thủ tục duyệt từ dòng 1 tới dòng cuối cùng, dòng nào mà tại cột A không có dữ liệu thì dấu (Hide) dòng đó đi (dòng nào có dữ liệu thì không dấu)
Cho dù muốn dùng VBA hay không thì mình nghĩ giải pháp dùng AutoFilter là tối ưu nhất. Đây là 1 trong những thế mạnh của Excel.

TDN
 
Upvote 0
Cho dù muốn dùng VBA hay không thì mình nghĩ giải pháp dùng AutoFilter là tối ưu nhất. Đây là 1 trong những thế mạnh của Excel.

TDN
Nhất trí về quan điểm này! Và code sẽ là:
PHP:
Sub HideByAF()
  Dim Rng As Range
  Set Rng = Range("A1:A" & [A65536].End(xlUp).Row)
  Rng.AutoFilter 1, "<>", , , False
End Sub
Nhưng có 1 cách khác cũng nhanh không kém, đó là dùng SpecialCells
PHP:
Sub HideBySpec()
  Dim Rng As Range
  Set Rng = Range("A1:A" & [A65536].End(xlUp).Row)
  Rng.SpecialCells(4).EntireRow.Hidden = True
End Sub
Tốc độ chắc cũng = với AutoFilter chứ nhỉ
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Đêm về góp vui :
Ẩn những dòng không có dữ liệu trong cột A : Dùng Filter
PHP:
AutoFilterMode = False
Range("A1:A" & [A65536].End(xlUp).Row).AutoFilter 1, "<>", , , False
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Ẩn dòng bình thường và ẩn dòng bằng cách Filter là khác nhau chứ bác !!
Đúng vậy! Và tôi thấy có 1 chổ, đó là:
- Dòng bị ẩn bình thường có thể UnHide bằng cách Right click
- Dòng bị ẩn bằng AutoFilter (hoặc Advanced Filter) thì ko thể Unhide theo cách thông thường (có cố cũng ko dc)... mà phải Data\Filter\Show All
 
Upvote 0
Tôi xin bổ xung một điều là cho dù trước đó chúng ta dùng Hide để ẩn các hàng, nhưng nếu sau đó các bạn dùng AutoFilter rồi Show All (Excel 2003) hoặc Clear Filter (Excel 2007) thì các dòng ẩn trước đây đều sẽ hiện ra.

Vbavn
 
Upvote 0
Đúng vậy! Và tôi thấy có 1 chổ, đó là:
- Dòng bị ẩn bình thường có thể UnHide bằng cách Right click
- Dòng bị ẩn bằng AutoFilter (hoặc Advanced Filter) thì ko thể Unhide theo cách thông thường (có cố cũng ko dc)... mà phải Data\Filter\Show All
Nói thêm!
Dấu hiệu đơn giãn nhất để nhận biết các dòng đang được Hide bằng hình thức nào:
- Nếu các dòng được Hide bằng cách thông thường thì Font của STT dòng không có gì thay đổi
- Nếu các dòng được Hide bằng AutoFilter (hoặc Advanced Filter) thì Font của STT dòng biến thành màu xanh
Chính vì lẽ đó, có trường hợp các bạn nhận được 1 file của ai đó và nhìn thấy các dòng đang ẩn... các bạn cố tìm cách Unhide nó (Format\Row\Unhide) nhưng chẳng có tác dụng gì thì hãy nhìn xem STT dòng có bị biến thành màu xanh không? Nếu có, hãy nghĩ ngay đến Data\Filter\Show All
 
Upvote 0
Nói thêm!
Dấu hiệu đơn giãn nhất để nhận biết các dòng đang được Hide bằng hình thức nào:
- Nếu các dòng được Hide bằng cách thông thường thì Font của STT dòng không có gì thay đổi
- Nếu các dòng được Hide bằng AutoFilter (hoặc Advanced Filter) thì Font của STT dòng biến thành màu xanh
Chính vì lẽ đó, có trường hợp các bạn nhận được 1 file của ai đó và nhìn thấy các dòng đang ẩn... các bạn cố tìm cách Unhide nó (Format\Row\Unhide) nhưng chẳng có tác dụng gì thì hãy nhìn xem STT dòng có bị biến thành màu xanh không? Nếu có, hãy nghĩ ngay đến Data\Filter\Show All

Đây là mục Macro và VBA nên bác hãy nói luôn theo VBA để mọi người dễ tham khảo:-=
Thương thì cho trót-=.,,-=.,,

Thân!
 
Upvote 0
Đây là mục Macro và VBA nên bác hãy nói luôn theo VBA để mọi người dễ tham khảo:-=
Thương thì cho trót-=.,,-=.,,

Thân!
Vì có bài của Lệnh Hồ Đại Hiệp nói rằng:
Ẩn dòng bình thường và ẩn dòng bằng cách Filter là khác nhau chứ bác !!
Nên mình nói thêm 1 tí về cách phân biệt giữa 2 kiểu ẩn thôi mà
Chưa hiểu lắm ý của Mr Okebab ---> Thôi, nói về Excel thì bạn hiểu sâu hơn tôi, bạn nói luôn đi
 
Upvote 0
Vì có bài của Lệnh Hồ Đại Hiệp nói rằng:

Nên mình nói thêm 1 tí về cách phân biệt giữa 2 kiểu ẩn thôi mà
Chưa hiểu lắm ý của Mr Okebab ---> Thôi, nói về Excel thì bạn hiểu sâu hơn tôi, bạn nói luôn đi
Ý của em là :
Dấu hiệu đơn giãn nhất để nhận biết các dòng đang được Hide bằng hình thức nào:
thì nên :
Đây là mục Macro và VBA nên bác hãy nói luôn theo VBA để mọi người dễ tham khảo
Nghĩa là làm bằng VBA để nhận biết luôn bác ạ. Dĩ nhiên là sẽ có nhiều trường hợp.
Trình độ VBA của em dạo này tệ quá rồi, đang chạy theo bác đấy.
Thân!
 
Upvote 0
Ý của em là :
thì nên :
Nghĩa là làm bằng VBA để nhận biết luôn bác ạ. Dĩ nhiên là sẽ có nhiều trường hợp.
Trình độ VBA của em dạo này tệ quá rồi, đang chạy theo bác đấy.
Thân!
Ah tôi hiểu rồi...
Đang nghĩ đến hướng:
1> Nếu các dòng được ẩn bằng cách thông thường ---> Chưa nghĩ ra được cách nào khả thi (đương nhiên nếu dùng For thì không nói làm gì)
2> Nếu các dòng được ẩn bằng AutoFilter ---> Dùng ActiveSheet.FilterMode (FilterMode chứ không phải AutoFilterMode)
Mong được góp ý thêm!
 
Upvote 0
Còn ẩn 2 dòng thì chỉnh làm sao vậy. Mình làm hoài không được!
Private Sub CommandButton1_Click()
AutoFilterMode = False
Range("A1:b" & [A65536] & [b65536].End(xlUp).Row).AutoFilter 1, "<>", , , False
End Sub


Private Sub CommandButton2_Click()
AutoFilterMode = False
End Sub
 
Upvote 0
Đã ẩn dòng thì bạn cứ làm theo các hướng dẫn ở trên, chứ bạn viết vậy Excel làm sao hiểu nổi.
 
Upvote 0

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

Back
Top Bottom