Excel - 工作表作为函数
Posted
技术标签:
【中文标题】Excel - 工作表作为函数【英文标题】:Excel - Sheet as a function 【发布时间】:2011-10-04 10:49:43 【问题描述】:我有两张 Excel 表格。第一个包含一个用于计算的公式,其中一个输入单元格 (A1) 和一个输出单元格 (B1)。 B1 的公式可以是 B1 = A1 * 3(示例)。
第二张表在 A 列中包含各种值:A1 = 4; A2 = 9; A3 = 5 ... 在此工作表的相应 B 列中,我想得到 B1(第一工作表)= A1(第二工作表)* 3 每个 A(第二工作表)输入值的结果。
基本上,我想将第一个工作表视为一个函数,其中 A1 是参数,B1 是传递回第二个工作表的 B 列的结果。
表 2
A1 4 B1 12 (result from sheet 1)
A2 9 B2 27 (result from sheet 1)
...
没有宏可以吗?
【问题讨论】:
【参考方案1】:这是内置在 Excel 中的。在 2003 版中,使用“数据”、“表格”菜单。 你可以在网上找到很多例子。这是one。 您可以使用 1 个或 2 个条目(参数)创建此类表。
【讨论】:
要添加到这里,请参见此处:***.com/questions/4640336/…【参考方案2】:我不这么认为......
如果在 B1 Sheet1 你有
3*A1
如果您在 Sheet2 B1 中尝试此操作
`=SUBSTITUTE(Sheet1!$B$1,"A1",A1)`
它会给
3*4
,Sheet2 B2 将是
3*9
etc
但我看不出你如何能用公式强制它进行数字计算,而不需要一些繁重的公式字符串解析以将数字与运算符分开(如果你更改 B1 表 1 中的条目,则不可能根据需要灵活调整)
[更新 2:但我已经用命名范围完成了它]
我使用了这个范围名称
RngTest
=EVALUATE(3*INDIRECT("rc[-1]",FALSE))
这是一个全局范围名称,因此它适用于任何工作表,比我之前的 OFFSET 工作更强大。它将最左边的单元格乘以 3
所以在 B1:B3 中输入 =RngTest(然后在这个新示例中也输入 C1:C3) 给出你想要的输出
【讨论】:
【参考方案3】:我认为您想在工作表的第二列中使用它。
Sheet1!B1 * Sheet2!A1
【讨论】:
这其实不是我想要的。我想把 Sheet1 当作一个函数(方法)来根据参数返回值。 在第一段中你说 B1 = A1*3。在第二段中,您说 B1 = Sheet2!A1 *3。是哪个? 我认为他希望能够在 Sheet1!B1 中编写公式“模板”。然后应将该模板调整到 Sheet2 上的适当位置。【参考方案4】:完全没有 VBA:期待很多痛苦,我不会去那里。但是……
为了大大减少痛苦,您实际上可以使用这个微小的 VBA 用户定义函数(技术上不是“宏”),基本上只是一个包装器,使 VBA 的 Evaluate
函数在工作表公式中可用:
Function eval(myFormula As String)
eval = Application.Evaluate(myFormula)
End Function
然后您可以在工作表 2 的单元格 B1 中像这样使用它:
=eval(SUBSTITUTE(Sheet1!$B$1,"A1","A"&ROW()))
请注意,这要求工作表 1 单元格 B1 包含 A1*3
而不是 =A1*3
,即没有等号。也许稍微摆弄一下,即使那里有 = 符号,它也可以工作......
编辑:实际上,如果您在输入公式之前将工作表 1 单元格 B1 格式化为文本,即使您的公式以 =
开头,这也将起作用。
【讨论】:
【参考方案5】:没有宏可以吗?
是的!
您现在可以为此使用=LAMBDA
。
使用名称管理器定义您的函数,然后在第二张表的公式中引用它。
请参阅Introducing the LAMBDA function 的语法。
有关如何使用LAMBDA
函数的更多信息,请参阅support documentation。
【讨论】:
以上是关于Excel - 工作表作为函数的主要内容,如果未能解决你的问题,请参考以下文章