Excel VBA-查找具有特定值的所有行并获取它们的行号
我几乎没有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”添
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