Excel和VBA - 函数的底层代码在哪里?


4

我想知道在Excel或在线的任何地方,我可以使用它来查看Excel中的函数是如何工作的。

我的想法是,我开始学习如何制作UDF,并在VBA中做各种事情,并认为如果我能看到Excel实际执行的方式 Sum() 例如,我可以学习如何使我的代码更紧凑,占用更少的空间等。

基本上,Excel的内置函数如何工作的存储库?这甚至可用吗?

编辑:我知道公式可能用非VBA编写。那很好 - 我只是好奇是否有办法看到它们,无论它们是用什么语言写的。

编辑2:总的想法是我正在学习C ++ / VBA / C#,并且希望看到“官方”函数只是为了了解它们是如何工作的,并看看是否有任何方法可以加速代码。 OpenOffice功能也很好!


1
内置Excel函数的基础代码不在VBA中。 Excel是用C#和/或C ++编写的。
Excellll

@Excellll - 您知道我在哪里可以找到该代码吗?我也在学习C ++,所以它也可能有所帮助!
BruceWayne

2
它不是开源的
Dave

1
@Dave - 我很害怕:(
BruceWayne

1
您是否有兴趣查看某些替代产品的源代码?例如 OpenOffice Calc
miroxlav

Answers:


4

Microsoft Excel是一个封闭源产品,
但正如您所指出的,Excel的替代源代码也足够了。

你可以检查一下 源代码 OpenOffice Calc 它与Microsoft Excel非常相似(见截图)。

您无需安装该产品。在 下载页面 ,重点是标注的部分 资源 并抓住档案 压缩 延期。

在存档内部,查看文件 aoo-4.1.2\main\sc\source\core\tool\interpr4.cxx
在3500左右你可以找到很长的 case 显示内置函数调用内置电子表格函数的语句。这是你的出发点。

然后,您可以搜索源文件以实现这些功能。

祝好运!


现在恕我直言,LibreOffice代码库好多了。请参阅这些提交以实现各种Excel函数: cgit.freedesktop.org/libreoffice/core/log/...
phw

@phw - 我明白了。你认为这也是你选择“答案没有用”(即低估)的原因吗?或者不是吗?您是否能够发现Libre Office中的电子表格功能的实现远远优于其在OpenOffice中的实现?也许你可以在单独的答案中分享你的发现。
miroxlav

好吧,他们重构了Calc的工作方式并将一些部件移动到外部库(称为mdds)。鉴于OO.o没有这样做,这给了他们在我的书中的优势。这是深入挖掘源代码的良好开端: wiki.documentfoundation.org/Development/Code_Overview
phw

我找到了一些: cgit.freedesktop.org/libreoffice/core/tree/sc/source/core/tool 在文件中 interpr?.cxx
Marius

1

相反,我会敦促你明白 功能的逻辑。 你知道吗? Sum 是的,你应该很容易复制。你不知道的事情 - 比如说 vlookup 要么 stdev 有某种 逻辑 - 无论是纯粹的数学还是操作(如 transpose )。学习 怎么样 那些工作,然后围绕逻辑设计你的代码。


感谢您的建议!我打算这样做,从简单的数学开始,然后进入更“棘手”的功能。
BruceWayne
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.