我有2个名为9月和10月的Excel文件。 9月文件包含10月文件使用公式引用/链接到的值:
=+B2+'C:\\[September.xlsx]Sheet1'!A1
因此10月份的单元格B2
包含一个值,该值是来自9月文件的B2
和A1
的总和。
如果我现在创建一个11月文件,我只需在10月文件上执行另存为并将文件保存为November.xlsx。但是,这意味着11月文件仍然引用值September.xlsx。在创建或打开11月文件时,有没有办法自动更新November.xlsx中的单元格以引用10月?
即。所以十一月的公式会自动更新为=+B2+'C:\[October.xlsx]Sheet1'!A1
。
或者在打开文件时弹出一个Window窗体,询问它希望链接到的月份,然后用户将在一个月内输入,然后更新范围内的所有单元格。
有人能够指出我正确的方向吗?
答案 0 :(得分:2)
答案 1 :(得分:2)
您可以使用Workbook.ChangeLink
方法。
expression.ChangeLink(Name, NewName, Type)
其中Name
是现有文件名,NewName
是新文件名
要查看它的实际效果,请尝试在手动更改链接源的同时录制宏,并检查生成的代码。从Data/Connections/Edit Links
菜单
最简单的实现可能是编写一个宏来一次性完成SaveAs和ChangeLink。或利用BeforeSave
事件。
答案 2 :(得分:0)
在将十月工作簿另存为November.xlsx时尝试录制宏,然后编辑新工作簿中的链接以链接到October.xlsx。
原始代码将非常混乱,但您应该能够编辑它以适应其他月份。
答案 3 :(得分:0)
这种纯粹基于配方的解决方案适合我。它分布在几个细胞中。我想你可以将所有的公式合并到一个单元格中的一个很长的公式中,但在我看来,最好不要。我会把中间细胞(我的例子中的细胞F12-F17)塞进某个地方。
公式:
Cell Formula
---- ---------------------------------------------------------
F12 =CELL("filename",A1)
F13 =MID(F12,FIND("[",F12)+1,FIND("]",F12)-FIND("[",F12)-1)
F14 =LEFT(F13,FIND(CHAR(1),SUBSTITUTE(F13,".",
CHAR(1),LEN(F13)-LEN(SUBSTITUTE(F13,".",""))))-1)
F15 =TEXT(DATE(2000,MONTH(DATEVALUE("1 " & F14))-1,1),"mmmm")
F16 =F15 & MID(F13,FIND(CHAR(1),SUBSTITUTE(F13,".",
CHAR(1),LEN(F13)-LEN(SUBSTITUTE(F13,".","")))),LEN(F13))
F17 =SUBSTITUTE(F12,F13,F16)
F18 =INDIRECT(ADDRESS(1,1,,,F17))
结果,假设当前工作表保存为December.xlsx
:
Cell: Value:
----- ---------------------------------------------------------
F12 C:\Users\user.name\Documents\[December.xlsx]Sheet1
F13 December.xlsx
F14 December
F15 November
F16 November.xlsx
F17 C:\Users\user.name\Documents\[November.xlsx]Sheet1
F18 value from cell A1 in November.xlsx!
注意: