我希望能够在“主表”中输入公式。调用时,该公式将在调用公式的工作表上执行。
示例:
Sheet 1 (master sheet)
Col A Col B
ABC A1
DEF A2xA2
GHI A3-A1 * .05
JKL A4+A1
Sheet 2
Col A Col B Col C
5 DEF
10 ABC
15 GHI
20 JKL
所以我想要发生的是我在Sheet2上输入Col B以执行Sheet 1(Master Sheet)上相对于Sheet 2上相应列的公式。所以在上面的例子中,Sheet 2的第1行为Col C将是25.我正在尝试VLOOKUP
和INDIRECT
的混合。如果它只是单元格引用,如Sheet1上的ABC,它工作正常。如果我进入任何其他人,它就会爆炸。由于VLOOKUP
工作正常,有什么能够“执行”公式或评估公式吗?或者,当不仅仅是直接的单元格引用时,如何间接工作。
我对VBA解决方案不感兴趣,我想使用直接的excel函数。
答案 0 :(得分:1)
使用VBA很容易,因为您可以在调用Excel的Evaluate函数的模块中创建UDF,该函数在工作表中不可用:
Function Eval(ByVal r As Range)
Application.Volatile True
Eval = Evaluate(r.Value)
End Function
然后,如果您在单元格C1中将SUM($ A $ 1:$ A $ 10)作为文本,要将该文本作为公式在另一个单元格中执行,您只需输入:
=Eval(C1)
如果确实必须避免使用VBA,则在定义名称时可以使用Evaluate函数。因此,通过上面在C1中使用SUM($ A $ 1:$ A $ 10)的示例,您可以定义一个名为SumCol的新名称,该名称引用以下内容:
=Evaluate($C$1)
然后你可以将SumCol放入一个单元格中:
=SumCol
但我认为定义一堆这样的名字会变得单调乏味。