Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 循环遍历范围并插入行_Excel_Vba - Fatal编程技术网

Excel 循环遍历范围并插入行

Excel 循环遍历范围并插入行,excel,vba,Excel,Vba,我在a列中有一个按标题分组的大型数据集。我想循环A10:A600,每次找到标题“US 1”时,在上面插入一个新行。然后我希望它继续循环到下一个实例,以此类推 我已经尝试了下面的代码,它查找值并插入行。但是,它会在第一个实例中不断插入无限多的行,而不是移动到“US 1”的下一个实例 我希望它在“US 1”的每个实例上方添加一行,但它仅在第一个实例上方添加无限行。这将起作用: Sub US_1() Dim i As Integer For i = 10 To 600 If Range("A"

我在a列中有一个按标题分组的大型数据集。我想循环A10:A600,每次找到标题“US 1”时,在上面插入一个新行。然后我希望它继续循环到下一个实例,以此类推

我已经尝试了下面的代码,它查找值并插入行。但是,它会在第一个实例中不断插入无限多的行,而不是移动到“US 1”的下一个实例

我希望它在“US 1”的每个实例上方添加一行,但它仅在第一个实例上方添加无限行。

这将起作用:

Sub US_1()

Dim i As Integer

For i = 10 To 600

 If Range("A" & i).Value = "US 1" Then
    Range("A" & i).EntireRow.Select
    Selection.Insert Shift:=xlDown
    i = i + 1
 End If

Next

End Sub

您正以正确的方式插入行,但在插入时,行向下移动,因此您的循环被卡在同一单元格上。

问题是,在读取A10并插入行后,程序会继续查找A11。但是A11是A10的内容现在所在的位置(因为它由于插入而向下移动)。尝试自己增加索引,如果插入一行,则再增加一个索引

Option Explicit

Sub test()

    Dim i  As Long

    'Change name if needed
    With ThisWorkbook.Worksheets("Sheet1")

        For i = 600 To 10 Step -1
            If .Range("A" & i).Value = "US 1" Then
                .Rows(i).EntireRow.Insert
            End If
        Next i
    End With

End Sub
Sub US_1()
    Set Rng = Range("A10:A600")
    For rowNr = Rng.Row To Rng.Row + Rng.Rows.Count - 1
        For colNr = Rng.Column To Rng.Column + Rng.Columns.Count - 1
            Set cell = Cells(rowNr, colNr)
            If cell.Value = "US 1" Then
                cell.EntireRow.Select
                Selection.Insert Shift:=xlDown
                rowNr = rowNr + 1
            End If
        Next colNr
    Next rowNr
End Sub


谢谢你的回复!当我输入以上内容时,我在cell.Value=“US 1”上得到一个类型不匹配错误-知道为什么吗?提前感谢在我的Excel中它工作正常。请尝试使用cell.Text=“US 1”也许这样可以
Sub US_1()
    Set Rng = Range("A10:A600")
    For rowNr = Rng.Row To Rng.Row + Rng.Rows.Count - 1
        For colNr = Rng.Column To Rng.Column + Rng.Columns.Count - 1
            Set cell = Cells(rowNr, colNr)
            If cell.Value = "US 1" Then
                cell.EntireRow.Select
                Selection.Insert Shift:=xlDown
                rowNr = rowNr + 1
            End If
        Next colNr
    Next rowNr
End Sub

Sub US_1()
    Dim rng As Range
    Dim cell As Range
    Dim LAstRow As Long

    Set rng = Range("A10:A600")
    LAstRow = 0
    For Each cell In rng.Cells
        If cell.Value = "US 1" Then
             If cell.Row > LAstRow Then
                 cell.EntireRow.Insert Shift:=xlDown
                 LAstRow = cell.Row
             End If
       End If
    Next cell
End Sub