WPS JSA 宏 中分列功能的相关问题研究

在工作中,要使用JSA 对数据进行分列,因为不会写,就准备录制宏来看看,结果发现有时候能录制宏,有时候不能录制。碰到能录制的时候,将其记录下来。

如下图,将A列中的数据,以“-”为分割进行分列,其生成的代码如下:

📌

Selection.TextToColumns(Range("A1"), xlDelimited, xlTextQualifierDoubleQuote, false, true, false, false, false, true, "-", Array(Array(1,1),Array(2,1),Array(3,1)), undefined, undefined, true);

有时候,你重新运行它是不行的,主要问题在于你要先在外面选择列之后再运行,才能产生Selection,才能正常运行。

经过摸索,发现这里的Array有点意思,就是红色的部分,可以看出,这里边的Array代表的应该就是分列后的数据列,前面的1、2、3代表分列时的第几列,对应的相当于手动点分列时第2步时下方预览分列效果出现的列的编号,后面的1不知道代表什么意思,反正手动改成很多值也没有啥变化。但是让人惊奇的就是,把第二个参数改成9的时候,分列后的结果就不会出现这一列。

比如上面的张三 男 23 ,如果我分列,我可能只想要张三、男,这两列,那红色部分就改成Array(Array(3,9)),这样就只会出现第一列和第二列,第三列就删除了。再测试,发现Array()里边写什么好像不大重要,就是你要不保留那一列的话,就在里边写上参数9,比如不要后面的两列,只要姓名张三,就可以写成Array(Array(2,9),Array(3,9)),也就是第2列和第3列不要,写谁就不要谁,其他要的写不写都不影响,再比如不要第一列,就写成Array(Array(1,9))。

我不知道官方是怎么设计这个Array的,但是测试出来的结果,就是不要谁,就把谁后面的数字改成9,前面是列的编号。

这样,就能解决选择性分列的问题。这个问题比较复杂,还需要研究,官方也没有出来解答过,供各位有需要的朋友参考。其他参数都较为简单,不再赘述。

广东省
浏览 777
收藏
2
分享
2 +1
2
+1
全部评论 2
 
wils
wils

创作者俱乐部成员

查一下excel的文档 这里Array(Array(x,y)),外面是一层数组,里面是每列一个数组,里面这个数组第一项是列号,第二项是类型,9表示不显示这一列。。。 但是,js里还是习惯读取range后,split,写回range的方式,而不是调用分列方法。。。
· 海南省
1
回复
耀愿
你说的更全面,多谢啦,受教了。 呵呵,我的需求是对日期列进行处理,把文本的日期列通过分列的方式来转变为日期列,相当于就地处理,只能采用分列并只用第一列的方法了。
· 广东省
1
回复