使用excel表作为函数


2

我想知道如何使用excel表作为函数。

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

我将使用Excel或Open Office。

我该怎么做呢?

谢谢。


进度更新

尝试在工作表(常规)中进行测试:

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

然后在一个单元格中:

=test()

导致#Name?

还尝试了scouering在线教程。


部分解决:

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

进展:

使用设置av值

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

 or

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

静默地失败,不执行下面的行。


进展:

如果我将代码简化为无参数子程序并将其分配给按钮,则这些技术可以正常工作。

解决方法

使用从按钮启动的VBA宏而不是使用函数实现时,实现非常简单。

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


1
RE测试功能失败 - 您是否为相关文件启用了宏? IIRC,他们被禁用,自定义功能将无法运行。
DMA57361

谢谢,我想也许这是一个可见性问题。将代码移动到模块解决了它。现在到了困难的部分:)
tovare

1
您上次更新中的这两个示例都适用于我(Excel 2003,您使用的是哪个版本?)。你也可以使用 Sheets("Sheet1").Formula = 10 - 设置值时效果相同(但检索时公式非常不同)。我怀疑这会有所帮助......
DMA57361

我尝试了两次安装Excel 2003.其中一个公司管理员禁用了一些VB按钮,但我解决了这个问题。第二个应该是不受公司蛇油的限制,但仍然没有工作。我明天会再试一次:-)
tovare

1
如果工作表受到保护,则无法设置该值。您必须取消保护它,或在锁定它时使用USERINTERFACEONLY参数。
Lance Roberts

Answers:


3

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

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

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

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

在VBA中更改算法以获得您要查找的结果。


我会试试,我只是假设它不起作用,因为每次需要在第一张表中重新计算的计算量。
tovare

0

我正在寻找类似问题的答案,并发现类似的东西:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.