gpt4 book ai didi

excel - 如果特定范围内的单元格全部为空,则删除整行

转载 作者:行者123 更新时间:2023-12-04 22:00:05 29 4
gpt4 key购买 nike

我想创建一个宏,如果特定范围内的所有单元格(10 行中的每一行中的 B 到 K)都为空,则该宏将删除整行。我尝试了以下方法:

Dim i As Integer
Dim rng As Range

For i = 1 To 10
Set rng = Range("B" & i, "K" & i).SpecialCells(xlCellTypeBlanks)
rng.EntireRow.Delete
Next i

如果后面有更多空单元格的行,比如说 1 和 2,它会删除第 1 行并移动第 2 行而不是删除的行,所以它变成第 1 行。然后它跳过移动的行,因为 i 总是增加所以它永远不会再次检查第 1 行。在移动到下一个 i 之前,有什么方法可以检查刚刚删除的行是否真的非空?

顺便说一句:我正在使用 Excel 2013。

最佳答案

为什么不使用特殊单元,而不是使用 CountA() ?

Sub t()
Dim i&

For i = 10 To 1 Step -1
If WorksheetFunction.CountA(Range("B" & i, "K" & i)) = 0 Then
Rows(i).EntireRow.Delete
End If
Next i
End Sub

这样,如果没有空格,您可以避免任何错误。此外,删除行时,建议从末尾开始,然后 Step -1到开始。

编辑:

也试试这个,它可能会更快:
Sub T()
Dim rng As Range

Set rng = Range("B1:K10") ' Since you're going to loop through row 1 to 10, just grab the blank cells from the start
rng.SpecialCells(xlCellTypeBlanks).EntireRow.Select ' Just to show you what's being selected. Comment this out in the final code
rng.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

我建议先用 F8 逐步完成,看看它是如何工作的。在 B1:K10 范围内,它将首先选择所有有空白单元格的行。然后,它将删除这些行。

关于excel - 如果特定范围内的单元格全部为空,则删除整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36703828/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com