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

Excel VBA-查找具有特定值的所有行并获取它们的行号,vba,excel,ms-office,Vba,Excel,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) 如果您能告诉我正确的语法,我将不胜感激 多谢各位 看这里: 看这里: 或者,只需将“.DataBodyRange.Rows”添

我几乎没有excel和vba方面的知识。 我试图做的是以下几点:

for each row in ActiveSheet.ListObjects("SheetPotatoData")
    if cell (column 5):(row) value equals "potato"
        do something with (column 2):(row)
如果您能告诉我正确的语法,我将不胜感激

多谢各位

看这里:

看这里:

或者,只需将“
.DataBodyRange.Rows
”添加到行“For…Each”结构的第一行末尾。您要求VBA迭代
列表对象
中的每个
,而不是
列表对象
中包含的
集合中的每个

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

最终代码将类似于:

For Each row In ActiveSheet.ListObjects("SheetPotatoData").DataBodyRows.Rows
    if row.Cells(1,5) = "potato"
        'Do something
    End If
Next
或者,只需将“
.DataBodyRange.Rows
”添加到行“For…Each”结构的第一行末尾。您要求VBA迭代
列表对象
中的每个
,而不是
列表对象
中包含的
集合中的每个

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

最终代码将类似于:

For Each row In ActiveSheet.ListObjects("SheetPotatoData").DataBodyRows.Rows
    if row.Cells(1,5) = "potato"
        'Do something
    End If
Next

谢谢你没有给我一个谷歌搜索的链接:)这正是我要找的!我只是简单地用ActiveSheet.ListObjects(“TableNameHere”).ListRows.Count替换了50,它现在在整个表上循环。更新了答案为
ActiveSheet.ListObjects(“TableNameHere”).ListRows.Count
谢谢你没有给我谷歌搜索的链接:)这正是我要找的!我简单地用ActiveSheet.ListObjects(“TableNameHere”).ListRows.Count替换了50,现在它在整个表上循环。更新了答案为
ActiveSheet.ListObjects(“TableNameHere”).ListRows.Count