我对excel和vba的知识接近于零。 我试图做以下事情:
for each row in ActiveSheet.ListObjects("SheetPotatoData")
if cell (column 5):(row) value equals "potato"
do something with (column 2):(row)
如果您可以通过正确的语法来启发我,我将非常感激。
非常感谢!
答案 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