如何在不使用VBA的情况下将一个单元格作为文本获取另一个单元格的公式?我可以看到这个问题已被多次询问,答案总是在VBA中编写自定义函数。
但是,我发现post made in 2006声称找到了非VBA解决方案,但该帖子中提供的链接已经损坏。
答案 0 :(得分:19)
=FormulaText(Reference)
将执行诀窍Documentation
答案 1 :(得分:16)
没有VBA就可以做到这一点。它使用XL4宏(这些是宏,但它不是VBA,如所要求的那样)。
参考图1,单元格A2:A4包含通常的公式。
转到公式 - >定义名称,我定义了两个命名范围(见图2),信息显示在单元格A6:B8中。
在单元格B2 =FormulaAsText
中输入。这将检索单元格A2中的公式为文本。
<强>解释强>:
指定范围FormulaAsText
使用=GET.CELL(info_type,reference)
。在这种情况下,ìnfo_type = 6
检索公式,reference = OFFSET(INDIRECT("RC",FALSE),0,-1)
使用0行和-1列的单元格偏离使用公式的单元格。
复制B2并粘贴到B3:B4。这将显示A3:A4中的公式。单元格A4显示工作表函数CELL
仅检索值,而不是公式(而不是GET.CELL
)。
由于FormulaAsText
从当前固定偏移量(0,-1)的单元格中获取公式,我定义了另一个范围FormulaAsText2
,它使用偏移量(行,列)从工作表本身读取。单元格D2:D4包含=FormulaAsText2
。因此,单元格D2显示单元格B3(=OffSET(D2,1,-2)
)的内容,即FormulaAsText
。细胞D3:D4显示自身的内容。这增加了一些灵活性。 YMMV。
GET.FORMULA()
”。这个答案可能是相关的(不一样,因为这个答案使用GET.CELL()
)。
PS3:给出了简单的VBA解决方案,例如,在
http://dmcritchie.mvps.org/excel/formula.htm
编辑:补充this nice answer,工作表功能 FormulaText
可用for Excel 2013及更高版本。
答案 2 :(得分:0)
有一种方法可以做到这一点。在我的例子中,我有一张显示日期的表格。日期来自Sheet!G91。在我的表中,我还有一个显示工作表名称的列。我在表格中添加了两列。第一列有列(Sheet!g91),返回数字7,因为G是字母表中的第七个字母。然后我使用工作簿中的另一个表将数字转换为字母(G)。在我添加的第二列中,我创建了一个公式行(Sheet!G91),它返回数字91.注意:行和列可能显示为易失性公式,每次计算工作簿时都会重新计算。
我想要另一列来显示本文开头提到的日期单元格的公式内容。我包含了以下字符串函数(您也可以使用CONCATENATE)。
&#34; =&#34; &安培; AJ9&amp; &#34;!&#34; &安培; AM9&amp; AN9
由&符号分隔的项目串在一起(即连接在一起)。我的示例中的AJ9包含工作表名称,AM9包含列字母,AN9包含行号。
我现在有一个列动态更新其内容以反映工作表名称和单元格引用。我的工作簿单元格中的结果是
=表!G91。
答案 3 :(得分:0)
对于那些在检索公式块并将其传输到新电子表格后想要再次使用它们的人来说,这个建议可能会有所帮助。 Excels FORMULATEXT函数非常适合拾取公式,但它将它们作为不可用的文本字符串。如果要将它们作为功能完备的公式返回,则必须单独编辑每个公式以删除字符串字符,但这里是较大块的快捷方式。 到达您具有所需公式作为文本的位置(换句话说,在使用FORMULATEXT之后 - 您已完成复制和(仅限值)粘贴)。下一步是突出显示要转换的所有单元格,然后导航到[Text-To-Columns]菜单选项(Excel 2016上的{Data}栏)。您可以选择“分隔”,但在下一个屏幕上,请确保取消选择公式中出现的任何标记。然后'完成'。 Excel应该自动将单元格分析为包含公式,现在应该让它们再次运行。
答案 4 :(得分:-6)
你做不到。这很可能是一种设计选择,可以消除普通Excel用户意外得到他们不想要的东西。
您正在阅读的内容是正确的 - 编写UDF是您想要的解决方案。