Ẩn dòng bằng VBA.

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

thecuong.n99

Thành viên mới
Tham gia
16/8/22
Bài viết
8
Được thích
0
Xin chào ACE.
Em có 1 File ở Sheet Packing 8hr,em muốn ấn các dòng( row) từ A22:A636,những ô giá trị = 0
ACE cho em xin code VBA cho trường hợp này được không ạ.
thanks !
 

File đính kèm

  • Ẩn dòng.xlsm
    845.3 KB · Đọc: 8
1683883590766.png
Tạo một tài khoản chatGPT thì những phần này sẽ dễ dàng hơn bạn

Sub HideRowsWithValueZero()
Dim i As Long

For i = 22 To 636
If Range("A" & i).Value = 0 Then
Rows(i).EntireRow.Hidden = True
End If
Next i
End Sub
 
Upvote 0
View attachment 290091
Tạo một tài khoản chatGPT thì những phần này sẽ dễ dàng hơn bạn

Sub HideRowsWithValueZero()
Dim i As Long

For i = 22 To 636
If Range("A" & i).Value = 0 Then
Rows(i).EntireRow.Hidden = True
End If
Next i
End Sub
ChatGPT chỉ cho code chân phương nhất mà nó biết chứ không tối ưu. Trong trường hợp này phải union các dòng thỏa điều kiện vào 1 range, cuối cùng mới hide 1 lần cho cả range.
 
Upvote 0
ChatGPT chỉ cho code chân phương nhất mà nó biết chứ không tối ưu. Trong trường hợp này phải union các dòng thỏa điều kiện vào 1 range, cuối cùng mới hide 1 lần cho cả range.
Tối ưu chi vậy? Ăn mày đòi xôi gấc.

Người ta học tối ưu, hiệu quả là vì chuyện lâu dài. Ở đây chỉ là mấy cái chuyện chữa cháy. Miễn ra đúng kết quả là xong.
 
Upvote 0
@thecuong.n99 Bạn có thể tham khảo hàm UDF tự động ẩn dòng với nhiều điều kiện tại bài viết:

 
Upvote 0
ChatGPT chỉ cho code chân phương nhất mà nó biết chứ không tối ưu. Trong trường hợp này phải union các dòng thỏa điều kiện vào 1 range, cuối cùng mới hide 1 lần cho cả range.
Em biết tối ưu chắc chắn cần thiết cho hệ thống có dữ liệu lớn, nhưng em nghĩ là với nhu cầu của em và bạn hỏi đều là những người "ngoại đạo", cần giải quyết nhu cầu cấp bách trước mắt thì chat gpt vẫn là công cụ tương đối là hiệu quả ạ.
 
Upvote 0
Ép nó dùng UNION cũng được. Nhưng chỉ thắc mắc là vùng đã xác định từ 22:636 rồi mà nó còn đi tìm lastRow làm gì không biết?


1.JPG2.JPG

PHP:
Sub HideRowsWithZeroValue()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim rngToHide As Range
    Dim i As Long
    
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Replace "Sheet1" with your actual sheet name
    
    With ws
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row ' Find the last row in column A
        
        Application.ScreenUpdating = False ' Disable screen updating for faster execution
        
        For i = 6 To 636 ' Rows 6 to 636
            If .Cells(i, 1).Value = 0 Then ' Check if the value in column A is 0
                If rngToHide Is Nothing Then
                    Set rngToHide = .Rows(i)
                Else
                    Set rngToHide = Union(rngToHide, .Rows(i))
                End If
            End If
        Next i
        
        If Not rngToHide Is Nothing Then
            rngToHide.EntireRow.Hidden = True ' Hide the rows using the Union range
        End If
        
        Application.ScreenUpdating = True ' Enable screen updating
        
    End With
End Sub
Bài đã được tự động gộp:

Sau vài lần ép nó ra bã, yêu cầu GPT phải đi tìm phương án tối ưu, phương án cuối cùng nhanh nhất và tối ưu nhất là Filter
1.JPG2.JPG


PHP:
Sub HideRowsWithZeroValue()
    Dim ws As Worksheet
    Dim lastRow As Long
    
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Replace "Sheet1" with your actual sheet name
    
    With ws
        Application.ScreenUpdating = False ' Disable screen updating for faster execution
        
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row ' Find the last row in column A
        
        .Range("A6:A636").AutoFilter Field:=1, Criteria1:=0 ' Apply filter to column A with value 0
        
        If Application.WorksheetFunction.Subtotal(103, .Columns(1)) > 1 Then ' Check if any visible cells exist (excluding the header row)
            .Range("A7:A" & lastRow).SpecialCells(xlCellTypeVisible).EntireRow.Hidden = True ' Hide visible rows (excluding the header row)
        End If
        
        .AutoFilterMode = False ' Turn off the AutoFilter
        
        Application.ScreenUpdating = True ' Enable screen updating
    End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Em biết tối ưu chắc chắn cần thiết cho hệ thống có dữ liệu lớn, nhưng em nghĩ là với nhu cầu của em và bạn hỏi đều là những người "ngoại đạo", cần giải quyết nhu cầu cấp bách trước mắt thì chat gpt vẫn là công cụ tương đối là hiệu quả ạ.
Bạn định nghĩa "tối ưu" là gì?
Theo quan điểm quản lý, "tối ưu" thiên về hiệu quả (kết quả đúng, dễ kiểm soát). The quan điểm kỹ thuật thì tối ưu thiên về hiệu suất (tốc độ là một dạng hiệu suất)

Nếu bạn muốn đào sâu, đi vào cốt kiếc này nọ thì mới cần suy tính. Nếu không thì như hiện tại, bạn thấy Chat GPT "tương đối hiệu quả" thì chả có lý do gì phải suy tính. Cứ theo nó đến khii nào không thấy hiệu quả nữa thì tính cách khác.
 
Upvote 0
Ép nó dùng UNION cũng được. Nhưng chỉ thắc mắc là vùng đã xác định từ 22:636 rồi mà nó còn đi tìm lastRow làm gì không biết?


View attachment 290202View attachment 290203

PHP:
Sub HideRowsWithZeroValue()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim rngToHide As Range
    Dim i As Long
   
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Replace "Sheet1" with your actual sheet name
   
    With ws
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row ' Find the last row in column A
       
        Application.ScreenUpdating = False ' Disable screen updating for faster execution
       
        For i = 6 To 636 ' Rows 6 to 636
            If .Cells(i, 1).Value = 0 Then ' Check if the value in column A is 0
                If rngToHide Is Nothing Then
                    Set rngToHide = .Rows(i)
                Else
                    Set rngToHide = Union(rngToHide, .Rows(i))
                End If
            End If
        Next i
       
        If Not rngToHide Is Nothing Then
            rngToHide.EntireRow.Hidden = True ' Hide the rows using the Union range
        End If
       
        Application.ScreenUpdating = True ' Enable screen updating
       
    End With
End Sub
Bài đã được tự động gộp:

Sau vài lần ép nó ra bã, yêu cầu GPT phải đi tìm phương án tối ưu, phương án cuối cùng nhanh nhất và tối ưu nhất là Filter
View attachment 290204View attachment 290205


PHP:
Sub HideRowsWithZeroValue()
    Dim ws As Worksheet
    Dim lastRow As Long
   
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Replace "Sheet1" with your actual sheet name
   
    With ws
        Application.ScreenUpdating = False ' Disable screen updating for faster execution
       
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row ' Find the last row in column A
       
        .Range("A6:A636").AutoFilter Field:=1, Criteria1:=0 ' Apply filter to column A with value 0
       
        If Application.WorksheetFunction.Subtotal(103, .Columns(1)) > 1 Then ' Check if any visible cells exist (excluding the header row)
            .Range("A7:A" & lastRow).SpecialCells(xlCellTypeVisible).EntireRow.Hidden = True ' Hide visible rows (excluding the header row)
        End If
       
        .AutoFilterMode = False ' Turn off the AutoFilter
       
        Application.ScreenUpdating = True ' Enable screen updating
    End With
End Sub
cảm ơn bác,e thấy cái này nó ẩn 1 phát đc luôn.
 
Upvote 0
Web KT

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

Back
Top Bottom