将函数参数从单元格提取到另一个单元格

时间:2013-09-27 07:25:55

标签: excel excel-formula

我需要能够从大量单元格中提取特定的硬编码参数值到新单元格中。

假设某个单元格具有以下形式

=func("value1","value2","value3")

我想将value2提取到自己的单元格中,所有值都是可变长度。

我已经能够通过将以下内容添加到我的名字管理员

来检索公式作为文本
=GET.CELL(6,INDIRECT("RC[-2]",FALSE))

但这并没有真正帮助,因为值变量意味着字符串长度在函数值上变化很大。

1 个答案:

答案 0 :(得分:1)

我找不到关于GET.CELL的任何官方信息,因此我认为它是用户定义的函数。

这意味着已被使用。因此,我的目的是一个新的UDF:

Function FuncArg(ByVal r As Range, ByVal n As Long)
    Dim a As String
    a = Split(r.Resize(1, 1).Formula, "(", 2)(1)
    a = Split(a, ")")(0)
    a = Split(a, ",")(n - 1)
    FuncArg = Application.Evaluate(a)
End Function

所以在Excel中你可以使用公式=FuncArg(A1, 2)在单元格A1中返回函数的第二个参数。

注意,此功能必须在非常受控的情况下使用:

  • 使用Application.Evaluate会使其非常不安全;
  • 仅检查第一个功能;
  • 不解析嵌套函数或字符串编码,)