前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WPS JS宏——数组Array对象

WPS JS宏——数组Array对象

作者头像
xyj
发布2022-12-01 11:38:33
3.4K0
发布2022-12-01 11:38:33
举报
文章被收录于专栏:VBA 学习VBA 学习
代码语言:javascript
复制
操作系统:Linux version 4.4.131.D001.64.190906 (YHKYLIN-OS@Kylin)
WPS版本:WPS Office 2019 WPS表格(11.8.2.10533)

数组这种数据结构,应该在绝大多数语言都有实现,使用起来直接使用下标就可以获取想要的数据,在编程过程中几乎是必不可少的。

VBA中的数组只有很少的几个函数可以操作:

代码语言:javascript
复制
Ubound  取数组的上标
Luound  取数组的下标
Filter  筛选一维数组
Join    将一维的String类型数组连接为1个字符串

Array  生成1个Variant类型的数组
IsArray  判断1个变量是否是数组
Erase  释放数组所占资源

VBA的数组功能比较的少,但是在JS中,数组也是一种对象,JS已经在这个对象上实现了很多的属性和方法,编程过程中直接调用即可,使用起来就方便了很多:

代码语言:javascript
复制
join  和VBA中的一样,连接为字符串,不需要一定是String类型
push  添加元素到末尾
pop    从末尾删除元素,这2个方法不需要使用的人去关注数组是否越界,JS会帮忙处理好
unshift  添加元素到数组开头
shift  删除开头的数组
sort  对数组进行排序,可以自定义比较函数,用来确定排序的方式
reverse  反转数组
concat  连接另外1个数组构成新的数组
slice  创建子数组
…………

有这么多的方法仅仅是因为JS帮忙实现好了,可以简单理解为在VBA中,也可以自己去实现这些操作数组的函数,然后调用。

当然一般的使用者写的函数可能效率比较低,没有JS这种设计语言的人写的好。

在Excel中使用VBA或者JS,涉及数组这一块,单元格与数组之间的直接赋值,是非常的方便的。

在A1到B5单元格输入公式=ADDRESS(ROW(),COLUMN()),获取单元格地址,然后进行测试:

代码语言:javascript
复制
function testRange2Array() {
 var arr = Range("A1:B5").Value2

 for (x in arr) {
  for (y in arr[x]) {
   Debug.Print("行" + x.toString() + " 列" + y.toString() + " value = " + arr[x][y])
  }
 }
}

用过VBA的应该都知道,这个输出应该是(VBA里数组获取单元格的数据后下标是从1开始,JS中是从0开始):

代码语言:javascript
复制
行0 列0 value = $A$1
行0 列1 value = $B$1
行1 列0 value = $A$2
行1 列1 value = $B$2
行2 列0 value = $A$3
行2 列1 value = $B$3
行3 列0 value = $A$4
行3 列1 value = $B$4
行4 列0 value = $A$5
行4 列1 value = $B$5

可是在国产系统的WPS上,输出却是:

代码语言:javascript
复制
行0 列0 value = $A$1
行0 列1 value = $A$2
行1 列0 value = $A$3
行1 列1 value = $A$4
行2 列0 value = $A$5
行2 列1 value = $B$1
行3 列0 value = $B$2
行3 列1 value = $B$3
行4 列0 value = $B$4
行4 列1 value = $B$5

这个和原来的习惯是完全不一样了,不知道是bug还是故意做这样的设计!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 VBA 学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档