解决方法

解决方法

我想知道如何将 Excel 表用作函数。

假设我在 Sheet1 中有一个带有一个参数的复杂计算,我想在第二张表中迭代 [1 到 400] 的范围以在 Sheet2 中创建一个 x,f(x)表。

我将使用 Excel 或 Open Office。

我该如何做这件事?

谢谢。


进度更新

尝试在 Sheet (General) 中进行测试:

Public Function test() as Boolean
    test = True
End Function

然后在一个单元格中:

=test()

结果是#Name?

还尝试搜索在线教程。


部分解决:

  • 通过将代码放入模块来实现功能的可见性。
  • 在 VBA 中插入 -> 模块。

进步:

使用设置 av 值

 Worksheets("Sheet1").Range("A1").Value = 10

 or

 Worksheets("Sheet1").Cells(1,1).Value = 10

默默地失败并且不执行下面的行。


进步:

如果我将代码简化为无参数的子程序并将其分配给按钮,这些技术就会很好地发挥作用。

解决方法

当使用从按钮启动的 VBA 宏而不是使用函数来执行时,执行非常简单。

我迭代了一系列行来获取计算的输入。

答案1

最好的方法是在 Excel VBA 中创建算法。您可以打开 VBA 并输入以下内容

Public Function Test1(x as Integer, y as Integer)  
    Test1 = x*y  
End Function   

您可以像调用公式栏中的其他函数一样调用此函数。
在公式栏中A1

  • =Test1(2,4)结果为 8。

更改 VBA 中的算法以获得您想要的结果。

答案2

我正在寻找类似问题的答案并发现了类似的内容:

public function GetWhatever(byval p1 as variant, byval p2 as variant) as variant
  'Make sure you're in AutoCalculation mode, otherwise use me.calculate
  me.range("A1").value = p1
  me.range("A2").value = p2
  GetWhatever = me.range("A3").value
end function

那么问题是:https://stackoverflow.com/a/3570907

答案3

我更喜欢的一件事是通过改变参数来创建数据表,然后在创建的数据表中查找所需的值。

更合适的方法是用 Excel VBA 编写代码,这样可以非常轻松地调用它,无需付出太多努力。但是,如果您手头已有 Excel 表,则可以通过创建数据表轻松地使用前一个表。

答案4

自从这个问题发布以来,Excel 已经更新,添加了溢出公式。这允许一个单元格中的公式将结果返回到多个单元格。例如,如果您的数据在 Sheet1 中,您可以在 Sheet2 单元格中添加此公式,A1以使用 Sheet1 中相应单元格的两倍值填充 5 列、400 行:

=Sheet1!A1:E400*2

如果需要进行更复杂的数学运算,可以使用LET() 函数然后做任何你想做的事情,仍然向 Sheet2 中的多个单元格返回一个数据数组:

=LET(x,Sheet1!A1:E400,x*2+SQRT(x)*EXP(x))

相关内容