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,前面是列的编号。
这样,就能解决选择性分列的问题。这个问题比较复杂,还需要研究,官方也没有出来解答过,供各位有需要的朋友参考。其他参数都较为简单,不再赘述。
创作者俱乐部成员