博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Excel-VBA-数组-03-数组与Excel单元格间的读写
阅读量:829 次
发布时间:2019-03-24

本文共 2893 字,大约阅读时间需要 9 分钟。

系统:Windows 7

软件:Excel 2016

  • 本系列讲讲数组功能
  • 今天说说数组与Excel单元格传递信息:即数组如何读取单元格中信息;数组信息如何写入Excel单元格

Part 1:实现内容

  1. 有两个Excel工作表,表1:Excel读出;表2:数组写入,为空表
  2. 实现功能1,读取Excel中信息:
  • 读取表1的A1-C1单元格区域,赋值给数组arr1
  • 读取表1的A2-C3单元格区域,赋值给数组arr2
  1. 实现功能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) = arr6End 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: 部分代码解读

  1. Excel单元格读取数据至数组,将单元格区域赋值给数组即可
    • 无论赋值的1行还是2行单元格,对应数组都是2维数组
  2. 将数组赋值给Excel单元格区域,通过Resize函数先确认单元格区域
    • 单元格.Resize(行数,列数),构建一个矩形区域,单元格为该矩形的左上角
    • 当构建的单元格区域是多行多列时,对应的数组必须是2维数组,如果不是则赋值错误,如表2的E2-G3区域(对应代码shtArr.Range("E2").Resize(2, 3) = arr4,没有成功,返回多个#N/A)
  3. 通过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)]

转载地址:http://sjyuk.baihongyu.com/

你可能感兴趣的文章