求助大虾:VBA中的Variant字符串数组如何提取出来

求助大虾:VBA中的Variant字符串数组如何提取出来,第1张

这就要看

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结果,如图要求,谢谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9297359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存