2012-09-07 209 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 

只通过数据值,不包括标题行和总计行以上将循环的代码。没有必要指定表中的行数。