如何创建随新增工作表自动添行并汇总数据的费用追踪表格?
这个需求完全可以实现,给你两种实操方案
方案一:用动态数组公式(适合Excel 365/2021及以上版本)
不用编程,输入公式就能搞定,适合不懂技术的人操作:
- 打开
Calculations工作表,在A1单元格粘贴下面的公式,它会自动列出所有带"/"的工作表名称(自动排除Calculations自己):
=FILTER(TEXTAFTER(GET.WORKBOOK(1),"]"),TEXTAFTER(GET.WORKBOOK(1),"]")<>"Calculations")
之后新增符合命名规则的工作表时,A列的列表会自动更新。
- 接着在B1单元格粘贴这个公式,它会对应提取每个工作表的A1单元格内容:
=BYROW(A#:A,LAMBDA(sheet,INDIRECT("'"&sheet&"'!A1")))
注意:文件要保存为.xlsm格式(启用宏的工作簿),打开时记得启用宏,公式才能正常工作。
方案二:用VBA宏(适合所有Excel版本)
如果用的是旧版Excel,或者想要更“全自动”的效果,就用这个方法:
- 按
Alt + F11打开VBA编辑器。 - 在左侧的工程列表里找到你的工作簿,右键点击
ThisWorkbook,选“查看代码”。 - 把下面的代码粘贴进去:
Private Sub Workbook_NewSheet(ByVal Sh As Object) Dim calcSheet As Worksheet Dim lastRow As Long ' 只处理名字带"/"的工作表 If InStr(Sh.Name, "/") = 0 Then Exit Sub Set calcSheet = ThisWorkbook.Worksheets("Calculations") ' 找到Calculations表的最后一行 lastRow = calcSheet.Cells(calcSheet.Rows.Count, "A").End(xlUp).Row If lastRow = 1 And calcSheet.Cells(1, "A").Value = "" Then lastRow = 0 ' 写入数据 calcSheet.Cells(lastRow + 1, "A").Value = Sh.Name calcSheet.Cells(lastRow + 1, "B").Value = Sh.Range("A1").Value End Sub
- 保存文件为
.xlsm格式,以后每次新增带"/"的工作表,Calculations表都会自动新增一行,把工作表名和A1的内容填进去。
小提醒
不管用哪种方法,都得把文件存成.xlsm格式,不然公式或宏没法正常运行。要是你父亲操作的话,方案一上手更简单,输一次公式就完事;方案二设置一次后,完全不用再管,新增表自动同步数据。
内容的提问来源于stack exchange,提问作者Anon
相关产品推荐
相关产品推荐

