ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 山菊花

墙上那一串串红辣椒——数组入门讲座

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2006-11-24 18:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:数组集合和字典

谢谢 收藏了 

TA的精华主题

TA的得分主题

发表于 2006-11-25 13:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-11-28 22:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

我很开心

我很开心

我很开心

我很开心

TA的精华主题

TA的得分主题

发表于 2006-12-5 22:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
今天就利用数组做个东西哈哈,原来我是多么无知啊!一个东西循环很多次,慢得很,用数字就非常快了哈哈。山菊花老师!!致敬了!!!

TA的精华主题

TA的得分主题

发表于 2006-12-6 14:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

看了山菊花老师的数组,似乎懂了点。可在实际应用中,还是不行呵呵。下面是我的问题,如果老师有时间看看好吗?没时间能给个思路也好啊呵呵!
我把Range("A1:H" & Range("A65536").end(xlup).row)定义为一个数组:Yarray(),
dim endr as integer
dim Yarray() as integer    '因为数据不多,最多500行,所以我定义为整数型
endr=range("a65536").end(xlup).row
ReDim Yarray(endr,8)
这样对吗?

然后,把这8列数据,从最后一行开始往上每隔一行写在同行的9列到16列(红色的字是我不会做的内容呵呵,汗!)
就像这样:
12345678
22345678
32345678
42345678
52345678                  12345678
62345678                  32345678
72345678                  52345678
82345678                  72345678
92345678                  92345678

谢谢了山菊花老师!!期待您的到来!!

[此贴子已经被作者于2006-12-6 18:57:25编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-6 19:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复:(啊一)

1、关于数据类型

工作表单元格中数据的类型为 Variant 。

程序中用 DIM 语句把数组Yarray 声明为 Integer 类型,与单元格数据类型不相一致,会导致错误,应把数组 Yarray 声明为 Variant 类型。
 

2、ReDim 语句是重新分配存储空间,下面代码并不会把单元格区域的值写入数组:

ReDim Yarray(endr)

该语句只是规划数组的大小,好像在白纸上画些格子一样,格子中还是空白,没有数字。

下面的代码才是把单元格区域中的值写入数组:

Yarray = Range("a1:h" & endr).Value

使用该形式给数组赋值,可以不用事先声明,系统在赋值时自动声明数组。

3、隔行复制数据

方法可以多样,下面附件供参考:

sFNBwKkD.rar (9.81 KB, 下载次数: 270)


TA的精华主题

TA的得分主题

发表于 2006-12-6 19:18 | 显示全部楼层
呵呵,你不知道我高兴成啥了呵呵,快晕过去了哈哈,我原来可是用了很多嵌套循环语句啊,巨慢无比。我想根据我的系统配置不应该那么慢的,后来发现了山菊花老师的数组,我忽然眼前一亮,我完全可以用数组来做,可做起来就不那么容易了,弄了一个下午,百思不得其解啊!现在老师给了方法,真的好高兴。太感谢了!!就做您的学生了呵呵,老师在上,受愚徒一拜!!!呵呵,开心啊!!

TA的精华主题

TA的得分主题

发表于 2006-12-6 19:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

山菊花老师语:“该语句只是规划数组的大小,好像在白纸上画些格子一样,格子中还是空白,没有数字。”

呵呵,一针见血啊,我在监视窗口就是看到的全是空值,没有东西,我当时不知道为什么呵呵,现在老师给了答案,解开了谜团,谢谢了,我现在对它的运行过程还不是很了解,我再好好想想去呵呵。

辛苦了山菊花老师!

TA的精华主题

TA的得分主题

发表于 2006-12-6 21:21 | 显示全部楼层
好啊,到处找,没有这方面的书,太好了,请兰老师多讲这方面的知识。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-7 11:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复:(啊一)隔行复制

直接单元格复制:

QUOTE:

Private Sub CommandButton2_Click()
    Dim nRow As Long, nRow2
    nRow = Range("a65536").End(xlUp).Row
    nRow2 = nRow
    For i = nRow To 1 Step -2
        Range("i" & nRow2).Resize(1, 8) = Range("a" & i).Resize(1, 8).Value
        nRow2 = nRow2 - 1
    Next
End Sub

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-24 03:23 , Processed in 0.035840 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表