在值的第一个实例上插入行

insert line on first instance of of a value

我试图在第一个实例中插入一行,其中 y 列中的值高于 60。只有一行。

我做了一个循环来为 60 以上的任何内容插入多行,但我不需要这个。

很难改变这个

这是我得到的

     Dim Col As Variant
    Dim BlankRows As Long
    Dim LastRow As Long
    Dim i As Long
    Dim StartRow As Long

    

        Col = "Y"
        StartRow = 1
        BlankRows = 1

            LastRow = Cells(Rows.Count, Col).End(xlUp).Row

            Application.ScreenUpdating = False

            With ActiveSheet
 For i = LastRow To StartRow + 1 Step -1
 If .Cells(i, Col) > 60 Then
 .Cells(i, Col).EntireRow.Insert shift:=xlDown

    
 End If
 Next i
 End With
 Application.ScreenUpdating = True
 End Sub

一旦 true 完成,您可以使用 GoTo 跳过以下迭代。

Dim Col As Variant
Dim BlankRows As Long
Dim LastRow As Long
Dim i As Long
Dim StartRow As Long

        Col = "Y"
        StartRow = 1
        BlankRows = 1

            LastRow = Cells(Rows.Count, Col).End(xlUp).Row

            Application.ScreenUpdating = False

With ActiveSheet
 For i = LastRow To StartRow + 1 Step -1
 If .Cells(i, Col) > 60 Then
 .Cells(i, Col).EntireRow.Insert shift:=xlDown
Goto: Close
 End If
 Next i
 End With

Close
 Application.ScreenUpdating = True

 End Sub

您可以为此使用 Do 循环(2 个搜索方向变体):

Option Explicit

Sub InsertRowSearchDown()
    Dim out As Boolean, cl As Range
    
    Set cl = ActiveSheet.Range("Y1")    'start cell
    Do Until out                        'initially out=False
        If cl > 60 Then
            cl.EntireRow.Insert
            out = True
        Else
            Set cl = cl.Offset(1)       'move DOWN to the next row
            out = IsEmpty(cl)
        End If
    Loop
End Sub

Sub InsertRowSearchUp()
    Dim out As Boolean, cl As Range
    
    Set cl = ActiveSheet.Range("Y" & Rows.Count).End(xlUp)        'start cell
    Do Until out                            'initially out=False
        If cl > 60 Then
            cl.EntireRow.Insert
            out = True
        Else
            If cl.Row = 1 Then
                out = True
            Else
                Set cl = cl.Offset(-1)          'move UP to the previous row
            End If
        End If
    Loop
End Sub