我有一本工作簿,里面有汇总表和各种产品的多个选项卡。源选项卡表包含每月每一天销售的产品数据,每种产品都有不同的选项卡。汇总表目前使用 IF 语句根据月份的日期提取销售量。例如,如果是第 4 天,它将提取当天的销售额。以下是公式的片段
IF($D$1=4,'CM1'!$F3,IF($D$1=3,'CM1'!$E3,IF($D$1=2,'CM1'!$D3,IF($D$1=1,'CM1'!$C3))))
D 单元格引用指向日期编号,而 'CM1'!$F3 指向特定选项卡以及该选项卡上的单元格。选项卡引用当前硬编码为 CM1、CM2 或 CM3 等。
我想要做的是在摘要表上创建一个下拉列表,其中包含可以选择的各种选项卡,并让该值替换上述硬编码公式中的 CM1(或 CM2、CM3 等)。所有其他单元格引用将保持不变。实际公式非常长,因此一旦建立了正确的间接引用,我就想使用查找和替换。
答案1
使用 ADDRESS 函数为 INDIRECT 构建单元格地址。
'This:
IF($D$1=4,'CM1'!$F3,IF($D$1=3,'CM1'!$E3,IF($D$1=2,'CM1'!$D3,IF($D$1=1,'CM1'!$C3))))
'could be written as,
INDIRECT(ADDRESS(ROW(3:3), $D$1+2, 4, 1, "CM1"))
如果工作表名称的下拉菜单位于 C1 中,则变为,
INDIRECT(ADDRESS(ROW(3:3), $D$1+2, 4, 1, $C$1))
答案2
=INDIRECT("'"& CELL WITH DROP DOWN HERE &"''!$F3")
如果下拉单元格中有 CM2,则上述内容将计算为 ='CM2'!$F3。因此,如果 D1 是您想要的下拉位置,则可以使用:
=INDIRECT("'"& D1 &"''!$F3")
然后可以将其与任意数量的嵌套 IF 语句组合。
如果第 3 行需要动态并向下拖动,那么您可以使用(受 Jeeped Answer 启发):
=INDIRECT("'"& D1 &"''!$F"&ROW(3:3))