公式中的单元格引用

公式中的单元格引用

我的工作表 A2 中有以下公式:

=SUMPRODUCT((SUMIF('[Master.xlsx]CompositeAssets'!$C:$C,$W$2,'[Master.xlsx]Composite Assets'!L:L)*(SUMIF('[Master.xlsx]CompositeAssets'!$C:$C,$W$1,'[Master.xlsx]Composite Assets'!L:L))))

唯一的问题是,当我向下拖动公式时,我需要它引用主电子表格中的下一列。例如,我需要工作表的 A3 包含以下内容:

=SUMPRODUCT((SUMIF('[Master.xlsx]CompositeAssets'!$C:$C,$W$2,'[Master.xlsx]Composite Assets'!**M:M)***(SUMIF('[Master.xlsx]CompositeAssets'!$C:$C,$W$1,'[Master.xlsx]Composite Assets'!**M:M**))))

提前非常感谢!!!

答案1

这有点不雅,但请使用以下公式部分M:M

INDIRECT(SUBSTITUTE(ADDRESS(1,10+ROW(),4),"1","")&":"&SUBSTITUTE(ADDRESS(1,10+ROW(),4),"1",""))

并且当您向下移动行时,参考将会调整。

它根据您看到的使用 的计算获取单元格地址字符串ROW()。由于函数中使用“1”ADDRESS()表示行号,因此单元格地址字符串将始终对应于ROW()计算生成的列的第 1 行。“4”确保不存在美元符号(生成的地址是“相对的”),因此您只能获得列和行,并且由于行始终为“1”,因此SUBSTITUTE()可以轻松摆脱它,只留下计算中的字母列引用。

因此,您有一个字母列引用,其中不包含所有除以 26 以及MOD()您通常会看到的此类内容。

您需要一个范围,因此您执行两次并将&":" &中间的两部分连接起来,然后将它们包装起来INDIRECT()以使其成为“真实”的引用,而不仅仅是一个字符串。

如果看起来公式中的内容太多而您仍然无法理解,请创建一个对您有意义的命名范围,并将上面的公式部分作为其值,然后在工作表侧公式中使用命名范围。

您可以使用另一种提取方法来去掉“1”,例如:

=LEFT(ADDRESS(1,10+ROW(),4),LEN(ADDRESS(1,10+ROW(),4))-1)

但不管怎样它看起来都很丑……

的妙处ADDRESS()在于,它会毫不费力地返回任何合适的内容,因此其列参数“2522”毫不费力地返回“CTN”。很难争论!

哦……我不明白任何“*”字符的意义(除了一个,只有一个)。我甚至都不想猜。我的想法是放弃它们(除了一个)。

答案2

您可以使用抵消功能 :

=SUMPRODUCT((SUMIF('[Master.xlsx]CompositeAssets'!$C:$C,$W$2,OFFSET ('[Master.xlsx]Composite Assets'!L:L, 0,ROW()-2))...

相关内容