![在 Excel 中,如何提取另一个单元格的公式中引用的地址?](https://linux22.com/image/1578682/%E5%9C%A8%20Excel%20%E4%B8%AD%EF%BC%8C%E5%A6%82%E4%BD%95%E6%8F%90%E5%8F%96%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%8D%95%E5%85%83%E6%A0%BC%E7%9A%84%E5%85%AC%E5%BC%8F%E4%B8%AD%E5%BC%95%E7%94%A8%E7%9A%84%E5%9C%B0%E5%9D%80%EF%BC%9F.png)
在 Excel 中,我有一个股票数据网格,其中行是看涨期权价格,列是看跌期权价格。对于网格中的每个单元格,我都可以生成该特定看涨/看跌期权组合的结果图。我想通过单击网格单元格并查看与该特定单元格对应的图表来交互使用电子表格。我想在不使用任何 VB 和任何附加组件的情况下做到这一点。我已经非常接近了,只是缺少一个功能。
我希望能够单击图表旁边的单元格,键入“=”,然后单击我想要图表的网格单元格,这样我就会得到类似“=R12”的结果。我希望它能得出我对与单元格 R12 相关的图表感兴趣。
我现在能做的是让两个单元格包含感兴趣的行号和列号。然后我可以使用 =INDIRECT(ADDRESS(Z20,1)) 和 =INDIRECT(ADDRESS(1,Z21)) 来获取 Z20、Z21 引用的单元格的行和列标题值。我还可以在单元格 Z20 和 Z21 中使用 =ROW() 和 =COLUMN() 方程,但不太方便。要选择其他单元格来查看图表,我必须键入“=ROW(”,然后单击我想要的单元格,然后键入“)”,列也一样。
我还可以输入“=”,然后单击 R12,然后删除“=”,这样单元格就包含“R12”,但这也有点笨拙。
答案1
如果您在单元格中输入“=”并单击另一个单元格是 D6,那么您的其他公式可以使用以下命令提取您单击的单元格:
=RIGHT(FORMULATEXT(D6),LEN(FORMULATEXT(D6))-1)
答案2
您可以像这样获取行和列:
=ROW(INDIRECT(SUBSTITUTE(FORMULATEXT(E18),"=","")))
=COLUMN(INDIRECT(SUBSTITUTE(FORMULATEXT(E18),"=","")))
其中 E18 是您输入“=”的单元格,然后单击该单元格(并按 Enter)。
这些值可用于收集行或列的所有条目。(我不太清楚您打算如何使用这些值,只是您想要在单击的单元格上相交的行和列,因此很难解决超出此范围的任何问题。)
您甚至可以使用找到的信息来读取Data Types
您单击的源范围。以下获取“实时”的单元格地址,因为它可以在数据类型提取公式中使用:
=OFFSET(A1,ROW(INDIRECT(SUBSTITUTE(FORMULATEXT(E18),"=","")))-1,COLUMN(INDIRECT(SUBSTITUTE(FORMULATEXT(E18),"=","")))-1)
(A1 是单元格“1,1”,因此您必须从每个行和列的值中减去 1。)
很多时候,无法从由公式填充的单元格中提取数据类型,但这是一个实时地址,因此它是 Excel 看到的,而不是其下的公式。因此,假设您在 E18 中执行“=,单击单元格,按 Enter”操作,并在 E19 中使用上述公式,那么您可能会得到如下公式:
=E19.price
获取股票价格(针对您点击的范围内的任何单元格)。
我提到这一点只是作为补充说明,也是因为你的措辞方式。一半感觉像是你的源中有数据类型结果,另一半感觉像是你正在根据列或行数据制作图表,尽管你让它听起来像是图表将包含(不知何故有意义!)两个系列的数据。