我正在尋找運行檢測零值并洗掉特定行的 for 回圈。我遇到的問題是目標列是合并的單元格(合并了 2 行)。
下面的代碼有效,但只洗掉兩行中的第一行,而將另一行留在后面。如何展開 i 以包含下一行?
提前致謝。
Dim i As Long, Lr As Long
Lr = Range("A" & Rows.Count).End(xlUp).Row
For i = Lr To 1 Step -1
If Range("O" & i).Value = "" Then GoTo NextI
If Range("O" & i).Value = 0 And IsNumeric(Range("O" & i).Value) Then Rows(i).Delete
NextI:
Next i
uj5u.com熱心網友回復:
測驗合并
如果您有合并單元格和未合并單元格的混合,您可以使用Range.MergeCells屬性測驗合并性。
參考合并范圍
該Range.MergeArea屬性會給你從一個單細胞全合并范圍。因此 usingRange.MergeArea.EntireRow.Delete將洗掉合并單元格的所有行。
來自合并范圍的值:
我遇到的一個常見問題是嘗試測驗合并區域中單元格的值并獲取 Empty 或 Blank 值。這是因為只有合并區域的左上角單元格實際包含一個值,其他單元格為空。對于單個單元格,.MergeArea即使未合并也會回傳自身,因此通過合并和未合并的單元格的混合,您可以做Range.MergeArea.Cells(1).Value而Range.Value不用擔心測驗合并性。這將確保您獲得合并區域的顯示值而不是空白。
這是添加了這些想法的代碼:
Dim i As Long, Lr As Long
Lr = Range("A" & Rows.Count).End(xlUp).Row
For i = Lr To 1 Step -1
Dim val As Variant
With Range("O" & i)
val = .MergeArea.Cells(1).Value
If val = "" Then GoTo NextI
If val = 0 And IsNumeric(val) Then .MergeArea.EntireRow.Delete
End With
NextI:
Next i
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/392106.html
上一篇:連續數之和
下一篇:公司資料格式化
