所以我有一张跟踪员工 生产环境 力的表 . 每行代表一天,每个人有四列 .
目前我在每周末有一行,为四列中的每一列提取“平均总数” . 我注意到,如果这个人因病假/休假而离开,那么计算错误,因为零或0%被计算到平均值 . 因此,我尝试修改公式,以使用“查找和替换”基于其他平均总计算一个% .
我的问题是我可以使用通配符'Find' =AVERAGE(D***:D***)
但是我无法弄清楚如何替换新公式中的行号而不必更改每行的行号 .
示例: Cell D6
的公式为 =AVERAGE(D1:D5)
. 我可以'Find'使用 =AVERAGE(D***:D***)
没有问题 . 我想用 =IF(ISERROR($B6/$A6),0,$B6/$A6)
替换它,但不必输入行号,这样我就可以'Replace All' .
这对大多数人来说可能是显而易见的,但我确实尝试在'Replace'字段中使用Wilcard,但它显然不起作用 . =IF(ISERROR($B***/$A***),0,$B***/$A***)
. 我也不能只将公式拖到其他行,因为公式只是每6-7行一次 .
我希望这是足够的信息,但如果我错过了一个细节,请告诉我 . 提前致谢!
1 回答
使用VBA可能会更容易 .
假设,根据您的示例,要替换的公式在D列中从D6开始,并且此范围内不存在包含单词AVERAGE的其他公式,您可以循环范围,如果在其中找到字符串AVERAGE cell.Formula,它将取代你所说的新公式 . 我已经简化了您的替换配方,因为您只需要一个ISERROR .
R1C1表示法的好处是您只需要说明一个替换公式,并且当放入单元格时它将正确应用(相对参考) . 此代码将进入标准模块,您可以按F5运行 .
通过使用searchRange.SpecialCells方法仅传递包含公式的范围中的单元格来传递类型参数xlCellTypeFormulas,从而进一步提高效率 .
类似于以下内容: