Excel – 工作表作为一个function

我有两个Excel表。 第一个包含一个input单元格(A1)和一个输出单元格(B1)的计算公式。 B1的公式可以是B1 = A1 * 3(例子)。

第二个工作表在列A中包含各种值:A1 = 4; A2 = 9; A3 = 5 …在这张纸的相应栏B中,我想要得到每个A(第二张)input值B1(第一张)= A1(第二张)×3的结果。

基本上我想把第一张纸作为一个函数,其中A1是参数,B1是返回到第二张纸的B列的结果。

工作表2

A1 4 B1 12 (result from sheet 1) A2 9 B2 27 (result from sheet 1) 

没有macros可能吗?

这是内置到Excel中。 在版本2003中,使用数据,表格菜单。
你可以在网上find很多例子。 这是一个 。
您可以使用1或2个条目(参数)创build此类表格。

我不这么认为…..如果在B1 Sheet1中有3*A1

如果您在Sheet2 B1中尝试此操作

 `=SUBSTITUTE(Sheet1!$B$1,"A1",A1)` 

它会给3*4 ,而Sheet2 B2会是3*9

但我不知道如何强迫这个公式计算与公式没有可能的一些重型公式stringparsing分离数字与操作员(如果您更改B1 Sheet 1中的条目是不可能的按需要弯曲)

[更新2:但是,我已经做了一个命名的范围]

我用这个范围名称

RngTest

=EVALUATE(3*INDIRECT("rc[-1]",FALSE))

这是一个全球范围的名称,所以它可以在任何表格上工作,比我之前的OFFSET工作更强大。 它将单元格与最左边的乘以3

所以在B1:B3中input= RngTest(然后在这个新的例子中,inputC1:C3)给出你想要的输出 在这里输入图像说明

我想你想在你的工作表中使用这两列。

 Sheet1!B1 * Sheet2!A1 

完全没有VBA:期待很多的痛苦,我不会去那里。 但…

为了大幅减less痛苦的数量,你可以使用这个微小的VBA用户自定义函数(不是技术上的“macros”),基本上只是一个使VBA的Evaluate函数在工作表公式中可用的包装器:

 Function eval(myFormula As String) eval = Application.Evaluate(myFormula) End Function 

您可以在第2页上的单元格B1中使用它:

 =eval(SUBSTITUTE(Sheet1!$B$1,"A1","A"&ROW())) 

请注意,这需要Sheet 1单元格B1包含A1*3而不是=A1*3 ,即不包含等号。 也许稍微摆弄一下,甚至可以用=号在那里工作…

编辑:实际上,如果您在公式中键入Sheet 1单元格B1作为文本之前,即使您的公式以a =开头,这将工作。