ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 名课 - Power BI数据分析与可视化实战 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: fsydw

[求助] 大师你好!如何向二维数组添加行。谢谢!

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-25 23:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢版主大师赐教!珍藏!!学习中......

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-25 23:53 | 显示全部楼层
版主大师你好!最后一句,输出arr2到工作表,代码如何写?谢谢!!!
Range("d10").Resize...???...=arr2

[ 本帖最后由 fsydw 于 2010-4-25 23:55 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-25 23:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
大师!请帮我看看6楼的代码。谢谢!

TA的精华主题

TA的得分主题

发表于 2010-4-25 23:58 | 显示全部楼层
10楼“arr2 = Application.Transpose(arr2)”换为下面一句
Range("d10").Resize(f, 7) = Application.Transpose(arr2)

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-26 00:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 HHAAMM 于 2010-4-25 23:58 发表
10楼“arr2 = Application.Transpose(arr2)”换为下面一句
Range("d10").Resize(f, 7) = Application.Transpose(arr2)

谢谢大师赐教!
结果是正确的
我是想实现:arr2数组中所有记录(共有两行):
1、ABCDEFG30*6X2blue203100
2、BBBCCCF
20*5X1red303600

上面两条,全部输出到工作表中。代码如何写呢?

[ 本帖最后由 fsydw 于 2010-4-26 00:08 编辑 ]

TA的精华主题

TA的得分主题

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

6楼

Sub aa()
Dim Mystr As String
Dim arr2()
    With Sheets("sheet2")
        arr1 = .Range("d2:j" & .Range("d65535").End(xlUp).Row)
         For i = 1 To UBound(arr1, 1)
         Mystr = arr1(i, 1)
         If InStr(1, Mystr, "b", 1) > 0 Then '如果名称中包括字符“b”
         n = n + 1
         ReDim Preserve arr2(1 To 7, 1 To n) '将包括字符“b”的记录,生成新数组
            For ii = 1 To 7
                arr2(ii, n) = arr1(i, ii) '包含字符“”的记录应该有2条,第1条和第2条
            Next ii
         End If
         Next
         Range("d10").Resize(n, 7) = Application.Transpose(arr2) '为什么输出结果,是最后一条记录??
     End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-26 00:18 | 显示全部楼层
ABCDEFG30*6X2blue203100
AAABBBCCCF
20*5X1red303600
大师你好!
1、6楼的代码,运行后,arr2是不是应该有上面两条记录?
2、我想用 Range("d10").Resize(n, ii - 1) = arr2,将上面两条记录输出到工作表。
3、可是仅输出一条(数组中最后一行)记录。错哪了?
谢谢!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-26 00:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢版主大师!OK了   学习中......

TA的精华主题

TA的得分主题

发表于 2010-4-26 00:23 | 显示全部楼层
ReDim 语句
      

在过程级别中使用,用于为动态数组变量重新分配存储空间。

语法

ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .

ReDim 语句的语法包括以下几个部分:

部分 描述
Preserve 可选的。关键字,当改变原有数组最末维的大小时,使用此关键字可以保持数组中原来的数据。

同时,动态数组只能扩展最末维的大小,所以要写成ReDim Preserve arr2(1 To 7, 1 To n) 这样,最后再转置
要是ReDim Preserve arr2(1 To n, 1 To 7) 这样是通不过的

[ 本帖最后由 HHAAMM 于 2010-4-26 00:27 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-26 00:24 | 显示全部楼层
原帖由 HHAAMM 于 2010-4-26 00:17 发表
Sub aa()
Dim Mystr As String
Dim arr2()
    With Sheets("sheet2")
        arr1 = .Range("d2:j" & .Range("d65535").End(xlUp).Row)
         For i = 1 To UBound(arr1, 1)
         Mystr = arr1(i, 1) ...

大师你好!
1、必须用转置吗?Transpose?
2、preserve是重新定义最后一维的最大值的大小?什么意思呢?
谢谢!!!!!!!!!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-21 17:47 , Processed in 0.032942 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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