系统:Windows 7
软件:Excel 2016
- 本系列讲讲数组功能
- 今天说说数组与Excel单元格传递信息:即数组如何读取单元格中信息;数组信息如何写入Excel单元格
Part 1:实现内容
- 有两个Excel工作表,表1:Excel读出;表2:数组写入,为空表
- 实现功能1,读取Excel中信息:
- 读取表1的A1-C1单元格区域,赋值给数组arr1
- 读取表1的A2-C3单元格区域,赋值给数组arr2
- 实现功能2,数组写入Excel表格中
- arr1写入表2的A1-C1单元格区域
- arr2写入表2的A2-C3单元格区域
- 通过Array创建2个数组再写入表2单元格
表1:Excel读出
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g1FB2Q15-1591524526728)(https://upload-images.jianshu.io/upload_images/7490971-04a23685be638712.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
Part 2: 代码
Sub test1()
' 读取Excel数据
Set shtExcel = ThisWorkbook.Worksheets("Excel读出")
arr1 = shtExcel.Range("A1:C1")
arr2 = shtExcel.Range("A2:C3")
' 数组写入Excel
arr3 = Array(1, 2, 3)
arr4 = Array(Array(4, 5, 6), Array(7, 8, 9))
'转置
arr5 = WorksheetFunction.Transpose(arr4)
arr6 = WorksheetFunction.Transpose(arr5)
Set shtArr = ThisWorkbook.Worksheets("数组写入")
shtArr.Cells.ClearContents
shtArr.Range("A1").Resize(1, 3) = arr1
shtArr.Range("A2").Resize(2, 3) = arr2
shtArr.Range("E1").Resize(1, 3) = arr3
shtArr.Range("E2").Resize(2, 3) = arr4
shtArr.Range("E7").Resize(1, 3) = arr4(0)
shtArr.Range("E8").Resize(1, 3) = arr4(1)
shtArr.Range("E10").Resize(2, 3) = arr6
End Sub
代码截图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Yt1dpPx-1591524526730)(https://upload-images.jianshu.io/upload_images/7490971-c89984f92a98146f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
运行过程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZpsCxrU5-1591524526732)(https://upload-images.jianshu.io/upload_images/7490971-d2559dabc4999be3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
运行结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UZIJHbci-1591524526733)(https://upload-images.jianshu.io/upload_images/7490971-f2cf5291d103feca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
Part 3: 部分代码解读
- Excel单元格读取数据至数组,将单元格区域赋值给数组即可
- 无论赋值的1行还是2行单元格,对应数组都是2维数组
- 将数组赋值给Excel单元格区域,通过Resize函数先确认单元格区域
- 单元格.Resize(行数,列数),构建一个矩形区域,单元格为该矩形的左上角
- 当构建的单元格区域是多行多列时,对应的数组必须是2维数组,如果不是则赋值错误,如表2的E2-G3区域(对应代码
shtArr.Range("E2").Resize(2, 3) = arr4
,没有成功,返回多个#N/A)
- 通过
arr4 = Array(Array(4, 5, 6), Array(7, 8, 9))
构建的数组本质上还是一个1维数组,如下图所示(订正上一篇文章的错误)- 只不过每一个元素又是一个数组
- 通过两次转置
WorksheetFunction.Transpose
,可以将其变为真正的2维数组arr6 - 从本地窗口中查看两个数据的形式可以看到两者表达方式的不同
arr4
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3C1L9pqk-1591524526736)(https://upload-images.jianshu.io/upload_images/7490971-42522229f75a01b8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
arr6
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KzClc69s-1591524526737)(https://upload-images.jianshu.io/upload_images/7490971-66d763ed4e2239e1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
- 更多学习交流,可加小编微信号
learningBin
更多精彩,请关注微信公众号
扫描二维码,关注本公众号
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-elOWOTGK-1591524526737)(http://upload-images.jianshu.io/upload_images/7490971-426ce9fb969584ac.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]