在目标单元格中​​获取另一个单元格的公式

一个单元格如何在不使用VBA的情况下获取另一个单元格的公式? 我可以看到这个问题已经被多次询问了,答案总是在VBA中编写一个自定义函数。

不过,我发现2006年发布的一篇文章声称已经find了非VBA解决scheme,但该文章中提供的链接已经被打破。

有没有VBA这样做的好方法。 它使用XL4macros(这是macros,但它不是VBA,如问)。

参考图1,单元格A2:A4包含通常的公式。

在这里输入图像说明

  1. 去公式 – >定义名称,我定义了两个命名范围(见图2),信息显示在单元格A6:B8中。

    在这里输入图像说明

  2. input单元格B2 =FormulaAsText 。 这将作为文本检索单元格A2中的公式。

    说明 :命名的范围FormulaAsText使用=GET.CELL(info_type,reference) 。 在这种情况下, ìnfo_type = 6检索公式,并且reference = OFFSET(INDIRECT("RC",FALSE),0,-1)使用与使用公式的行ìnfo_type = 6 0行和-1列的单元格。

  3. 复制B2并粘贴到B3:B4中。 这将在A3:A4中显示公式。 单元格A4显示工作表函数CELL只检索值,而不是公式(与GET.CELL相反)。

  4. 由于FormulaAsText从当前的固定偏移量(0,-1)的单元格获得公式,我定义了另一个范围FormulaAsText2 ,它使用从工作表本身读取的偏移量(行数,列数)。 单元格D2:D4包含=FormulaAsText2 。 因此,单元格D2显示单元格B3( =OffSET(D2,1,-2) )的内容,即FormulaAsText 。 单元格D3:D4显示它们自己的内容。 这增加了一些灵活性。 因人而异。

PS1:本质来自http://www.mrexcel.com/forum/excel-questions/20611-info-only-get-cell-arguments.html

PS2:Tim Williams在评论“老XLM GET.FORMULA() ”中提到。 这个答案可能是相关的(不一样,因为这个使用GET.CELL() )。

PS3:给出一个简单的VBA解决scheme,例如http://dmcritchie.mvps.org/excel/formula.htm


编辑 :补充这个很好的答案 ,工作表函数FormulaText适用于Excel 2013及更高版本

=FormulaText(Reference)将做的技巧文档

有一种方法可以做到这一点。 在我的例子中,我有一个表格显示date。 date来自Sheet!G91。 在我的表格中,我也有一个显示表格名称的列。 我在桌子上增加了两列。 第一列有列(Sheet!g91),它返回数字7,因为G是字母表中的第七个字母。 然后我使用我的工作簿中的另一个表格将该数字转换为一个字母(G)。 在我添加的第二列中,我创build了一个公式行(Sheet!G91),它返回了数字91.注意:行和列可能会显示为易失性公式,每次计算工作簿时都会重新计算。

我想另一列显示本文开头提到的date单元格的公式内容。 我包含了下面的string函数(你也可以使用CONCATENATE)。

“=”&AJ9&“!” &AM9&AN9

由&符号分隔的项目串联在一起(即串联)。 我的示例中的AJ9包含表单名称,AM9包含列字母,而AN9包含行号。

我现在有一个列dynamic更新其内容,以反映表名称和单元格引用。 我的工作簿单元格中的结果是

=表!G91。

这个build议可能对那些在检索一个公式块并把它们传送到一个新电子表格后想让它们再次工作的人有所帮助。 优秀的FORMULATEXT函数对于拾取公式非常适用,但它将它们视为不可用的文本string。 如果你想把它们作为function齐全的公式,你必须单独编辑每一个去除string字符,但这是一个大块的捷径。 获取所需的公式为文本的位置(换句话说,在使用FORMULATEXT之后 – 您已经完成了一个副本和(仅限于值)粘贴)。 下一步包括突出显示要转换的所有单元格,然后导航到Excel中的[Text-To-Columns]菜单选项({Data}栏)。 您可以select“分隔”,但在下一个屏幕上,请确保您取消select公式中出现的任何标记。 然后“完成”。 Excel应该自动分析单元格作为包含公式,你现在应该让他们再次工作。

你不能。 这是最有可能的deviseselect,以消除平均Excel用户意外得到他们不想要的东西。

你正在阅读的是正确的 – 写一个UDF是你想要的解决scheme。