【问题标题】:VBA changes complex formulaVBA更改复杂公式
【发布时间】:2018-06-03 03:24:46
【问题描述】:

我使用带有单选按钮的代码(请参阅最后一个代码)在第 15 行中插入新行,这会将旧数据向下推,同时将相同的公式复制到曾经存在的第 15 行中(在行中) 15) 在点击按钮之前。

单击按钮后,我可以在 E15 中输入 3 位数据,然后按回车键,所有公式都会根据 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 中的代码还是公式中 这是一个“测试”文件,下面是代码

test sheet

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),""),"")

谢谢

【问题讨论】:

  • 我不明白=IF(CF15=1,IF(CF15&lt;&gt;"",... 部分。如果 CF15 为 1 那么它不能是 "" 那么第二个条件 (IF(CF15&lt;&gt;"", ) 是什么?
  • 这可能是多余的,但它是说,如果 CF15 中有 1 或其他任何内容(小于或大于空白“”)(不必严格为 1) , 然后条件的 coutntblank 等部分适用。也许公式的 CF15"" 部分不需要存在,因为至少对于计算而言,CF15 中只有 1。无论哪种方式都可以,但是插入新行会将 CF14 更改为 CF13,这是我不想要的

标签: vba excel excel-formula radio-button


【解决方案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(,))

【讨论】:

  • 完美的吉普车! TY
猜你喜欢
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 2013-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多