如何返回单元格直接前导的地址?并在公式中使用它,例如 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 中搜索先例,您可以根据需要进行设置。
希望这对你有帮助。我测试过后,发布了这个解决方案。