excel - 我只想在找到某个单词/字符之前在列中选择一个范围
问题描述
我需要帮助来设置变量的范围。基本上,我有一列带有“如果”公式。公式中的结果返回“”或数字。这是我目前所拥有的。这将选择所有行,因为它在整个列的公式中“找到”“”。
Set rngEnd = wkLS.Columns(cLS).Find("").Offset(-1, 0)
考虑到“”仅显示在最后一个带有数字的单元格之后的行中,如何仅选择包含数字的范围?
解决方案
你的方式或提问不是我能看得更清楚......假设我明白你想问什么,请试试这个。代码可能看起来比它应该的更复杂,因为我不知道cLS
变量是如何声明的。如果它是 a Long
,代码会更简单。但它可以是一个字符串"A:A"
...
如果您需要从列的第一行到第一个空行的范围(使用Find
):
Set rngEnd = wkLS.Range(wkLS.Columns(cLS).Cells(1, 1).Address, wkLS.Columns(cLS).Find("").Offset(-1, 0).Address)
Debug.Print rngEnd.Address
如果您需要从列的第一行到最后一个空行的范围:
Set rngEnd = wkLS.Range(wkLS.Columns(cLS).Cells(1, 1).Address, wkLS.Cells(wkLS.Cells(wkLS.Rows.count, wkLS.Columns(cLS).Column).End(xlUp).Row, 1).Address)
如果您需要一个不连续的范围,只包含不为空的单元格,直到最后一个空行,但假设存在这样的空单元格,请使用下一个代码:
Dim wkLS As Worksheet, rngEnd As Range, cLS As Long
Set wkLS = ActiveSheet: cLS = 1 'for A:A column, change for yours
Dim c As Range, finalRange As Range
Set rngEnd = wkLS.Range(wkLS.Columns(cLS).Cells(1, 1).Address, _
wkLS.Cells(wkLS.Cells(wkLS.Rows.count, wkLS.Columns(cLS).Column).End(xlUp).Row, 1).Address)
For Each c In rngEnd.Cells
If c.Value <> "" Then
If finalRange Is Nothing Then
Set finalRange = c
Else
Set finalRange = Union(finalRange, c)
End If
End If
Next
Debug.Print finalRange.Cells.count, finalRange.Address