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*9etc

但我看不出你如何能用公式强制它进行数字计算,而不需要一些繁重的公式字符串解析以将数字与运算符分开(如果你更改 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 - 工作表作为函数的主要内容,如果未能解决你的问题,请参考以下文章

从 vba 代码调用 Excel 的工作表函数

如何将EXCEl中多张Sheet工作表转换成一个PDF

(Excel) 引用另一个工作表中的单元格时,我可以将工作表名称作为单元格值传递吗?

excel两个工作表如何关联

从excel单元格调用excel工作表函数

excel判断表数据是不是存在另一个表中