macOS版Excel 16.8中跨工作表复制带工作表引用的公式时保持工作表相对引用的方法
嘿Geoff,这个问题我之前碰到好多次了,直接复制公式的话Excel确实不会自动帮你把前一个月的工作表引用更新成上一个工作表,得用点小技巧实现这种“跟着工作表顺序走”的相对引用效果。
给你两个在macOS Excel 16.8里亲测有效的方法:
方法一:用SHEET()+INDIRECT()动态生成上一个工作表引用
这个思路就是靠SHEET()函数拿到当前工作表在工作簿里的序号,减1就得到上一个工作表的位置,再用INDIRECT()把这个序号转成对应的工作表名称引用。
比如在三月的B2单元格,你可以输入这个公式:
=INDIRECT("'"&SHEET()-1&"'!B2")+A2
⚠️ 这里有个小要求:你的12个月份工作表必须严格按一月到十二月的顺序排列哦,因为SHEET()返回的是工作表的位置序号,顺序乱了的话引用就错了。
如果你的工作表名称是“January”“February”这种完整的英文月份名,也可以调整公式来匹配:
=INDIRECT("'"&TEXT(DATE(2020,SHEET(),1),"mmmm")&"'!B2")+A2
这个公式里,DATE(2020,SHEET(),1)用工作表序号当月份数生成日期,再用TEXT()转成英文月份全名,这样就能精准匹配你的工作表名称啦。
方法二:用OFFSET()函数基于当前工作表偏移引用
另一个更简单的方法是用OFFSET(),它能直接相对于当前工作表的位置向上偏移一个工作表来取数。公式是:
=OFFSET(Sheet!B2,-1,0)+A2
这里的Sheet!B2只是个占位的工作表引用,-1表示向上偏移1个工作表(也就是上一个月的表),0表示列不偏移。当你把这个公式复制到四月的B2时,它会自动指向三月的B2单元格,完全符合你的需求。
同样要注意,这个方法也要求工作表按月份顺序排列,不然偏移的结果就不对啦。
复制公式的时候,直接选中三月的B2拖填充柄到四月,或者用复制粘贴,这两个公式都会自动更新对应的上一个工作表引用,再也不用手动改啦!
备注:内容来源于stack exchange,提问作者Geoff B13

