打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
带您走进VBA数组7
数组里常用的函数
1.LBound 取得数组的上标
这个用的比较少,因为上标默认的是0和1
2.Ubound取得数组的下标
这个函数很多,不过大家要注意 对一维数组来说,只有一个下标 如 ubound(arr1)和ubound(arr1,1)是一样的
而对二维数组来说,就有二个下标了.一个是行,也就是说一维的下标,一个是列,是二维的下标
一维上的下标 ubound(arr1)和Ubound(arr1,1) 是一样的,而二维上的下标 Ubound(arr1,2)
3.Split:按照某一字符串拆分成一个一维数组,且上标从0开始
Sub Split的用法1() 'Split生成数组是一维的,且最小索引是从0开始的
Dim arr1
arr1 = VBA.Split(Range("A1"), ",")
[C1].Resize(1, UBound(arr1, 1) + 1) = arr1 '为什么要加1,因为最小上标是从0开始,所以加1
End Sub
Sub Split的用法2() 'Split生成数组是一维的,且最小索引是从0开始的
Dim arr1
arr1 = VBA.Split(Range("A1"), ",")
[C3].Resize(UBound(arr1, 1) + 1, 1) = Application.WorksheetFunction.Transpose(arr1) '为什么要加1,因为最小上标是从0开始,所以加1
End Sub
4.Join:按照某一字符串把一个一维数组合并成一串字符
Option Explicit
Sub Jion的用法1() '大家记得函数Jion第一参数的数组只能是一维的
Dim MaxRow%, arr1, arr2
MaxRow = Cells(Rows.Count, 1).End(xlUp).Row
arr1 = Range("A1:A" & MaxRow)
arr2 = Application.WorksheetFunction.Transpose(arr1)
[B1] = VBA.Join(arr2, ",")
End Sub
Sub Jion的用法2()
Dim MaxColumn%, arr1, arr2, arr3
MaxColumn = Cells(1, Columns.Count).End(xlToLeft).Column
arr1 = Range(Cells(1, 1), Cells(1, MaxColumn))
'    arr2 = Application.WorksheetFunction.Transpose(arr1)’把二维的横向转为二维纵向数组
'    arr3 = Application.WorksheetFunction.Transpose(arr2)’再把二维的纵向数组转为一维的横向数组
arr3 = Application.Transpose(Application.Transpose(arr1)) '可以省略WorksheetFunction
[AB2] = VBA.Join(arr3, "")
End Sub
5.InStr.找到一个字符串在另一字串中的位置,有点像工作簿函数的Find函数,它比Find函数还好用,因为它如果找不出就返回0,不会报错
Sub Instr的用法()
'InStr相当于工作表内置函数Find
'VBA.InStr(从要那一串字符串中找,要找的字符串
'作用是返加这个要找的字符串在那一串字符串的位置
'如果找不到就返回0
Dim arr1, arr2(1 To 100, 1 To 2), x%, k%
arr1 = Sheets(6).UsedRange
Range("D1:F1048576") = ""
For x = 2 To UBound(arr1, 1)
If VBA.InStr(arr1(x, 1), "李") <> 0 Then
k = k + 1
arr2(k, 1) = arr1(x, 1)
arr2(k, 2) = arr1(x, 2)
End If
Next x
[D1:E1] = Array("名称", "数量")
[D2].Resize(k, 2) = arr2
End Sub
'总结一下,InStr函数方便一些,不用转一维
6.InStrRev和I民InStr相反,默认找到一个,而InStrRev找最后一个
Sub InStrRev用法() '从st里提取工作簿名称
Dim st$, x%
st = "E:\桌面\VBA入门进阶36讲视频\X第二十四讲数组实战二\数组.xls"
x = InStrRev(st, "\") '找到最后一个"\" 的位置
MsgBox Right(st, Len(st) - x)
End Sub
7.Filter:从一个一维数组中筛选满足条件的
Sub Filter的用法()
Dim MaxRow%, arr1, arr2, arr3
MaxRow = Cells(Rows.Count, 1).End(xlUp).Row
arr1 = Range("A2:A" & MaxRow)
arr2 = Application.WorksheetFunction.Transpose(arr1)
arr3 = VBA.Filter(arr2, "李", True) '如果你筛选不包含“李”字的,那么就把True改为False
[C1] = "名称"
[C2].Resize(UBound(arr3, 1) + 1, 1) = Application.WorksheetFunction.Transpose(arr3)
End Sub
8.调用工作表内置函数Index
Sub Index的用法()
Dim MaxRow&, arr1, x%
MaxRow = Cells(Rows.Count, 1).End(xlUp).Row
arr1 = Range("A2:E" & MaxRow)
For x = 1 To UBound(arr1, 1)
If arr1(x, 4) < 2000 Then
arr1(x, 5) = "偏低"
End If
Next x
[E1] = "备注"
'这里注意一下,以后我们在学函数时,Index第二参数可以省略,在VBA里大家要用0,不能省略,省略会报错
[E2].Resize(UBound(arr1, 1), 1) = Application.WorksheetFunction.Index(arr1, 0, 5)
End Sub
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
(18)数组,Split拆分,join合并,Filter搜索
Excel VBA 9.4 数组写入excel的方法和技巧
【源代码】一键导出CAD块属性到表格
vba将excel单元格区域转化为数组
vba数组函数与方法
“VBA”学习笔记
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服