在Excel中选择变量范围内的所有非空白单元格VBA
问题描述:
我有Excel数据集。从列B开始,它具有从B3到连续的数据,这些数据周期性变大(例如,今天是B114,但明天数据可能扩展到B116)。单元格B中的数据处于连续状态,并且不会被删除。对于列B中的每一行连续数据,我也想选择列B-AG的行。但是,B之后的行没有连续的数据。在Excel中选择变量范围内的所有非空白单元格VBA
例如:从B3到B120有连续的数据。我想选择范围B3:AG120。
我在VBA中编写的代码无法正常工作。它在B120(在这个例子中)正确停止,但是,一旦它到达C-AG列中的非连续数据,它就会吓倒并且选择超过120的行。我不肯定为什么这个代码不工作,任何帮助都是非常感激!
为了记录,在工作表中几乎每个单元格中都有公式。然而,只有一些公式用数据填充单元格。我想选择每个单元格,而不管它是否填充了数据如果它在我的范围内。否则,我不想选择它。例如,过去的B120中有空单元,其中有公式。我不想将这些列入我的范围。但是,如果D40中有一个空单元格(在B3和AG120之间),我确实希望将其包含在选区中。
Dim LR As Long, cell As Range, rng As Range
With Sheets("Sortable(2)")
LR = .Range("B" & Rows.Count).End(xlUp).Row
For Each cell In .Range("B3:B" & LR)
If cell.Value <> "" Then
If rng Is Nothing Then
Set rng = cell
Else
Set rng = Union(rng, cell)
End If
End If
Next cell
rng.Select
End With
答
Dim lastVal As Range, sht As Worksheet
Set sht = Sheets("Sortable(2)")
Set lastVal = sht.Columns(2).Find("*", sht.Cells(1, 2), xlValues, _
xlPart, xlByColumns, xlPrevious)
Debug.Print lastVal.Address
sht.Range("B2", lastVal).Resize(, 32).Select 'select B:AG
+0
返回相同。我很高兴我可以吻你 - 我一直在这个问题上挣扎太久 – Megan
'.Range( “B” &Rows.Count).END(xlUp).Row'将计数细胞与公式。 – findwindow
是的,我意识到。这就是为什么它后跟一个if语句,如果它是空的,不会将它添加到范围内 – Megan
您是否尝试过使用cell.Text “”insead of cell.Value “”? – Absinthe