Sub o()
Dim x As Integer
Dim y As Integer
For y = 2 To 2
For x = 1 To 600
If Cells(x, y).Value = "CD Sector Average" Then
Cells(x, y).EntireRow.Select
Selection.Insert Shift:=xlDown
Cells(x + 2, y).Select
End If
Next x
Next y
For y = 2 To 2
For x = 1 To 600
Next x
If Cells(x, y).Value = "CS Sector Average" Then
Cells(x, y).EntireRow.Select
Selection.Insert Shift:=xlDown
Cells(x + 2, y).Select
End If
Next x
Next y
For y = 2 To 2
For x = 1 To 600
Next x
If Cells(x, y).Value = "E Sector Average" Then
Cells(x, y).EntireRow.Select
Selection.Insert Shift:=xlDown
Cells(x + 2, y).Select
End If
Next x
Next y
End Sub
所以我要找的是它找到第一个值并添加上面的行然后继续搜索下一个值并添加一行。
它的作用是在第一个值之前插入行,直到它达到600范围,然后宏结束。
如何更改为只运行查找并插入一次,然后移动到下一个值来查找?
答案 0 :(得分:0)
问题是你的工作方向错误。使用循环,如果它在第5行(x = 5)中找到值,它将添加一行并移动找到值的行(在本例中为5到6)。当您的FOR循环迭代时,它会移动到下一行(x = 6)并找到我们刚刚移动的完全相同的行。
要解决这个问题,您需要向后工作。执行此类函数或删除特定行时,这始终是一种很好的做法。要向后工作,您只需要对FOR循环进行一些小改动。尝试将其更改为:
For x = 600 to 1 Step -1
这告诉Excel从600转到1,一次迭代-1,避免你遇到的问题。