查找值并在 VBA 中插入一行

Find a Value and insert a row in VBA

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 范围,然后宏结束。

如何将其更改为仅 运行 查找并插入一次,然后移动到下一个值进行查找?

问题是你的工作方向错了。对于您的循环,如果它在第 5 行 (x = 5) 中找到值,例如,它将添加一行并将找到该值的行向下移动(在本例中从 5 到 6)。当您的 FOR 循环迭代时,它会移动到下一行 (x = 6) 并找到与我们刚刚移动的完全相同的行。
要解决此问题,您需要向后工作。在执行这样的功能或删除特定行时,这始终是一个好习惯。要向后工作,您只需要对 FOR 循环做一点小改动。尝试将其更改为:
For x = 600 to 1 Step -1
这告诉 Excel 从 600 到 1,每次迭代 -1,避免你看到的问题。