如何设置跨工作表引用公式实现转置数据的横向拖拽填充?
解决转置考勤表公式横向引用原表的问题
针对你需要批量设置转置表单元格引用原表对应位置的需求,提供以下几种高效解决方案:
方法1:使用INDEX函数(推荐,非易失性)
这种方法通过指定固定行、动态列的方式实现引用,适配批量拖拽场景:
- 在转置表的B2单元格输入公式:
=INDEX(Sheet2!$2:$2, ROW())- 说明:
Sheet2!$2:$2锁定原表中第2行(对应第一个员工的所有考勤记录),ROW()获取当前转置表的行号并作为原表的列号。B2行号为2,对应原表第2列(B列)即Sheet2!B2;B3行号为3,对应原表第3列(C列)即Sheet2!C2,完全匹配你的需求。
- 说明:
- 选中B2单元格,向下拖拽填充至最后一个日期行(比如到B6,对应Wed 10/05)。
- 选中B2:B6区域,横向拖拽填充至所有员工列(90-100列),此时每一列的公式会自动锁定原表对应员工行(比如C列公式变为
=INDEX(Sheet2!$3:$3, ROW()),对应第二个员工的考勤记录)。
方法2:使用TRANSPOSE函数(一键转置,动态同步)
如果不需要手动调整公式,直接一键生成带动态引用的转置表,可使用TRANSPOSE:
- 选中转置表中需要填充的目标区域(比如A2:CV6,对应5个日期、100个员工)。
- 输入公式:
=TRANSPOSE(Sheet2!B1:F101)- 说明:
Sheet2!B1:F101覆盖原表的日期行(B1到F1)和所有员工的考勤记录(B2到F101),TRANSPOSE会自动互换原表的行与列,生成的转置表所有单元格都会动态引用原表对应位置,原表数据更新时转置表会同步变化。
- 说明:
- 按下
Ctrl+Shift+Enter(旧版Excel)或直接回车(新版Excel支持动态数组)完成填充。
方法3:使用INDIRECT函数(易失性,适合小范围)
如果需要更直观的列号控制,可使用INDIRECT,但注意它是易失性函数,数据量大时可能影响性能,不推荐90-100人的规模:
- 在转置表B2输入公式:
=INDIRECT("Sheet2!"&CHAR(64+ROW())&"2")- 说明:
CHAR(64+ROW())将当前行号转换为对应的列字母(行2→66→B,行3→67→C),结合固定行号2,生成Sheet2!B2、Sheet2!C2这类引用。
- 说明:
- 向下拖拽填充日期行后,横向拖拽时需手动修改公式中的行号(比如C2改为
=INDIRECT("Sheet2!"&CHAR(64+ROW())&"3"))。
内容的提问来源于stack exchange,提问作者user16580724
相关产品推荐
相关产品推荐

