VBA二维数组追加数据

这篇具有很好参考价值的文章主要介绍了VBA二维数组追加数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

redim对二维数组扩展时会丢失数据,即使使用Preserve参数,也不行。

如果使用了 Preserve 关键字,就只能重定义数组最末维的大小,且根本不能改变维数的数目。

本例试图解决这样一个问题:从EBS报表中导出Accout弹性域的值,其中文本格式的,有许多题头类的脏数据,必须过滤;我试着在读取文本的时候将line读取的行字符串装入数组ary1(一维),再将ary1数组装入数组ary2(二维),最后以ary2直接赋值给range对表,快速将Account List主要信息提取到指定工作表上。

问题来了,起初写代码的将ary1装入ary2时,总是这样哪样错误,不能重定义啊、下界超标啊,最终是实现了需求,但代码不简洁。

晚上有空,写个数组相加的函数解决上面的难点,例子如下:

vba数组添加数据,算法

将上图中的数据装入数组,再将数组复制给b,最后将b数据接合到a数据的后面,生成一个将数组;

Sub main()

Dim d() '声明动态数组

a = [A1:C4]

b = a   '直接复制数组

d = b

Debug.Print d(4, 2), "Redim前"
ReDim d(8, 3)        '只有增加最后一维数组的大小时,不会丢失数据
Debug.Print b(4, 2)
Debug.Print d(4, 2), "Redim后"

c = addArr(a, b)

Debug.Print b(4, 2)
Debug.Print c(8, 2), "addArr后"

End Sub



Function addArr(a, b)
'mayc2023-03-02 17:26:19追加一个数组到另一个数组

Dim aAdd()

'ReDim addArr(8, 3)     '不能对函数名代表的数组进行动态声明,仅在其第一次被赋值时可以指定其数组的维度和大小

ReDim aAdd(1 To (UBound(a) + UBound(b)), 1 To UBound(a, 2))

For i = 1 To UBound(a)

    For j = 1 To WorksheetFunction.Max(UBound(a, 2), UBound(b, 2))
'        这里只假设了a,b都是二维数组,第二维度可能不一样;
'        但并没有处理不一样时的数组对齐问题,这是不是一个矩阵问题?mayc2023-03-02 19:54:33
            aAdd(i, j) = a(i, j)
        
    Next
    
Next

For i = 1 To UBound(b)

    For j = 1 To WorksheetFunction.Max(UBound(a, 2), UBound(b, 2))
        
            aAdd(i + UBound(a), j) = b(i, j)
        
    Next
    
Next

addArr = aAdd

End Function

就在写这个文章的时候,想到上面的代码还是可以进一步优化的,比如定义个类,和类属性,完成a.add b,结果就是a追加了b的数据在尾部:)文章来源地址https://www.toymoban.com/news/detail-598293.html

到了这里,关于VBA二维数组追加数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VBA技术资料MF35:VBA_在Excel中过滤数据

    【分享成果,随喜正能量】好马好在腿,好人好在嘴。不会烧香得罪神,不会讲话得罪人。慢慢的你就会发现,一颗好心,永远比不上一张好嘴。。 我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。

    2024年02月14日
    浏览(29)
  • VBA 连接ACCESS数据库

    在外部进行变量声明 如果报错:用户定义类型未定义,可能是未引用所虚的外部库,在工具-引用中添加 连接数据库 ,本例通过按钮的click事件连接,并将数据库内容填到单元格中 rs.Open SQL, con, adOpenKeyset, adLockOptimistic 中第三和第四个参数是限制记录是否可读写和锁定的,具

    2024年02月12日
    浏览(45)
  • Excel·VBA单元格区域数据对比差异标记颜色

    之前的一篇博客《Excel·VBA单元格重复值标记颜色》,是对重复的整行标记颜色 而本文是按行对比2个单元格区域的数据,并对有差异的区域(一个单元格区域有的,而另一个单元格区域没有的)标记颜色,且只要存在任意1个字符不同的,则标记颜色 代码写为自定义函数使用

    2024年02月07日
    浏览(37)
  • VBA-自定义面板,使用SQL查询Excel数据

    定制插件,实现用户打开任意一个工作簿,写sql对Excel中的数据进行查询 需求 筛选日期小于’2023-4-24’,按group字段分组,求和各分组下的销售额,返回结果集新建工作表写入 数据源 现在有两个表, 一个用户的销售金额表,记录用户不同日期的销售金额,其中date字段是日期

    2024年02月01日
    浏览(24)
  • VBA智慧办公6——日期自动更新及数据每日更新

    目录 前情提要 VBA获取当前日期 正文测试 目标要求 获取最新行  获取时间 时间格式录入 总代码 效果 前情提要 VBA获取当前日期 在这个示例中,我们首先声明了一个名为 today 的 Date 对象,然后将其赋值给变量 today 。这将返回当前日期和时间。 您还可以使用 Now 函数来获取当

    2024年02月06日
    浏览(32)
  • VBA之正则表达式(43)-- 从网页中提取指定数据

    实例需求:由网页中提取下图中颜色标记部分内容,网页中其他部分与此三行格式相同。 【代码解析】 第6行代码创建正则对象。 第7行代码设置正则匹配模式。 正则表达式 说明 id=[^]+ 匹配以 id= 开头,后面跟一个或者多个除 之外的任意字符 [^]+#[^]+ 匹配以一个或者多个除

    2024年02月07日
    浏览(46)
  • excel vba 将多张数据表的内容合并到一张数据表

    功能描述:  一个Excel文件有很多个 样式相同 的数据表, 需要将多张数据表的内容合并到一张数据表里。 vba实现代码如下:  文件链接:数据表合并.bas 下载后直接在excel 查看代码处导入文件即可。

    2024年02月11日
    浏览(37)
  • 怎么使用VBA查找多个工作表中相同和不相同的数据

    您可以使用VBA代码来查找多个工作表中的相同和不相同的数据。以下是一些基本步骤: 打开Microsoft Excel,然后打开您想要查找的工作簿。 按下\\\"Alt + F11\\\"键打开\\\"Visual Basic for Applications\\\" (VBA) 编辑器。 在VBA编辑器中,单击\\\"插入\\\",然后选择\\\"模块\\\"以创建一个新的模块。 在模块窗口

    2024年02月12日
    浏览(42)
  • VBA技术资料MF107:表对象中数据的删除查找及排序

    我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到数据库,到字典,到高级的网抓及类的应用。另外,为

    2024年01月17日
    浏览(32)
  • 数据结构与算法—一维数组、二维数组、矩阵、顺序串、链接串的C++代码实现

    1、一维数组:ArrayOneD.h 数组这种数据结构可以看作线性表的推广。数组一般采用顺序存储的方法表示。 这是一个模板类 ArrayOneD 的实现,用于表示一维数组。它包括了 构造函数、拷贝构造函数、析构函数、重载下标运算符、重载赋值运算符、求数组长度、重新设置数组长度

    2024年02月07日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包