我需要能够从大量单元格中提取特定的硬编码参数值到一个新单元格中。
假设一个单元格具有以下公式:
=func("value1","value2","value3")
我想提取value2
到自己的单元格中,所有值的长度都是可变的。
通过将以下内容添加到我的名称管理器,我已经能够以文本形式检索公式:
=GET.CELL(6,INDIRECT("RC[-2]",FALSE))
但这并没有真正的帮助,因为可变的值意味着字符串长度在函数值上是高度可变的。
我需要能够从大量单元格中提取特定的硬编码参数值到一个新单元格中。
假设一个单元格具有以下公式:
=func("value1","value2","value3")
我想提取value2
到自己的单元格中,所有值的长度都是可变的。
通过将以下内容添加到我的名称管理器,我已经能够以文本形式检索公式:
=GET.CELL(6,INDIRECT("RC[-2]",FALSE))
但这并没有真正的帮助,因为可变的值意味着字符串长度在函数值上是高度可变的。
我在 上找不到任何官方信息GET.CELL
,所以我认为它是用户定义的函数。
这意味着vba已被使用。因此,我打算创建一个新的 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
使其非常不安全;,
或)
.