-
Bryce 小试身手Lv3
发表于2022-7-7 14:18
楼主
本帖最后由 Bryce 于 2022-7-7 14:37 编辑
如果我们在表格中输入一个数组作为浮动表元,那么计算后可以自动根据数组的内容进行浮动,但是如果这个数组是通过sql数据源取来的,那么就不会有这种浮动效果,如下图展示,这是因为这种计算是基于内存的,不是sql,那么如果想要让sql数据源取来的数组浮动,该如何实现呢?
计算后——>
其实我们可以想办法让他转化一下,这里提供一种思路,有其他简单的办法也欢迎评论区一起讨论~
一维数组
我们知道字符串可以通过split函数返回一个数组,那我们先将sql取来的数组转换成一种split函数可以作用的格式,如下图所示,首先利用REPLACEREGEX函数将['1','2','3']转化为字符串1,2,3,表达式为:REPLACEREGEX(REPLACEREGEX(REPLACEREGEX(GRID2.A1,"\[","",true),"\]","",true),"'","",true),一些特殊字符要在分隔字符参数值前面加转义符"\"。
转化成功后加上.split(","),再加上浮动,效果就实现啦
二维数组
二维数组的处理跟一维数组也很相似,表达式为:REPLACEREGEX(REPLACEREGEX(REPLACEREGEX(REPLACEREGEX(REPLACEREGEX(GRID4.A1,"\[\[","",true),"\]\]","",true)"\[","",true),"]","",true),":",",",true),虽然表达式看着长,但是其实都是很简单的替换,转化如下图所示
这样转化了之后如何取到想要的数据呢,如果单纯加一个.split(","),会浮动出12层来,并不是我们想要的效果,我们希望后面有两列,一列浮动出x的值,一列浮动出y的值,所以我们可以在.split(",")的后面再加一个.split(4),分隔成一个二维数组,这里参数根据需求有改变,这样就浮动出来三个数组,分组后如下图所示。
接下来我们只需要用.getcol()函数取数就可以啦
如果我们在表格中输入一个数组作为浮动表元,那么计算后可以自动根据数组的内容进行浮动,但是如果这个数组是通过sql数据源取来的,那么就不会有这种浮动效果,如下图展示,这是因为这种计算是基于内存的,不是sql,那么如果想要让sql数据源取来的数组浮动,该如何实现呢?
其实我们可以想办法让他转化一下,这里提供一种思路,有其他简单的办法也欢迎评论区一起讨论~
一维数组
我们知道字符串可以通过split函数返回一个数组,那我们先将sql取来的数组转换成一种split函数可以作用的格式,如下图所示,首先利用REPLACEREGEX函数将['1','2','3']转化为字符串1,2,3,表达式为:REPLACEREGEX(REPLACEREGEX(REPLACEREGEX(GRID2.A1,"\[","",true),"\]","",true),"'","",true),一些特殊字符要在分隔字符参数值前面加转义符"\"。
转化成功后加上.split(","),再加上浮动,效果就实现啦
二维数组
二维数组的处理跟一维数组也很相似,表达式为:REPLACEREGEX(REPLACEREGEX(REPLACEREGEX(REPLACEREGEX(REPLACEREGEX(GRID4.A1,"\[\[","",true),"\]\]","",true)"\[","",true),"]","",true),":",",",true),虽然表达式看着长,但是其实都是很简单的替换,转化如下图所示
这样转化了之后如何取到想要的数据呢,如果单纯加一个.split(","),会浮动出12层来,并不是我们想要的效果,我们希望后面有两列,一列浮动出x的值,一列浮动出y的值,所以我们可以在.split(",")的后面再加一个.split(4),分隔成一个二维数组,这里参数根据需求有改变,这样就浮动出来三个数组,分组后如下图所示。
接下来我们只需要用.getcol()函数取数就可以啦