如果两个数字之间的差值为>;excel中的值是否大于0?
我有一个简单的excel表格,我想在特定行之后插入如果两个数字之间的差值为>;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
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高。读取排列时,通常从左向右读取。我不懂的是;不应该吗