交叉引用具有工作表编号的单元格

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 自动填充与单元格引用

如何快速搜索出excel工作表中哪些单元格链接到其他数据源?

EXCEL如何引用其它文件名下表格中单元格数据?

VBA中如何引用另一工作表中的单元格区域

powershell 清理和交叉连接包含具有由comman或换行符分隔的多个条目的单元格的excel表

从引用的单元格更改单元格时,如何突出显示该单元格?