在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 
+0

'.Range( “B” &Rows.Count).END(xlUp).Row'将计数细胞与公式。 – findwindow

+1

是的,我意识到。这就是为什么它后跟一个if语句,如果它是空的,不会将它添加到范围内 – Megan

+0

您是否尝试过使用cell.Text “”insead of cell.Value “”? – Absinthe

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