Excel中如何引用另一单元格指向单元格的行号?
解决Excel公式随D列引用行号自动更新的问题
核心思路
提取D列单元格公式中引用的行号,在C、E列公式里动态调用对应行的单元格,实现复制整行后自动更新引用,无需手动修改行号。
步骤1:获取D列引用的行号
以D6为例,用以下公式提取它引用的单元格行号:
=ROW(INDIRECT(SUBSTITUTE(FORMULATEXT(D6),"=","")))
FORMULATEXT(D6):提取D6的公式文本(比如=R32)SUBSTITUTE(..., "=", ""):去掉公式开头的=,得到R32INDIRECT(...):把文本R32转换成单元格引用ROW(...):获取该引用单元格的行号(即32)
如果你的Excel版本不支持FORMULATEXT(2013及以后版本才支持),可以改用这个公式:
=--RIGHT(CELL("address",D6),LEN(CELL("address",D6))-FIND("$",CELL("address",D6),2))
步骤2:修改C列公式
以C6为例,把原公式=P32&" - "&Q32替换成:
=INDEX(P:P,ROW(INDIRECT(SUBSTITUTE(FORMULATEXT(D6),"=",""))))&" - "&INDEX(Q:Q,ROW(INDIRECT(SUBSTITUTE(FORMULATEXT(D6),"=",""))))
也可以用INDIRECT写法(效果一致):
=INDIRECT("P"&ROW(INDIRECT(SUBSTITUTE(FORMULATEXT(D6),"=",""))))&" - "&INDIRECT("Q"&ROW(INDIRECT(SUBSTITUTE(FORMULATEXT(D6),"=",""))))
步骤3:修改E列公式
以E6为例,把原公式=ROUNDUP(SUMIFS(S5:S101,P5:P101,P32,Q5:Q101,Q32,R5:R101,R32),0)替换成:
=ROUNDUP(SUMIFS(S5:S101, P5:P101,INDEX(P:P,ROW(INDIRECT(SUBSTITUTE(FORMULATEXT(D6),"=","")))), Q5:Q101,INDEX(Q:Q,ROW(INDIRECT(SUBSTITUTE(FORMULATEXT(D6),"=","")))), R5:R101,INDEX(R:R,ROW(INDIRECT(SUBSTITUTE(FORMULATEXT(D6),"=","")))) ),0)
使用说明
设置完成后,直接复制整行到新位置时:
- D列的新引用(比如D7=R45)会自动带入新行
- C、E列的公式会自动提取D列新的引用行号,同步更新对应的单元格引用,不用手动修改行号。
内容的提问来源于stack exchange,提问作者user31777219
相关产品推荐
相关产品推荐

