libreoffice calc - 宏中的可变参数

Posted

技术标签:

【中文标题】libreoffice calc - 宏中的可变参数【英文标题】:libreoffice calc - varargs in macros 【发布时间】:2016-12-13 16:00:08 【问题描述】:

我了解 Excel 有一个 TEXTJOINfunction,它允许将多个值显示为一个元组。

我也了解 Libre Office 确实 - 无论出于何种原因 - 没有它们。

如何编写一个辅助宏 vec 为我生成所需的元组表示?

例如=vec(A1) 应该产生="("&A1&")"

=vec(A1:A3) 应该产生="("&A1&","&A2&","&A3&")"

=vec(A1,X5:X99,Z3) 应该是="("&A1&","&"X5"&","&X6&...&x99&","&Z3&")"

等等等等

一个宏很容易在 bash 中实现,但我想只定义一次然后在 calc 中使用它,而不是不断地从控制台复制到电子表格。

如何在 calc 中实现这一点?

【问题讨论】:

Open Office Spreadsheet (Calc) - Concatenate text cells with delimiters的可能重复 @tohuwawohu 很好,谢谢。肯定会仔细看看。但是,这个问题与建议的解决方案不同,因为我想摆脱值需要在连接范围内的要求 哎呀 - 你是对的,你的问题实际上不是重复的。 【参考方案1】:

根据https://forum.openoffice.org/en/forum/viewtopic.php?f=45&t=67880,如果使用Option Compatible 声明,Basic 函数可以使用可变数量的参数。这使它的行为更像 MS Excel。参数声明为ParamArray pa()

@tohuwawohu 发布的链接显示了所需的大部分实现细节。

要以更原生于 LibreOffice 的方式执行此操作,请编写一个带有 Java 声明的电子表格插件,该声明使用 any[] 作为参数。有关加载项参数类型的信息,请参阅https://www.openoffice.org/api/docs/common/ref/com/sun/star/sheet/AddIn.html

实际功能也可以用Java实现。或者,它可能可以用另一种接受可变数量参数的语言来实现,例如 Python *args

【讨论】:

以上是关于libreoffice calc - 宏中的可变参数的主要内容,如果未能解决你的问题,请参考以下文章

可变参数宏中的参数计数无效

找出可变参数宏中__VA_ARGS__的类型

可变宏中令牌的连接

在指向另一个宏的可变参数宏中为每个参数添加前缀

Spring 3.0 - 无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/securit

Spring 3.0 - 无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/securit