在值的第一个实例上插入行
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
我试图在第一个实例中插入一行,其中 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