商务服务
VBA信息获取与处理第四个专题第三节:VBA数组数据回填工作表
2025-01-12 11:03

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。

【分享成果,随喜正能量】心中有法喜、有慈悲,散发出来气质就是欢喜与祥和;这些可以从一个人的音声、动作中感受得到。。

这个专题,我们讲解工作表数据的处理的问题,对于VBA而言,我给予的定位是“实现个人小型数据自动化处理的利器”,对于大多数朋友而言,利用VBA是与EXCEL相关联的,很多的代码也是用于处理EXCEL内或者相关的各种数据,工作表更是作为和用户的交互对象而存在,那么对于工作表的数据如何进行查找,以及如何读取就是一个十分关键的课题,我们这讲就来主要讲解这个问题。

在前两节我们讲了如何将工作表中的数据读到数组中,这种操作的实质其实是:将数据预存到内存中,然后在内存中调取数据再进行下一步操作,这样可以节约反复提取数据的时间。

当我们在内存中将数据计算完成后,需要将结果数组回填给工作表,又要注意哪些问题呢?对于工作表而言,可以回填的是数组可以是一维或二维的。我们在这一节和下一节将讲解数组回填工作表的问题。本节先讲解一维数组的回填。

一维数组回填原则:若要将一维数组写入工作表,必须创建一个Range对象,将该范围调整为数组的大小,然后写入该范围。

假设我们有一个一维数组,并希望从单元格A1开始将其写入工作表。代码必须首先调整目标范围的大小。例如下面的代码:

Sub MYNZE() '一维数组数据的回填方案

Dim Arr As Variant

Dim MyRange As Range

Sheets("SHEET4").Select

Arr = Array("大象", "老虎", "狮子", "狐狸")

Set MyRange = Range("A1")

Set MyRange = MyRange.Resize(1, UBound(Arr) + 1)

MyRange.ClearContents

MyRange.Value = Arr

MsgBox "ok!"

End Sub

代码截图:

代码讲解:上述代码首先从Arr = Array("大象", "老虎", "狮子", "狐狸")中取得数组的数据,当然,这里我没有对取得的数组数据做任何的计算处理,只是回填的操作。在回填数据的时候,先获取要回填区域的基准单元格,这里我给出的是A1,然后将以这个单元格为基准进行扩展,扩展到和数组同样大小的区域:即 Resize(1, UBound(Arr) + 1),最后进行数据的回填。关于单元格的Resize属性,在我的教程《VBA代码解决方案》中有详细的讲解大家可以参考。

这里我们要注意的是对于对象变量的赋值用的是SET: Set MyRange = Range("A1"),这一点在我的教程《VBA中类的解读及应用》中已经详细的说明,大家要注意对象变量和普通变量的区别。

在整个代码中还利用了单元格的ClearContents属性对单元格进行回填前的清理工作。

最后我们看看代码的运行结果:

对于一维数组的回填我们还要注意:当回填区域比数组大时,多余的区域会出现”#N/A”符号,表示没有数据可以回填。

二维数组回填原则:如果将二维数组回填工作表,则需要使用“Resize”将目标范围调整为适当的大小。第一个维度是行数,第二个维度是列数。

下面的代码演示如何从单元格A1开始将数组Arr写入工作表:

Sub MYNZF() '二维数组数据的回填方案

Dim Arr As Variant

Dim MyRange As Range

Sheets("SHEET4").Select

Arr = Sheets("SHEET2").Range("A1:b9")

Set MyRange = Range("A1")

Set MyRange = MyRange.Resize(UBound(Arr, 1), UBound(Arr, 2))

MyRange.ClearContents

MyRange.Value = Arr

MsgBox "ok!"

End Sub

代码的截图:

代码讲解:上述代码首先从工作表SHEET2中提取数据放到数组之中,这里的数据没有任何的修改:Arr = Sheets("SHEET2").Range("A1:b9"),对于基准单元格我们利用了Resize 语句来扩展单元格。MyRange = MyRange.Resize(UBound(Arr, 1), UBound(Arr, 2)) ,这个语句中UBound(Arr, 1)是扩展的是行数,UBound(Arr, 2)是扩展的是列数。

下面我们看代码的运行结果:

和一维数组的回填一样:当回填区域比数组大时,多余的区域会出现”#N/A”符号,表示没有数据可以回填。

本节知识点回向:数组数据如何回填到工作表?回填的原则是什么?

本专题参考程序文件:004工作表.XLSM

我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:

    以上就是本篇文章【VBA信息获取与处理第四个专题第三节:VBA数组数据回填工作表】的全部内容了,欢迎阅览 ! 文章地址:http://www78564.xrbh.cn/news/32525.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 迅博思语移动站 http://www78564.xrbh.cn/mobile/ , 查看更多   
最新文章
哈尔滨威尔特制衣厂
我是哈尔滨威尔特制衣厂的肖庭波,联系地址是哈尔滨服装城附近哈西商厦,我们公司是在黑龙江哈尔滨的个体私营公司,公司专注于服装
节到张家界武陵源必去地
节到张家界武陵源必去地长假想找个地方玩玩?张家界武陵源绝对是个好选取,这里风景绝美空气清新关键是人虽然多,但美景还是能让
超节点成WAIC焦点 未来国产GPU替代率或超80%
在人工智能产业蓬勃发展的当下,算力作为其核心驱动力,重要性不言而喻。然而,国产算力在前进的道路上却面临着诸多阻碍,发展现
原创樊振东上新闻联播了!加盟德甲真相曝光,背后战略价值惊人
央视《新闻联播》在体育强国专题报道中播放了网球选手郑钦文和乒乓球运动员樊振东的画面。 整个乒乓球项目只出现了樊振东一人,
山姆上新「周黑鸭风味鸭肉酱」,瑞幸推出乳酸菌美式和乳酸菌冰茶...|一周热闻
新产品1、20年来最大创新!百事在北美推出益生元可乐2、特别添加专利乳酸菌!瑞幸上新「乳酸菌美式」和「乳酸菌冰茶」3、美容成
多款新车与全域AI技术惊艳WAIC,吉利智能科技进入爆发期
原创|Jaden  编辑|Cong在正在举办的2025世界人工智能大会(WAIC 2025)上,集团携阶跃星辰联合参展,9X、10EM-P、A7和吉利银
云南施甸县:“善洲青苗课堂”守护青少年健康成长
中国青年报客户端讯(中青报·中青网记者 张文凌)今年暑假,共青团云南保山市施甸县委依托“返家乡”“三下乡”社会实践大学生
一年60万赴美留学值吗?这届留学生开始找“平替”
21世纪经济报道记者陈洁 实习生张星雨 广州、重庆报道从7月中旬开始,多省份陆续公布本科普通批,高校录取工作逐步推进。然而,
惠民贷延期还款会影响分期吗?2025最新解析指南,必看避坑省钱秘籍!
惠民贷延期还款会影响分期吗?2025最新解析指南,必看避坑省钱秘籍!惠民贷推迟还款是许多人应急时的救命稻草,但推迟会不会作用
舟山进口茶叶中文标签备案
,公司自有进出口权,酒类商品批发许可证、食品流通许可证、中国食品土畜牧进出口商会会员证、对外贸易经营者备案登记证、自理报