这就要看
ColumnNames
的内容是怎么排列的了
Ubound(ColumnNames
)
取上限
Lbound
取
下限
Ubound(ColumnNames,2)取
数组第二维上限
那你就更要确定ColumnNames
的值是怎么排列的了
查看返回ColumnNames
的那个函数
--------------------------------------
你试着输出横多项
看看其排列情况
多维数组
也可以当一维来看待
用OFFSET或者INDEX可以实现。
1 1 6
2 2 7
3 3 8
4 4 9
5 5 10
6
7
8
9
10
比如Alie是1~10,在C1输入公式
=IF(ROW(A1)>5,"",OFFSET($A$1,ROW(A1)-1+(COLUMN(A1)-1)5,))
往右拉,往下拉,就得到右边的结果
Dim arr, d
arr = Range("g2:h" & [g1048576]End(3)Row)
Set d = CreateObject("ScriptingDictionary")
For i = 2 To [g1048576]End(3)Row
dAdd Cells(i, 7), Cells(i, 8)
Next
For i = 2 To [a1048576]End(3)Row
If dExists(Cells(i, 1)) Then Cells(i, 2) = ditems
Next
---------------------------
数据量12000行。
用常规的VLOOKUP,用时大约25秒,用数组结合字典法,用时15秒。
Sub sof()Dim sso()Dim sarsar = Sheets("sheet1")[A65536]End(3)RowReDim sso(1 To sar)For i = 1 To sar sso(i) = Cells(i, 1)NextDim assd, xoxo = 1assd = InputBox("请输入要分几列输出:")For y = 1 To UBound(sso()) For x = 1 To assd Cells(y, x + 2) = sso(xo) xo = xo + 1 If xo > UBound(sso()) Then Exit Sub NextNextEnd Sub
数组是最快的。。但是很多人 *** 作数组的时候用的方式,方法都不同。。。
所以导致很多简单的处理不如一些collection,dictionar等方法、、
如果你数组 *** 作感觉不过关,用collction就肯定要块了
直接用公式就行
提取前12位数值放在C列
C1输入
=MID(B1,5,12)
下拉
说明:公式 MID(B1,要取的数开始位置,12),
因不知B列具体内容,如不对,改变要取的数开始位置。
可在VBA中,直接将C列内容转为数组
以上就是关于求助大虾:VBA中的Variant字符串数组如何提取出来全部的内容,包括:求助大虾:VBA中的Variant字符串数组如何提取出来、excel vba如何获取列表框里所有内容提取为一维数组、VBA问题,用数组得到VLOOKUP结果,如图要求,谢谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)