如果两个数字之间的差值为>;excel中的值是否大于0?

如果两个数字之间的差值为>;excel中的值是否大于0?,excel,vba,insert,rows,Excel,Vba,Insert,Rows,我有一个简单的excel表格,我想在特定行之后插入n行数 例如: 如果B和C列的差值大于0,我想插入n行数 要插入的列数就是这两个单元格之间的差异 但是(如果可能的话)希望将D列中的数字增加插入的单元格数量,但我不这样做;我不知道用什么配方 我在VBA中做过一点宏,但我没有任何VBA的经验,我只能做第一行,不能向下复制行,只需插入必要的行数 我的代码: Sub insertCells() Dim x As Long c = Range("C1").Value Dim

我有一个简单的excel表格,我想在特定行之后插入
n
行数

例如:

如果
B
C
列的差值大于0,我想插入
n
行数

要插入的列数就是这两个单元格之间的差异

但是(如果可能的话)希望将
D
列中的数字增加插入的单元格数量,但我不这样做;我不知道用什么配方

我在VBA中做过一点宏,但我没有任何VBA的经验,我只能做第一行,不能向下复制行,只需插入必要的行数

我的代码:

Sub insertCells()

    Dim x As Long
    c = Range("C1").Value

    Dim id As Long
    id = Range("A1").Value + 1

    Dim y As Long
    b = Range("B1").Value

    Dim i As Long
    i = c - b

    Do Until i = 0
        Rows(id).Insert Shift:=xlToRight
        i = i - 1
    Loop
End Sub
第一张图片是宏之前的单元格的外观

第二个问题是,如果宏被执行,单元会是什么样子

这就是你的意思吗

Sub Main()
Application.ScreenUpdating = False
    lastRow = Range("A" & Rows.Count).End(xlUp).Row ' finding last row used

    For i = lastRow To 1 Step -1 ' iterating from last row to 1st
        difference = Range("B" & i) - Range("C" & i) ' calculating the difference
        If difference < 0 Then ' if difference meets your criteria
            For j = difference To -1 ' how many rows to insert
                Rows(i).Copy ' copy the origin
                Range("A" & i + 1).Insert Shift:=xlDown ' insert the copied row
                Range("D" & i + 1) = Range("D" & i + 1) + Abs(j) ' increment column D
            Next
        End If
    Next

Application.CutCopyMode = False
End Sub
Sub-Main()
Application.ScreenUpdating=False
lastRow=Range(“A”&Rows.Count)。End(xlUp)。Row“查找使用的最后一行”
对于i=lastRow到1步骤-1'从最后一行迭代到第一行
差异=范围(“B”和i)-计算差异的范围(“C”和i)
如果差异小于0,则“如果差异符合您的标准
对于j=差到-1'要插入多少行
行(i).复制“复制原点”
范围(“A”&i+1)。插入移位:=xlDown'插入复制的行
范围(“D”和i+1)=范围(“D”和i+1)+Abs(j)增量列D
下一个
如果结束
下一个
Application.CutCopyMode=False
端接头
以前

之后

这就是你的意思吗

Sub Main()
Application.ScreenUpdating = False
    lastRow = Range("A" & Rows.Count).End(xlUp).Row ' finding last row used

    For i = lastRow To 1 Step -1 ' iterating from last row to 1st
        difference = Range("B" & i) - Range("C" & i) ' calculating the difference
        If difference < 0 Then ' if difference meets your criteria
            For j = difference To -1 ' how many rows to insert
                Rows(i).Copy ' copy the origin
                Range("A" & i + 1).Insert Shift:=xlDown ' insert the copied row
                Range("D" & i + 1) = Range("D" & i + 1) + Abs(j) ' increment column D
            Next
        End If
    Next

Application.CutCopyMode = False
End Sub
Sub-Main()
Application.ScreenUpdating=False
lastRow=Range(“A”&Rows.Count)。End(xlUp)。Row“查找使用的最后一行”
对于i=lastRow到1步骤-1'从最后一行迭代到第一行
差异=范围(“B”和i)-计算差异的范围(“C”和i)
如果差异小于0,则“如果差异符合您的标准
对于j=差到-1'要插入多少行
行(i).复制“复制原点”
范围(“A”&i+1)。插入移位:=xlDown'插入复制的行
范围(“D”和i+1)=范围(“D”和i+1)+Abs(j)增量列D
下一个
如果结束
下一个
Application.CutCopyMode=False
端接头
以前

之后

这就是你的意思吗

Sub Main()
Application.ScreenUpdating = False
    lastRow = Range("A" & Rows.Count).End(xlUp).Row ' finding last row used

    For i = lastRow To 1 Step -1 ' iterating from last row to 1st
        difference = Range("B" & i) - Range("C" & i) ' calculating the difference
        If difference < 0 Then ' if difference meets your criteria
            For j = difference To -1 ' how many rows to insert
                Rows(i).Copy ' copy the origin
                Range("A" & i + 1).Insert Shift:=xlDown ' insert the copied row
                Range("D" & i + 1) = Range("D" & i + 1) + Abs(j) ' increment column D
            Next
        End If
    Next

Application.CutCopyMode = False
End Sub
Sub-Main()
Application.ScreenUpdating=False
lastRow=Range(“A”&Rows.Count)。End(xlUp)。Row“查找使用的最后一行”
对于i=lastRow到1步骤-1'从最后一行迭代到第一行
差异=范围(“B”和i)-计算差异的范围(“C”和i)
如果差异小于0,则“如果差异符合您的标准
对于j=差到-1'要插入多少行
行(i).复制“复制原点”
范围(“A”&i+1)。插入移位:=xlDown'插入复制的行
范围(“D”和i+1)=范围(“D”和i+1)+Abs(j)增量列D
下一个
如果结束
下一个
Application.CutCopyMode=False
端接头
以前

之后

这就是你的意思吗

Sub Main()
Application.ScreenUpdating = False
    lastRow = Range("A" & Rows.Count).End(xlUp).Row ' finding last row used

    For i = lastRow To 1 Step -1 ' iterating from last row to 1st
        difference = Range("B" & i) - Range("C" & i) ' calculating the difference
        If difference < 0 Then ' if difference meets your criteria
            For j = difference To -1 ' how many rows to insert
                Rows(i).Copy ' copy the origin
                Range("A" & i + 1).Insert Shift:=xlDown ' insert the copied row
                Range("D" & i + 1) = Range("D" & i + 1) + Abs(j) ' increment column D
            Next
        End If
    Next

Application.CutCopyMode = False
End Sub
Sub-Main()
Application.ScreenUpdating=False
lastRow=Range(“A”&Rows.Count)。End(xlUp)。Row“查找使用的最后一行”
对于i=lastRow到1步骤-1'从最后一行迭代到第一行
差异=范围(“B”和i)-计算差异的范围(“C”和i)
如果差异小于0,则“如果差异符合您的标准
对于j=差到-1'要插入多少行
行(i).复制“复制原点”
范围(“A”&i+1)。插入移位:=xlDown'插入复制的行
范围(“D”和i+1)=范围(“D”和i+1)+Abs(j)增量列D
下一个
如果结束
下一个
Application.CutCopyMode=False
端接头
以前

之后


我知道“B”和“C”的区别是第一行是
10-13
,这是
-3
,这意味着它实际上低于
0
?这里有些东西很不清楚……我敢肯定,C总是比B高。读取排列时,通常从左向右读取。我不懂的是;一个数据库中不应该有5个值为2的记录吗?一个已经存在,加上15-11=4条额外记录。在我尝试的代码(我自己制作的代码)上,公式是C-B,如果数字
n
大于0,则插入
n
行。这个excel背后的想法是,你从D1单元格开始,每插入一行就添加1。每插入一行的A列是相同的:)我理解“B和C”之间的区别是第一行是
10-13
,这是
-3
,这反过来意味着它实际上低于
0
?这里有些东西很不清楚……我敢肯定,C总是比B高。读取排列时,通常从左向右读取。我不懂的是;一个数据库中不应该有5个值为2的记录吗?一个已经存在,加上15-11=4条额外记录。在我尝试的代码(我自己制作的代码)上,公式是C-B,如果数字
n
大于0,则插入
n
行。这个excel背后的想法是,你从D1单元格开始,每插入一行就添加1。每插入一行的A列是相同的:)我理解“B和C”之间的区别是第一行是
10-13
,这是
-3
,这反过来意味着它实际上低于
0
?这里有些东西很不清楚……我敢肯定,C总是比B高。读取排列时,通常从左向右读取。我不懂的是;不应该吗