Excel 公式返回单元格直接先例的地址吗?

Excel 公式返回单元格直接先例的地址吗?

如何返回单元格直接前导的地址?并在公式中使用它,例如 OFFSET() 或 IF()?

IE:

  • 地址为 C1 的单元格指向单元格 D30(在同一张工作表上,或在同一工作簿中的另一个工作表上)
  • 電池(C1)返回 C1,而不是 D30,索引(C1)返回 C1 的值。
  • 范围(“C1”).DirectPrecedent应该可以工作,但我似乎无法将其转换为任何工作格式。

我尝试制作一个功能:


Function DirectPrecedent(rng As Range)
    Range(rng).DirectPrecedents
End Function

这似乎也不起作用(但我不知道 VBA,所以我并不感到惊讶)。

那么,我该怎么做才能获得一些有用的东西,例如:

  • OFFSET(DirectPrecedentOf(C1),0,3)-- D30 右侧 3 列的单元格

  • 或者:IF(DirectPrecedentOf(C1)=TODAY(),"YES","NO")——如果 D30=今天的日期,则返回“YES”

这是可能的吗,C1 是否指向 D30,还是指向 'Sheet2'!D30?

编辑:有人建议我澄清为什么我需要这个,所以这里有更多信息:

B1: OFFSET(DirectPrecedentOf(C1),0,3)
C1: 'Sheet2'!D30
'Sheet2'!D30:D40: List of dates
'Sheet2'!G30:G40: List of dollar amounts

基本上,我想要类似这样的内容“在 C 列中,输入来自‘Sheet2’!D 列的日期,在单元格 B1 中,输入来自 C 列中被调用单元格右侧第三个单元格的值”

答案1

据我所知,Excel 中没有这样的公式可以返回先决条件和从属单元格地址

但我可以向您推荐将先例视为 OP 的 VBA 代码。

注意:执行此代码后,检查 VBA 编辑器中的即时窗口中的先例单元格地址。

私有子命令按钮1_Click()

Dim rngToCheck As Range
Dim rngPrecedents As Range
Dim rngPrecedent As Range

Set rngToCheck = Range("A2:A10")

On Error Resume Next
Set rngPrecedents = rngToCheck.Precedents
On Error GoTo 0

If rngPrecedents Is Nothing Then
    Debug.Print rngToCheck.Address(External:=True) & _
                "Range has no precedents"
Else
    For Each rngPrecedent In rngPrecedents
        Debug.Print rngPrecedent.Address(External:=True)
    Next rngPrecedent
End If

子目录结束

笔记Excel 将在数据区域 A2:A10 中搜索先例,您可以根据需要进行设置。

希望这对你有帮助。我测试过后,发布了这个解决方案。

相关内容