美文网首页
ExcelVBA——数组(1)

ExcelVBA——数组(1)

作者: 猛犸象和剑齿虎 | 来源:发表于2019-06-03 12:26 被阅读0次
image.png

excelvba针对性比较强,就是excel文件中的行列,以及单元格,工作表,工作薄,图表,图形等对象,很明确“我”能干什么。
数组技术在excelvba中是个十分实用的基础技术,它更多的是针对excel行列的操作,行列纵横之间十分有趣。
数组存储在内存当中,所以数组有速度快的特点,当然也有数据易失性(内存的暂存性)的缺点,优点与缺点总是相对的。

数组的分类

  • 一般分为常量数组,静态数组,动态数组。
  • 如果按维度区分则分为一维数组,二维数组,三维数组……60纬数组。(新版的excel并不存在60纬的上限。)
  • 我们常用的就是一维和二维数组。
Sub test2()
Dim arr1(3)
Dim arr2(1 To 3)
Dim arr3(1 To 3, 1 To 2)
Dim arr4(3, 2)
End Sub

我们打开视图--本地窗口,可以很直观的观察数组的结构。
arr1(3)代表从0到3的一维数组。
arr2(1 To 3)代表从1到3的一维数组。

Dim arr3(1 To 3, 1 To 2)代表1到3,1到2的二维数组,当然也可以直观的理解为有3个柜子,每个柜子里有2个格子。而从excel表格中表现就是下图: image.png image.png

数组的维度

  1. excel中的一行或一列可以转换1维数组
  2. excel中的多行多列可以转换成2维数组
    在VBA中与我们直观的理解略有区别。


    image.png

    一行4列的单元格数据并非一维数组而是二维arr(1 to 1,1 to 4),同样的一列4行的数据同样也是二维数组。

Sub test5()
arr = Range("a1:d1")
End Sub
image.png
  • 二维数组转一维数组
Sub test5()
arr = Range("a1:d1")
arr1 = Application.Transpose(Application.Transpose(arr))
End Sub
通过两层转置将二维转为一维。 image.png
  • 数组一些常见的表达方式
Sub test1()
arr1 = [{"A","B","C","D"}]'①
arr = Array(1, 2, 3, 4)'②
End Sub

①表示直接写数组的方式,[]里面{}中写入元素,元素中间为逗号分开。
②表示用array函数构造数组。

向数组中写入数据

  1. 直接写入
Sub 向数组中指定的位置写入数据()
Dim arr(1 To 10)
arr(3) = "一"
arr(5) = "周"
arr(7) = "大"
arr(9) = "佬"
End Sub

按F8逐步运行后看到本地窗口中数组中空值的变化。


image.png
  1. 循环写入 image.png
Sub 循环向数组中写入数据()
Dim arr(1 To 4)
For Each Rng In [a1:a4]
    n = n + 1
    arr(n) = Rng
Next
End Sub

设置断点或者F8逐步运行后看到将单元格的值循环写入数组。

image.png
  1. 单元格批量写入
Sub 单元格区域数据批量写入数组()
arr = [a1:a4])
End Sub
image.png

数组的取值

Sub 方法1循环取数()
arr = [a2:a9]
[b1] = arr(2, 1)
For i = 1 To 8
    Cells(i, 3) = arr(i, 1)
Next
End Sub
---
Sub 方法2一次性取数()
arr = [a2:a5]
Range("d1:d" & 4) = arr
End Sub
---
Sub transpose转置()
    arr = [a2:a5]
    arr1 = Application.Transpose(arr)
    [a7:d7] = arr1
    [a8:c8] = arr1
    [a9:e9] = arr1
End Sub

相关文章

  • ExcelVBA——数组(1)

    excelvba针对性比较强,就是excel文件中的行列,以及单元格,工作表,工作薄,图表,图形等对象,很明确“我...

  • ExcelVBA——数组(2)

    上文将数组的基础介绍了一下,本篇将分享数组的一些实战案例。 求大于80分的平均分 VBA不强制区分大小写,也不强制...

  • ExcelVBA——数组排序冒泡算法

    今天我们介绍一个好玩的算法——排序算法,当然排序功能excel功能区和筛选都能进行排序,有很多简便的方法,用VBA...

  • ExcelVBA——数组spilit,join,filter函数

    经过上篇数组的实战案例的道友,多少会被其中的逻辑关系搞得有点绕,小道也是,我们需要知晓的是很多东西我们只是拿来用的...

  • ExcelVBA——数组运用工作表函数

    在工作表支持数组的函数,很多也支持VBA数组。返回结果,当然也是一个数组。嘿嘿。如sumif,countif,ma...

  • Excel妙用

    在做excel表格时如果遇到大量重复简单的工作时建议学习一下excelVBA宏录制(简单易学),如果说Excel函...

  • 2019-01-09shell编程之数组

    一、数组简介 1类型 二、普通数组 1定义数组 2访问数组元素 三、关联数组 1定义数组 2查看数组 3访问数组元...

  • 按照数组中的字符串顺序给另一个数组排序

    数组1 数组2: 数组1按照数组2的顺序排序 sortedUserDicts就是排序后的数组

  • Excel VBA解读:基础入门篇

    在这里,我们汇总了《ExcelVBA解读》系列第一季的目录和每篇文章的主要内容,当然我们曾在《Excel VBA解...

  • 3.数组扩展

    1)cat函数扩展结果=cat(1或2,数组1,数组2) 3)水平连接扩展结果=horzcat(数组1,数组2,。...

网友评论

      本文标题:ExcelVBA——数组(1)

      本文链接:https://www.haomeiwen.com/subject/rkpxxctx.html