我使用带有单选按钮的代码(参见最后一个代码)在行15中插入一个新行,它将旧数据向下推,同时将相同的公式复制到曾经存在的第15行(行中) 15)点击按钮之前。
单击按钮后,我可以在E15中输入3位数据,然后按Enter键,所有公式将根据在E15中输入的内容在第15行计算。
现在我喜欢代码的执行方式,但出于某种原因,CG15中的公式从
变为现实=IF(CF15=1,IF(CF15<>"",COUNTBLANK(INDEX(CF14:CF$14,MATCH(9.99999999999999E+307,CF14:CF$14)):CF15),""),"")
到
=IF(CF15=1,IF(CF15<>"",COUNTBLANK(INDEX(CF13:CF$14,MATCH(9.99999999999999E+307,CF13:CF$14)):CF15),""),"")
我无法弄清楚问题是否在CG15的代码或公式中 这是一个“测试”文件,下面是代码
Sub AddNewDrawing()
'
' AddNewDrawing Macro
'
'
Rows("15:15").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A16:ua16").Select
Selection.AutoFill Destination:=Range("A15:ua16"), Type:=xlFillDefault
Range("A15:ua16").Select
Range("E15").Select
Selection.ClearContents
End Sub
这可能是简单的修复,但我很难过。我需要公式保持不变而不是改变。
以下是有关每个代码的详细信息。 CF15列具有此公式,如果满足条件,则返回1.
=IF(COUNTIF($AW16:$CC18,O15),1,IF(COUNTIF($AW16:$CC18,P15),1,IF(COUNTIF($AW16:$CC18,Q15),1,"")))
列CG15具有此公式,用于计算CF15列中每个1之间的跳过(空白单元格)。 注意:CG $ 14有一个永久0(零),作为计数开头的占位符。
=IF(CF15=1,IF(CF15<>"",COUNTBLANK(INDEX(CF14:CF$14,MATCH(9.99999999999999E+307,CF14:CF$14)):CF15),""),"")
谢谢
答案 0 :(得分:1)
当您插入新行15时,CG15中的公式被下推到CG16,公式中引用第15行的相对地址(例如CF15)变为第16行(例如CF16)。
然而,像CF14一样小于15的相对地址不受行插入的影响。当您将公式从CG16“回填”到CG15时,它们都会受到影响,因此CF14:CF $ 14变为CF13:CF $ 14,就像CF16恢复到原来的CF15一样。
将公式更改为不受行插入或回填之间相对差异影响的值。
行相对CF14可以用CG15编写,
index(CF:CF, row()-1)
这就是你的公式,
=IF(CF15=1, COUNTBLANK(INDEX(CF$14:index(CF:CF, row()-1), MATCH(1e99, CF$14:index(CF:CF, row()-1))):CF15), text(,))