2016-07-06 199 views
0

我有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

回答

4
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

相關問題