如何让INDIRECT公式绑定的区域按5列步长自动跨列填充
解决Excel跨列填充时按5列步长偏移引用区域的问题
直接给你适配后的公式(假设公式从B3单元格开始):
=IFERROR(AVERAGEIF(INDIRECT("'"&$A3&"'!"&CHAR(64+5+(COLUMN()-COLUMN($B3))*5)&"$143:"&CHAR(64+9+(COLUMN()-COLUMN($B3))*5)&"$143"), "<>0%"), NA())
公式关键部分解释:
COLUMN()-COLUMN($B3):计算当前列和公式起始列(B3)的差值,跨列填充时这个值会依次变成0、1、2...,用来控制偏移步长5+(COLUMN()-COLUMN($B3))*5:生成每组区域的起始列号,第一次是5(对应E列),第二次是10(对应J列),第三次是15(对应O列),刚好每次加59+(COLUMN()-COLUMN($B3))*5:生成每组区域的结束列号,第一次是9(对应I列),第二次是14(对应N列),第三次是19(对应S列),和起始列保持5列的跨度CHAR(64+列号):把数字列号转换成Excel的列字母(比如64+5=69,CHAR(69)=E),适配INDIRECT需要的文本格式
调整说明:
如果你的公式不是从B3开始,把公式里的COLUMN($B3)改成公式所在的起始单元格列即可(比如从C3开始就写COLUMN($C3))
特殊情况补充:
如果后续需要用到AA及以后的多字母列,CHAR函数会失效,这时可以把生成列字母的部分换成LEFT(ADDRESS(1,起始列号,4),FIND(1,ADDRESS(1,起始列号,4))-1),比如起始列号27(AA列)的话,这个表达式会返回"AA"。不过当前你的需求用CHAR完全够用。
内容的提问来源于stack exchange,提问作者Bradger
相关产品推荐
相关产品推荐

