交叉引用具有工作表编号的单元格
Posted
技术标签:
【中文标题】交叉引用具有工作表编号的单元格【英文标题】:Cross referencing a cell with sheet number 【发布时间】:2020-06-28 14:50:17 【问题描述】:必须启动一个交叉引用财务模型中所有单元格的复杂模型。 我需要一个代码来启动我的模型,其中代码检测单元格值的来源并引用该工作表的工作表编号。
即有两个工作表,工作表 1 和工作表 2。工作表 1 的范围(“B3”)中的值来自工作表 2 的范围(“C4”)。同样,工作表 1 的范围(“B4”)中的值来自范围(“E7 ") 第 2 页。 我希望代码检测此引用,并在 sheet1 的 Range("B4") 中写入即 Sheet2 的名称。 虽然不是在寻找 vlookup。
谢谢
【问题讨论】:
我认为您希望 C 列中的结果而不是 B 列中的结果,因为这会覆盖原始参考,还是您的意图? 有文章这样做:VBA: Determine All Precedent Cells – A Nice Example Of Recursion。它通过触发它们的Range.NavigationArrows
(可以从公式选项卡手动打开)来检索单元格的先例
【参考方案1】:
纳奇,
我认为这将满足您的需求,或者至少为您提供一个良好的起点。
Option Explicit
Sub FindSheetRefs()
Dim rngStart As Range
Dim lRowOfs As Long
Dim zRef As String
Set rngStart = Range("B3")
lRowOfs = 0
Do
zRef = rngStart.Offset(lRowOfs, 0).Formula
zRef = Left$(zRef, InStr(zRef, "!") - 1)
zRef = Right$(zRef, Len(zRef) - 1)
rngStart.Offset(lRowOfs, 1) = zRef
lRowOfs = lRowOfs + 1
Loop Until rngStart.Offset(lRowOfs, 0) = 0
End Sub 'FindSheetRefs
示例输出:
注意:B 列中的数字显示了值在参考表上的位置,例如34 = C4。我这样做是为了在测试中快速参考。
HTH
附:我在我的示例中尝试了 TinMan 指向的代码,并在 VBA 即时窗口中得到了这个结果:
===
[Book11]Sheet1!$A$1 has no precedent cells.
===
【讨论】:
您好,感谢您的回复,感谢您的努力。以下代码给出错误 5“无效的过程调用或参数”'[Ref = Left$(Ref, InStr(Ref, "!") - 1)]' '[Ref = Right$(Ref, Len(Ref) - 1 )]' 你复制代码了吗?它应该是 zRef vs Ref。哪条线路给您带来了问题?您在上面引用了两行。 两行,zRef = Left$(zRef, InStr(zRef, "!") - 1)....... zRef = Right$(zRef, Len(zRef) - 1)以上是关于交叉引用具有工作表编号的单元格的主要内容,如果未能解决你的问题,请参考以下文章
如何快速搜索出excel工作表中哪些单元格链接到其他数据源?