如何按列表批量更改Excel公式中的工作表地址(L1-L8)
批量遍历L1-L8工作表提取数据的解决方法
方法1:用INDIRECT函数动态引用工作表
通过INDIRECT函数拼接工作表名称,实现动态引用,无需手动逐个修改公式:
- 在空白列(如A列)依次输入
L1、L2……L8 - 在需要生成公式的单元格(如B1)输入:
=INDEX(INDIRECT("'"&A1&"'!$A$12:$H$59"),MATCH(E$11,$E$11:$AI$11,0),MATCH("Payment",example!$F$6:$F$9,0)+1)
- 下拉B1单元格至B8,即可自动生成对应L1到L8的提取公式
注:单引号用于兼容带特殊字符的工作表名称,L1-L8这类名称可省略,但保留能提升公式通用性。
方法2:文本拼接+批量转公式
如果不想用INDIRECT,可通过文本拼接生成公式后转成可执行格式:
- 在空白列(如A列)输入1到8,对应L1-L8的数字后缀
- 在B1单元格输入文本拼接公式:
=CONCATENATE("=INDEX('L",A1,"'!$A$12:$H$59,MATCH(E$11,$E$11:$AI$11,0),MATCH(""Payment"",example!$F$6:$F$9,0)+1)")
- 下拉B1至B8,生成所有公式的文本形式
- 选中B1-B8,按
Ctrl+C复制,右键选择「选择性粘贴」→「值」,将公式文本转为静态内容 - 按
Ctrl+H打开替换窗口,查找内容填"",替换为",点击「全部替换」修正引号格式 - 选中所有处理后的单元格,按
F2进入编辑模式后回车,即可将文本转为可执行公式
方法3:VBA宏批量生成
适合需要频繁批量处理的场景:
- 按
Alt+F11打开VBA编辑器 - 点击「插入」→「模块」,粘贴以下代码:
Sub GenerateSheetFormulas() Dim targetSheet As Worksheet Dim i As Integer ' 替换为你要存放公式的工作表名称 Set targetSheet = ThisWorkbook.Worksheets("目标表") For i = 1 To 8 ' 在目标表的第1列逐行生成公式,可根据需求修改Cells(i,1)的行列位置 targetSheet.Cells(i, 1).Formula = "=INDEX('L" & i & "'!$A$12:$H$59,MATCH(E$11,$E$11:$AI$11,0),MATCH(""Payment"",example!$F$6:$F$9,0)+1)" Next i End Sub
- 修改代码中的
"目标表"为实际存放公式的工作表名称,按F5运行宏,即可批量生成所有公式
内容的提问来源于stack exchange,提问作者user4356954
相关产品推荐
相关产品推荐

