Excel VBA - 查找具有特定值的所有行并获取其行号

时间:2016-08-24 11:34:33

标签: excel vba excel-vba ms-office

我对excel和vba的知识接近于零。 我试图做以下事情:

for each row in ActiveSheet.ListObjects("SheetPotatoData")
    if cell (column 5):(row) value equals "potato"
        do something with (column 2):(row)

如果您可以通过正确的语法来启发我,我将非常感激。

非常感谢!

2 个答案:

答案 0 :(得分:3)

请看这里:http://www.excel-easy.com/vba/range-object.html

For i = 1 To ActiveSheet.ListObjects("TableNameHere").ListRows.Count
    If Cells(i,5).Value = "potato" Then
        Cells(i,2).Value = "New value"
    End If
Next

答案 1 :(得分:0)

或者,只需将“ .DataBodyRange.Rows”添加到“ For ... Each”结构行的第一行末尾。您要让VBA迭代Row中的每个ListObject,而不是Row集合中的每个Rows包含在{em 1}}。

这允许坚持使用更优雅,可读性和可靠性更高的“ For ... Each”结构,而不是获取范围边界并使用计数器对其进行遍历。使用列表的ListObject属性,您可以自动处理可能存在的任何抬头行,并且不将其包括在行检查循环中。如果要包含标题,则可以引用DataBodyRange集合。

最终代码如下:

ListObject.Rows