如何让Excel每3行遵循指定公式算法?
解决方案
要实现每3行对应同一引用行、每过3行引用行递增1的效果,核心是通过行号计算动态生成目标引用行,替换原公式中的固定行号即可。
动态行号计算逻辑
使用公式INT((ROW()-11)/3)+11生成目标引用行号:
ROW():获取当前单元格的行号ROW()-11:计算当前行与起始行(第11行)的差值INT((ROW()-11)/3):将差值除以3后取整,每3行该值自动加1- 加11:得到最终的目标引用行号
修改后的公式(两种可选方案)
方案1:使用INDIRECT(写法简洁)
将原公式中的固定行号替换为上述计算式,完整公式如下:
=IF(B11="RTR", INDIRECT("RTR!G"&(INT((ROW()-11)/3)+11)&":Z"&(INT((ROW()-11)/3)+11)), IF(B11="DHG2", INDIRECT("'DHG2'!G"&(INT((ROW()-11)/3)+11)&":Z"&(INT((ROW()-11)/3)+11)), IF(B11="JQV", INDIRECT("JQV!G"&(INT((ROW()-11)/3)+11)&":Z"&(INT((ROW()-11)/3)+11)), "")))
方案2:使用INDEX(非易失函数,更稳定)
若避免使用易失函数INDIRECT,可改用INDEX(20对应G到Z的列数,G是第7列、Z是第26列,26-7+1=20):
=IF(B11="RTR", INDEX(RTR!G:Z, INT((ROW()-11)/3)+11, 1):INDEX(RTR!G:Z, INT((ROW()-11)/3)+11, 20), IF(B11="DHG2", INDEX('DHG2'!G:Z, INT((ROW()-11)/3)+11, 1):INDEX('DHG2'!G:Z, INT((ROW()-11)/3)+11, 20), IF(B11="JQV", INDEX(JQV!G:Z, INT((ROW()-11)/3)+11, 1):INDEX(JQV!G:Z, INT((ROW()-11)/3)+11, 20), "")))
效果验证
- 第11、12、13行:引用行号为11,与原公式一致
- 第14、15、16行:引用行号为12,符合预期
- 第17、18、19行:引用行号自动变为13,和你期望的公式完全匹配
- 拖动公式时,后续所有行都会自动遵循每3行引用行递增1的规则
内容的提问来源于stack exchange,提问作者moe
相关产品推荐
相关产品推荐

