我试图使用VBA在excel电子表格中的各行之间循环,仅使自己与第17列中的数据有关(因此,Cells(i,17).Value)。我想遍历第17列中的行,然后遍历该特定单元格中的各个字符,检查它们是否包含数字或句号。如果是这样,我想将它们添加到变量num中,然后,当我遍历单元格并到达末尾时,我想用num变量中存储的内容替换单元格的内容。然后,我转到下一行并重复直到遍历所有行。我相信到目前为止,我的代码都会做到这一点。
但是,由于我在行中循环的方式,我已经意识到自己遇到了问题。我循环通过的行没有连续编号,所以我的for循环从第1行开始,然后是2等。这引起了问题,因为我必须循环通过的数据没有连续编号,所以行号是:
1,182,477,480,620等。它们在物理上比另一个低,但在数值上并不如此,因此我在如何循环遍历没有连续行号的行方面感到吃力。
不好意思,这是我在这个论坛上的第一个问题,非常感谢您的帮助,我也是Visual Basic的新手,如果我的回答很愚蠢,对不起。
下面是我到目前为止的代码:
LastRow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
For i = 1 To LastRow
If Cells(i, 17).Value <> "Remaining Labor Units" Then
For CharCellCount = 1 To Len(Cells(i, 17).Value)
char = Mid(Cells(i, 17), CharCellCount, 1)
If char Like "[0-9]" Then
num = num + char
ElseIf char Like "." Then
num = num + char
End If
If CharCellCount = Len(Cells(i, 17).Value) Then
CharCellCount = 0
Cells(i, 17).Value = num
num = 0
End If
Next CharCellCount
ElseIf Cells(i, 17).Value = "Remaining Labor Units" Then
Cells(i, 17).Value = "Remaining Labor Units"
End If
Next i
End Sub
假设您实际上拥有一个过滤后的列表,该列表在当前状态下仅返回行1、182、477、480、620等,在这种情况下,您可以将for
行更改为以下内容:
For Each cell In Range(Cells(1, 17), Cells(Rows.Count, 17).End(xlUp)).SpecialCells(xlCellTypeVisible)
在这种情况下,你还需要改变你的引用,即cells(i, 17).value
只是cell.value
,改变next i
只next
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句