(已解决) 集算器桌面版插件的两个小问题

桌面版插件 (SPL XLL) 早些时候在使用时碰到两个问题,因为问题不大,也不迫切,所以一直没有求助。怕以后忘记了,所以归纳记录一下,恳请大佬们有空时看看是咋回事。

第一个问题:文本长度限制于 255 的问题,超过 255 会被截断。

这个问题之前在另外帖子中顺带提过, Excel 如何用分隔符将字符串拆分后填充到指定区域
老贼也回复了,是 Excel 接口的问题。等大佬们有空时调试解决,静候佳音。

第二个问题:join 函数在 Excel 插件中使用时,用数列过滤时数据显示不全。注意,这个数列是在 spl 语句中直接写入的,并不是通过引用外部的数据得到的。

情况是这样的,我用序表跟一个数列做 join@i,相当于做过滤的动作,此时显示有点出乎意料,正常应该是对应于 [2,3,5] 的 3 条记录。如下所示:

=spl("=E(?).join@i(学号,[2,3,5,7,8,9])",A1:E7)

imagepng

或者用 join@d 时也会出现异样,正常应该是对应于 [1,4,6] 这 3 条记录:

=spl("=E(?).join@d(学号,[2,3,5,7,8,9])",A1:E7)

imagepng

这个写法在集算器里是正常出结果的,但在 Excel 插件中结果显示不一样,早些时候测试时干脆啥都没有显示。集算器里的数据如下,可复制使用:

A B C D E
1 学号 ID 日期 姓名 成绩
2 1 001 2024/4/1 乞丐 96
3 2 002 2024/4/2 教头 99
4 3 003 2024/4/3 小阿悄 98
5 4 004 2024/4/4 师爷 99
6 5 005 2024/4/5 车夫 95
7 6 006 2024/4/6 纳三少 97
8
9 =[A1:E7].record(5)
10 =A9.join@i(学号,[2,3,5,7,8,9])
11 =A9.join@d(学号,[2,3,5,7,8,9])

上述写法如果加上 m 选项,结果就会在 Excel 插件中正常显示:

imagepng

imagepng

但是,使用 m 选项是有前提的,对应的列必须有序,才能归并处理。

还有一个,如果关联的不是数列,而是一个单列的表,结果显示也是正常的,比如把上述的数列变成一个单列表,结果正常(注意一下,此时这个单列的表引用于外部数据,不是直接在 spl 语句中写入的,如果直接在语句中写成表的形式,比如,用序列.record(1) 构建单列的表,也会出现问题)如下:

=spl("=E(?).join@i(学号,E(?):学号)",A1:C7,E1:E7)

imagepng

此时,如果把单列的表变成序列,结果也是正常显示:

imagepng

甚至把数据引用成序列,结果也会正常显示,如下:

imagepng

以上 3 中情况,引用的都是外部的数据。所以,在 spl 语句中直接写成数列,结果就会有问题,写成外部数据的引用就不会有问题。而且,只有数列会出现问题,如果是文本型序列,或者日期序列都不会有问题。 比如,姓名列是文本型,过滤结果正常,其它的列,诸如文本型的 ID 列,日期类型的列,结果均能正常显示:

=spl("=E(?).join@i(姓名,""小阿悄,车夫,教头"".split@c())",A1:E7)

imagepng

=spl("=E(?).join@i(ID,""002,003,005,007,008,009"".split@c())",A1:E7)

imagepng

=spl("=E(?).join@i(date(E(日期)),[date(202404,1),date(202404,3),date(202404,5)])",A1:E7)

imagepng

Excel 附件如下:

joinxlsx