这是我的公式:
=SUMIFS(INDEX($H:$J,,MATCH(Q$6,$H$3:$J$3,0)),INDIRECT($U$22),$O$3,INDIRECT($U$23),$O$4)
它只是一个使用 INDEX MATCH 动态查找列(Sum_Range)的 SUMIFS,然后我有一个 INDIRECT 来指示一组可能的列中的哪一列需要用作(Criteria_Range),这取决于一些先前的过滤器 - 下拉列表。
提前致谢!任何建议都非常感谢!
答案1
当然可以。不过……魔鬼藏在细节里。
首先,也是最重要的,为什么要将这两个值放入带有 的公式中INDIRECT()
?如果是因为用户直接将信息输入到引用的单元格中,那么您必须提供这一点。例如,您可能在电子表格中的某个地方有不同的单元格包含INDIRECT()
此处使用的 ,然后此公式可以引用这些单元格,以便用户交互照常进行,但此公式会丢失INDIRECT()
。或者,实际上,比起一些偏僻的单元格,您可以将它们放入 中Named Ranges
。
这看起来并不是一个问题,但是如果你想因为计算负载而替换它们,这并不能解决这个问题。其他方法将取决于用户输入以及在其他函数中使用它来构建此公式可以使用的引用的容易程度。最好的函数也是易失性的,这是有道理的,因此如果计算负载是重要因素,那么替换就没什么用了。
其次,如果没有重要的用户输入,那么你就高枕无忧了。没有直接影响它们的用户输入意味着这两个单元格中的字符串都是根据电子表格中的内容创建的,尽管可能会发生变化。因此,您可以将这些公式带入这个公式中,代替两个INDIRECT()
'。小菜一碟。确实存在一些陷阱,主要是Spill-
公式中的 ing 的工作方式,但我敢打赌这不是全新的,所以最后一个不会成为问题。(环境中生成的某些东西Spill
可以被另一个公式引用,并且可以很好地工作,但如果将其插入公式中,作为公式的一部分,就像我在几句话前提到的那样,就会失败。有些功能也会失败,但我敢打赌这里不会。
第三,电子表格中的其他地方是否依赖于函数引用的单元格?如果是这样(在开始之前你需要知道!),任何更改都必须以同样适用于它们的方式进行。可能很简单,只需将这些引用单元格的公式复制到所有受影响的单元格公式中,而不仅仅是这个公式。或者它可能更复杂,但可能不会比合并第一和第二条路径更复杂。
因此是的,你几乎肯定可以用一种或另一种方式来替换它们,而且不会有太多麻烦。
但是,还需要提到两个不太可能出现的问题领域。首先是 VBA。如果有宏会影响任何方面,则需要仔细考虑任何更改。第二个是FORMULATEXT()
:如果电子表格中的任何其他公式有可能使用该函数来获取公式中的文本并加以利用,则您需要在进行更改时考虑这种影响。两者都不太可能。第三个不太可能出现的问题是其他电子表格引用受影响的单元格,并且无法处理最简单的更改。