2012-09-07 240 views
0

我有一個Excel表格,其中第一個字段是一個ID。我想循環查看第一列是否匹配。VBA循環Excel表格列

問題是如何實現這個,因爲我不知道結束範圍。

在此先感謝!

回答

3

另外,您可能需要使用查找和FindNext中

'Here you might want to deduce the range using .End(xlUp).Row with 
'65,535 in 2003- or about 1,000,000 as a starting point in 2007+ 
With Worksheets(4).Range("A:A") 
    Set rng = .Find What:="what you're looking for" 
    While Not rng Is Nothing 
     'do something 
     Set rng = .FindNext(rng) 
    Wend 
End With 

(未經測試,但它不應該是硬,使其工作)

+0

非常優雅的解決方案。這個方法也會很快,因爲你使用內置的編譯Excel函數(.Find),而不是迭代循環和比較哪個更慢。 –

1

一些更多的研究後,我找到了答案:

For Each c In Worksheets(4).Columns("A").Cells 

我用「工作表(4)」,因爲該表是在工作表4

+0

不錯的解決方案,但我可以補充說,這對小規模問題最有用。如果應該有人使用這個,並且在想「爲什麼這麼慢」 - >因爲你正在使用單元格。如果你需要更快的解決方案,你將不得不使用數組或其他棘手的方法;) – Jook

0

呦你可以遍歷表中任何列的單元而不需要行數。如果該表是在工作簿的Sheet:

Dim rngCol as Range 
Dim cl as Range 
Set rngCol = Sheet1.Range("TableName[ColumnName]") 
For Each cl in rngCol 
    perform match of some type 
Next cl 

只通過數據值,不包括標題行和總計行以上將循環的代碼。沒有必要指定表中的行數。