我有两个工作簿,我正在尝试链接 OneDrive 中的 Excel O365 中的两个文件。
我在 PC 上或直接在 OneDrive 上执行以下命令时,成功率有限。将此命令放在目标文件中似乎可行,但我想使用变量作为ABBV
文件描述名称。
我有一长串文件,我想通过更改文件名中的这四个字符来从中提取数据。
='https://d.docs.live.net/a232a8d5885c0/Documents/Investing/Portfolio Management/EMB_JBB/Active Binder Financial Plan/[03_EMB JBB STOCK ANALYSIS_ONE PAGER - WiseCharts.xlsx]ABBV'!$J$24
但是,我想使用变量代替ABBV
字符串中的 。我尝试了下面显示的几种替代方法,但无法使其工作。
选项 A:
="'https://d.docs.live.net/a232a8d5885c0/Documents/Investing/Portfolio Management/EMB_JBB/Active Binder Financial Plan/[03_EMB JBB STOCK ANALYSIS_ONE PAGER - WiseCharts.xlsx]" & "ABBV" & "'!$J$24"
选项 B:
=Concatentate("'https://d.docs.live.net/a232a8d5885c0/Documents/Investing/Portfolio Management/EMB_JBB/Active Binder Financial Plan/[03_EMB JBB STOCK ANALYSIS_ONE PAGER - WiseCharts.xlsx]" & "ABBV" & "'!$J$24")
选项C:
=indirect("'https://d.docs.live.net/a232a8d5885c0/Documents/Investing/Portfolio Management/EMB_JBB/Active Binder Financial Plan/[03_EMB JBB STOCK ANALYSIS_ONE PAGER - WiseCharts.xlsx]" & "ABBV" & "'!$J$24")
选项D:
=indirect(Concatenate("'https://d.docs.live.net/a232a8d5885c0/Documents/Investing/Portfolio Management/EMB_JBB/Active Binder Financial Plan/[03_EMB JBB STOCK ANALYSIS_ONE PAGER - WiseCharts.xlsx]" & "ABBV" & "'!$J$24"))
有人有解决方案如何让它工作以便我可以使用变量吗ABBV
?
这里有更多细节……感谢您的评论 MGonet。这是目标文件的一部分。请注意,我对 ABBV 的替换位于 A 列中,链接将进入 40 行的每个单元格 D 到 M。因此,最终我必须为每列设置某种类型的循环,以查找目标文件夹文件夹中每个电子表格的链接数据。数据是在包含 40 张工作表的目标文件夹中生成的。我正在做的是查看 40 张工作表中的数据子集,以比较关键指标(即 ROIC、利润率等)。A 列中列出的每只股票都与目标文件中的一个选项卡(电子表格)相对应。目标文件必须循环遍历给定选项卡(例如 ABBV)的每个指标。每个数据位于选项卡中的不同位置。这是否有助于您更好地理解问题?我认为我需要对每一行 A6:A46 和 D 到 M 进行循环,每行循环都会更改“ABBV”的值,然后更改单元格位置 D 到 M。 D 行单元格将是“O15”;E 行单元格将是“O14”;F 行单元格将是“J24”;G 行将是“J23”;H 行将是“J13”;I 行将是“I19”;J 行将是“I18”;K 行将是“J32”;L 将是“J30”;M 将是“J35”。在此处输入图片描述
答案1
您没有写出您想如何更改此名称。从所呈现的公式来看,它似乎是工作表的名称(我假设始终是 4 个字母),放在括号后面]
。要更改它,您需要 VBA 代码,例如在Change
事件处理程序中。
让我们假设这种情况:您的公式在单元格中A3
。在单元格中F3
,我们创建一个下拉列表,其中包含所有类型的变量片段变体ABBV
。在Change
事件处理程序中,这将是Target
单元格。
在这些单元格所在的工作表的代码模块中,我们为事件定义一个处理程序Change
:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$F$3" Then
Dim f As String, wkn As String
f = Range("A3").Formula
wkn = Mid(f, InStr(f, "]") + 1, 4)
Range("A3").Formula = Replace(f, wkn, Target.Value)
End If
End Sub
通过改变单元格F3
(即选择一个变量片段),我们将该片段插入到单元格公式中A3
始终相同的位置(括号后 4 个字符]
)。
当然,您可以根据需要调整使用此想法的方式。