dvh.hy.9902
Thành viên hoạt động
- Tham gia
- 27/3/12
- Bài viết
- 123
- Được thích
- 9
Nếu không có quy luật thì chỉ có cách làm thủ công thôi bạn.
[COLOR=#ffffff]
Option Explicit
Sub AnCacDongTrong()
Dim lRws As Long, lCol As Integer, J As Long
Dim hRng As Range, Cls As Range, WF As Object
Set WF = Application.WorksheetFunction
Set hRng = Rows("65500:65500")
If WF.CountA(Cells) > 0 Then
lRws = Cells.Find(What:="*", After:=[A1], _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
lCol = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
For J = lRws To 12 Step -1
If Cells(J, "G").Value = "" Then
If WF.CountBlank(Range(Cells(J, "K"), Cells(J, "AK"))) = 27 Then
Cells(J, "G").EntireRow.Hidden = True
Else
End If
End If
Next J
End If
End Sub
[/COLOR]
Nếu trống hết thì ẩn các cột đó đi. Trong file em còn tô màu thiếu dòng 77. Các anh chị giúp em code và 1 cái nút bấm; bấm vào thì ẩn những dòng này; bấm cái nữa thì không ẩn; em cảm ơn các anh chịtính từ cột F tới AK nếu trống hết thì tô màu , không kể cột J
có chứ anh , tính từ cột F tới AK nếu trống hết thì tô màu , không kể cột J
Em không thấy nút cảm đâu các anh ơi!. Đúng như anh doveandrose Nếu trống hết thì ẩn các cột đó đi. Trong file em còn tô màu thiếu dòng 77. Các anh chị giúp em code và 1 cái nút bấm; bấm vào thì ẩn những dòng này; bấm cái nữa thì không ẩn; em cảm ơn các anh chị
Hình như có 2ui luật mà, này nha:
Cần ẩn hàng nào mà các ô từ cột [K] đến cột [Ak] là trống (trãi) & cột [G] cũng i chang vậy!
Xin mời 'GiaiPhap' tiến tới đi nha!
Mã:[COLOR=#ffffff] Option Explicit Sub AnCacDongTrong() Dim lRws As Long, lCol As Integer, J As Long Dim hRng As Range, Cls As Range, WF As Object Set WF = Application.WorksheetFunction Set hRng = Rows("65500:65500") If WF.CountA(Cells) > 0 Then lRws = Cells.Find(What:="*", After:=[A1], _ SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row lCol = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious).Column For J = lRws To 12 Step -1 If Cells(J, "G").Value = "" Then If WF.CountBlank(Range(Cells(J, "K"), Cells(J, "AK"))) = 27 Then Cells(J, "G").EntireRow.Hidden = True Else End If End If Next J End If End Sub [/COLOR]
1 cách không dùng codeNhờ các anh chị giúp cho code hide và anhide các dòng không tuân theo quy luật (em tạm đánh dấu màu vàng để các anh chị dễ nhìn!.)
Xin cảm ơn các anh chị!.
(1)- Mong Các anh giúp cải thiện tốc độ cho code giúp em với, khi file nhiều dữ liệu, em bấm nó quay hoài rồi mới ẩn!.
(2)- Sử dụng 1 nút để bấm, làm sao em bấm vào thì ẩn, bấm phát nữa thì nó hiện ra. Cảm ơn các Anh nhiều!.
Cách xử lý đơn giản như dưới:- Mong Các anh giúp cải thiện tốc độ cho code giúp em với, khi file nhiều dữ liệu, em bấm nó quay hoài rồi mới ẩn!.
- Sử dụng 1 nút để bấm, làm sao em bấm vào thì ẩn, bấm phát nữa thì nó hiện ra. Cảm ơn các Anh nhiều!.
(1) Tại bạn không nói ngay từ đầu thôi, ráng chịu đi!. . . . ;
Mà bạn còn cái tội nữa là dữ liệu của mình mà không biết nó có 2ui luật để ẩn/hiện hay không nữa?!?
Làm người có nhã í giúp bạn fải lần mò miết còn gì!
(2) Cái ni làm thì có thể mần được, nhưng chờ tăng tốc cái đã!
Lần sau bạn đừng để mọi người chạy theo bạn như những cù lần nữa nha!
Cách xử lý đơn giản như dưới:
1. Thực hiện đếm các cell có data (sử dụng CountA) theo từng dòng từ cột A đến AK (kết quả có giá trị từ 1 -> 19)
2. Trường hợp kết quả ở mục 1 nhỏ hơn hoặc bằng 2 thì kiểm tra tiếp ở điều kiện 2.1
2.1 Trường hợp kết quả ở mục 1 bằng 2 và giá trị ở cell đầu tiên của dòng đang kiểm tra = empty ("") thì không làm gì
2.2 Trường hợp khác 2.1 thì kiểm tra tiếp điều kiện 2.3
2.3 Nếu dòng đang kiểm tra là ẩn thì bỏ thuộc tính ẩn của dòng (hiển thị dòng trên workshet),
Nếu dòng đang kiểm tra là không ẩn thì set thuộc tính ẩn bằng true (ẩn dòng trên workshet)
Nếu bạn đã sử dụng Hide_Unhide_.xlsm mà cũng không đáp ứng được tốc độ thì bạn nên tách data của bạn thành nhiều sheet nhỏ và thực hiện lần lượt.
Tôi đã sửa lại thành 1 nút để khi thực hiện bấm 1 lần sẽ ẩn dòng, bấm lần tiếp theo sẽ hiện dòng. Còn cách xử lý thì vẫn giữ nguyên.
Sub GPE()
Dim sCell As Range, MyRange As Range
For Each sCell In Range("J12", Range("J65000").End(xlUp))
If Application.WorksheetFunction.CountBlank(sCell.Offset(, 1).Resize(, 27)) = 27 And Range("G19").Value = Empty Then
If MyRange Is Nothing Then
Set MyRange = sCell
Else
Set MyRange = Union(MyRange, Rows(sCell.Row))
End If
End If
Next sCell
If Not MyRange Is Nothing Then MyRange.EntireRow.Hidden = Not MyRange.EntireRow.Hidden
End Sub
Theo quy luật ở #4 của ChanhTQ@ thì tôi làm cái code này bạn xem có đúng yêu cầu của mình hay chưa.
Mã:Sub GPE() Dim sCell As Range, MyRange As Range For Each sCell In Range("J12", Range("J65000").End(xlUp)) If Application.WorksheetFunction.CountBlank(sCell.Offset(, 1).Resize(, 27)) = 27 And Range("G19").Value = Empty Then If MyRange Is Nothing Then Set MyRange = sCell Else Set MyRange = Union(MyRange, Rows(sCell.Row)) End If End If Next sCell If Not MyRange Is Nothing Then MyRange.EntireRow.Hidden = Not MyRange.EntireRow.Hidden End Sub
Chắc sợ người khác biết được tuyệt chiêu của mình chăng?Bạn Hung86excel không giúp thì thôi, còn đã giúp giúp chia sẻ code luôn vậy.
Do While WorksheetFunction.[SIZE=4][COLOR=#ff0000]CountA[/COLOR][/SIZE](dataSheet.Range("A" & row & ":AG" & row)) <> 0
Trình độ của em chỉ có vậy, thầy có tuyệt chiêu chia sẻ em học hỏi với.Mọi tác động trực tiếp trên cell đều có thể giảm tốc độ tính toán, nhất là vơi dữ liệu lớn. Vậy nên bài này dùng vòng lập trên cell là quá dở
Bạn ấy giấu code mà thầy lại mở code để người khác thấy rồi kìa.Chắc sợ người khác biết được tuyệt chiêu của mình chăng?
Mã:Do While WorksheetFunction.[SIZE=4][COLOR=#ff0000]CountA[/COLOR][/SIZE](dataSheet.Range("A" & row & ":AG" & row)) <> 0
Sub HideRow()
Dim Darr(), rng As Range, i As Long, j As Integer
Darr = Range("G1:AK" & Range("J12").End(xlDown).Row).Value
tmp = False
On Error Resume Next
For i = 12 To UBound(Darr)
For j = 1 To UBound(Darr, 2)
If j <> 4 Then If Darr(i, j) <> "" Then GoTo Tiep
Next j
If rng Is Nothing Then
Set rng = Rows(i & ":" & i)
Else
Set rng = Application.Union(rng, Rows(i & ":" & i))
End If
Tiep:
Next i
rng.Select
Selection.EntireRow.Hidden = True
Set rng = Nothing
End Sub
Sub UnHideRow()
Cells.Select
Selection.EntireRow.Hidden = False
Range("E12").Select
End Sub
Chắc sợ người khác biết được tuyệt chiêu của mình chăng?
Mã:Do While WorksheetFunction.[SIZE=4][COLOR=#ff0000]CountA[/COLOR][/SIZE](dataSheet.Range("A" & row & ":AG" & row)) <> 0