Excel VBA循环根据单元格值插入行

时间:2019-03-05 21:29:55

标签: excel vba row

我已经做了很多尝试以获得循环来执行此操作,但是我似乎无法使其正常工作。任何人都有我可以尝试的想法,这种方法行得通,但是代码非常混乱?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

Set KeyCells = Range("D2")

Range("D3:D23").ClearContents

If Range("D25").Value >= 2 Then Range("D3").Value = Range("D2").Value + 1
If Range("D25").Value >= 3 Then Range("D4").Value = Range("D3").Value + 1
If Range("D25").Value >= 4 Then Range("D5").Value = Range("D4").Value + 1
If Range("D25").Value >= 5 Then Range("D6").Value = Range("D5").Value + 1
If Range("D25").Value >= 6 Then Range("D7").Value = Range("D6").Value + 1
If Range("D25").Value >= 7 Then Range("D8").Value = Range("D7").Value + 1
If Range("D25").Value >= 8 Then Range("D9").Value = Range("D8").Value + 1
If Range("D25").Value >= 9 Then Range("D10").Value = Range("D9").Value + 1
If Range("D25").Value >= 10 Then Range("D11").Value = Range("D10").Value + 1
If Range("D25").Value >= 11 Then Range("D12").Value = Range("D11").Value + 1
If Range("D25").Value >= 12 Then Range("D13").Value = Range("D12").Value + 1
If Range("D25").Value >= 13 Then Range("D14").Value = Range("D13").Value + 1
If Range("D25").Value >= 14 Then Range("D15").Value = Range("D14").Value + 1
If Range("D25").Value >= 15 Then Range("D16").Value = Range("D15").Value + 1
If Range("D25").Value >= 16 Then Range("D17").Value = Range("D16").Value + 1
If Range("D25").Value >= 17 Then Range("D18").Value = Range("D17").Value + 1
If Range("D25").Value >= 18 Then Range("D19").Value = Range("D18").Value + 1
If Range("D25").Value >= 19 Then Range("D20").Value = Range("D19").Value + 1
If Range("D25").Value >= 20 Then Range("D21").Value = Range("D20").Value + 1
If Range("D25").Value >= 21 Then Range("D22").Value = Range("D21").Value + 1
If Range("D25").Value >= 22 Then Range("D23").Value = Range("D22").Value + 1

End If

End Sub

2 个答案:

答案 0 :(得分:0)

忽略更改事件的问题(这似乎是另一个问题,在此站点上进行搜索将为您提供所需的答案)。您需要查看逻辑模式。

假设D25只能是2到22之间的整数(包括2和22),请尝试:

Dim i as long
For i = 2 to Range("D25").Value
    Range("D" & i + 1).Value = Range("D" & i).Value + 1
Next i

也就是说,就像@ W-hit所说的那样,了解您要完成的工作会很有用,因为我们很可能在这里面临XY problem

答案 1 :(得分:0)

无循环(未经测试):

...
If Range("D25").Value >= 2 Then
    Range("D3").Resize(Int(Range("D25").Value) - 1).Formula = "=D$2 + (ROW() - 2)"
End If
相关问题