當 Excel 中的兩列單元格中的值發生變化時,我想插入一行例如,F 列和 G 列,其中 F 的字串值為“Buy”和“Sell”,G 列的字串值為“D”和“S”。
我的代碼僅在一個列條件下創建一個空行,即當值更改時添加一個空行。
Sub InsertRowsAtValueChange()
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
For i = WorkRng.Rows.Count To 2 Step -1
If WorkRng.Cells(i, 1).Value <> WorkRng.Cells(i - 1, 1).Value Then
WorkRng.Cells(i, 1).EntireRow.Insert
End If
Next
Application.ScreenUpdating = True
End Sub
但是當列被排序并且最后一個值為“Buy” - “D” “Buy” - “S” “Sell” - “D” “Sell” - “S”時,代碼應該添加一行
該影像顯示了我正在努力實作的目標。代碼應該可以創建底層需求
uj5u.com熱心網友回復:
看起來很簡單,你只需要在你的 if 條件中添加一個 OR 子句:
Sub InsertRowsAtValueChange()
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
For i = WorkRng.Rows.Count To 2 Step -1
If WorkRng.Cells(i, 1).Value <> WorkRng.Cells(i - 1, 1).Value _
Or WorkRng.Cells(i, 2).Value <> WorkRng.Cells(i - 1, 2).Value Then
WorkRng.Cells(i, 1).EntireRow.Insert
End If
Next
Application.ScreenUpdating = True
End Sub
(我添加了“_”只是為了將其包裝到下一行以提高可讀性)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/384775.html
上一篇:遍歷列過濾時可見的資料
下一篇:Xlwings插入沒有格式的新行
