thecuong.n99
Thành viên mới
- Tham gia
- 16/8/22
- Bài viết
- 8
- Được thích
- 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.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
Tối ưu chi vậy? Ăn mày đòi xôi gấc.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 vì đam mê bác ơi. Em viết đoạn đổi dấu , thành ; mà ra kết quả nhưng không vừa ý. Nó không được như các chuyên gia. Viết xong lại đá đủ thứ, thế là lại chán.
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ả ạ.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.
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
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
Bạn định nghĩa "tối ưu" là gì?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ả ạ.
cảm ơn bác,e thấy cái này nó ẩn 1 phát đc luôn.É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
Thử cái Filter chưa?cảm ơn bác,e thấy cái này nó ẩn 1 phát đc luôn.
e chạy code thì nó báo lỗiThử cái Filter chưa?
Thay vì 636 dòng, test thử với 636000 biết nhau ngay