各位,下午好,请问VBA中vba不能给数组赋值值给另一区域时,数组内元素少可以运行,但数据多了提示数据类型不匹配?

查看: 3537|回复: 13
如何把可见单元格区域赋值给数组?
阅读权限30
在线时间 小时
请教一下,我有一个处于自动筛选状态的sheet,现在想把筛选出来的内容赋值给一个数组,也就是说把可见单元格部分赋值给数组,试了以下两种写法
1、arr = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).EntireRow
2、arr = ActiveSheet.Range(&a1:& & [ad65535].End(xlUp).Row).SpecialCells(xlCellTypeVisible)
第一种写法的结果是只得到包含第一行内容的一维数组,第二种写法直接弹出出错提示
正确的写法应该是怎么样的?
阅读权限30
在线时间 小时
一个取巧的方法是先复制筛选结果到其他的单元格,然后再赋值给数组
阅读权限20
在线时间 小时
可以用Find 方法查找,找到后,将匹配的该行的数据赋值给数组。
阅读权限95
在线时间 小时
不连续区域不能写入数组,可以用Areas 属性变通一下:Sub Macro1()
& & Dim rng As Range, arr
& & For Each rng In ActiveSheet.Range(&a1:& & [ad65535].End(xlUp).Row).SpecialCells(xlCellTypeVisible).Areas
& && &&&If rng.Cells.Count & 1 Then
& && && && &arr = rng '数组处理
& && &&&Else
& && && && &'对单元格rng直接操作
& && &&&End If
& & Next
End Sub
复制代码
阅读权限30
在线时间 小时
zhaogang1960 发表于
不连续区域不能写入数组,可以用Areas 属性变通一下:
2楼和4楼的方法我都想到过,如果数据量大的话,是否用2楼的方法速度会更快一些?
阅读权限95
在线时间 小时
<font color="#241 发表于
2楼和4楼的方法我都想到过,如果数据量大的话,是否用2楼的方法速度会更快一些?
如果不计算复制过程所用的时间,2楼方法肯定最快
实际情况不好说,如果特殊区域不是太分散,4楼方法应该最快
阅读权限95
在线时间 小时
筛选一般属于前台的操作,建议在代码中尽量少用筛选。应该将筛选条件作为循环判断条件,对数据区进行循环判断,满足条件的写入新数组
阅读权限30
在线时间 小时
doitbest 发表于
筛选一般属于前台的操作,建议在代码中尽量少用筛选。应该将筛选条件作为循环判断条件,对数据区进行循环判 ...
追根问底一下,
1、什么叫前台操作?
2、为什么代码中要尽量少用筛选等前台操作?
3、如果我要操作一个10万行100列的表格,其中有6万条记录是符合条件的,2楼的过渡法和循环写入法,估计哪个更快一些?
阅读权限95
在线时间 小时
前台操作就是手工操作
用循环结合判断完全可以达到筛选的效果,筛选主要是为前台手工操作用的。个人看法
循环判断读入数组当然快于过渡法
阅读权限50
在线时间 小时
不连续区域不能写入数组,可以用Areas 属性变通一下:
赵老师,能做个不连续区域通过变通方法赋值给数组的实例吗?
我测试了一下这个代码,结果只能把最后的连续区域赋值给数组,
如果要多个不连续区域一起赋值给数组,该怎么处理呢?
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师君,已阅读到文档的结尾了呢~~
c#复习资料,c语言,cf,c罗,c语言编程软件,c站,c语言教程,c
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
c#复习资料
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口Vba数组去重复请教比如我想将[B2:B10]区域中提取不重复的数据写入数组变量中该怎么样写会比较好呢?
字典最合适,代码如下:Sub AA()arr = Range("B2:B10")Set d = CreateObject("scripting.dictionary")For i = 1 To UBound(arr)d(arr(i,1)) = ""Next[C2].Resize(d.Count) = Application.Transpose(d.keys)Set d = NothingEnd Sub
CreateObject("scripting.dictionary")
Application.Transpose(d.keys)
请问这两句是什么意思呢
CreateObject("scripting.dictionary") 创建字典对象
[C2].Resize(d.Count)=Application.Transpose(d.keys)
d.keys转置后放入C列。
为您推荐:
扫描下载二维码扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
浙ICP备号-2
扫一扫,把题目装进口袋}

我要回帖

更多关于 excel vba 数组赋值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信