VBA学习笔记(4)--数组和单元格互相转换
说明(2017.3.23):
1. VBA的数组还是很难用的,其实就是非常难用!
2. 要先定义一个数组,可以是空的,也可以里面写个数字作为数组长度。
3. 如果是空数组,可以后面redim重新定义数组长度。如果不是空的,再用redim就会报错“数组维数已定义”!
4. dim里面不能用变量,报错“只能用常数表达式”,里面只能用具体数字。
5. redim不能重新定义数组维数,就是说本来dim了一个一维数组,redim不能把它改成二维数组。
6. redim里面貌似能用变量。
7. 两种方法,一种定义一维数组,需要结果transpose转成行。另一种定义二维数组,结果直接写入单元格。
总结:
1. VBA的数组超级难用,用过的最难用的!
'第一种方法,定义一个一维数组,存放乘积,用transpose换成列后,写入单元格
Public Sub test()
Dim arr()
arr = Range("a7: b24")
arrNum = UBound(arr)
' 如果arr2是个一维数组,后面要用transpose列转行
Dim arr2()
ReDim arr2( To UBound(arr, )) For i = To UBound(arr, )
arr2(i) = arr(i, ) * arr(i, )
Next
' resize从这个单元格往下数多少行,第二个参数是多少列
' transpose把arr2的列转成行
Range("e7").Resize(UBound(arr2), ) = Application.Transpose(arr2)
End Sub
'第二种办法,定义一个二维数组,存放乘积,直接写入单元格
Public Sub test2()
Dim arr()
arr = Range("a7: b24")
arrNum = UBound(arr)
' 如果arr2一开始就定义为二维数组,后面就不用转成行了
Dim arr2( To , To )
' 本来想用变量作为数组大小,不过好像不支持,redim也不能含有变量,而且不能重新定义二维数组
' ReDim arr2(1 To 18,1 To 2) For i = To UBound(arr, )
arr2(i, ) = arr(i, ) * arr(i, )
Next
' resize从这个单元格往下数多少行,第二个参数是多少列
Range("e7").Resize(UBound(arr2), ) = arr2
End Sub
VBA学习笔记(4)--数组和单元格互相转换的更多相关文章
- HTML&CSS基础学习笔记1.15-合并单元格
合并单元格 之前的文章中,我们已经能够创建一个简单地表格了,如果我们需要把横向的某两个相邻单元格<td>或者纵向的某两个相邻单元格<td>合并,我们该怎么做呢?我们要知道的知识 ...
- PHP学习笔记之数组篇
摘要:其实PHP中的数组和JavaScript中的数组很相似,就是一系列键值对的集合.... 转载请注明来源:PHP学习笔记之数组篇 一.如何定义数组:在PHP中创建数组主要有两种方式,下面就让我 ...
- JavaScript学习笔记之数组(二)
JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...
- 原创:用VBA实现将鼠标选择的单元格按照指定格式合并并复制到剪切板
原创:用VBA实现将鼠标选择的单元格按照指定格式合并并复制到剪切板 一.主要实现以下功能:1.用鼠标选择单元格(可谓连续单元格,也可为不连续的)后,按照要求格式“证件号码:+选定内容+“,”+”选定内 ...
- javaSE学习笔记(15) ---缓冲流、转换流、序列化流
javaSE学习笔记(15) ---缓冲流.转换流.序列化流 缓冲流 昨天复习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流.比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化 ...
- VBA学习笔记
这是一个学习VBA编程的学习笔记. 一. 介绍 二. 使用手册 2.1. 如何在Excel2010中开始使用VBA? 2.2. 如何使用VBA编辑器进行编程? 三. 语法说明 3.1 数据类型 3.2 ...
- Scala入门学习笔记三--数组使用
前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...
- JavaScript学习笔记:数组reduce()和reduceRight()方法
很多时候需要累加数组项的得到一个值(比如说求和).如果你碰到一个类似的问题,你想到的方法是什么呢?会不会和我一样,想到的就是使用for或while循环,对数组进行迭代,依次将他们的值加起来.比如: v ...
- [Golang学习笔记] 07 数组和切片
01-06回顾: Go语言开发环境配置, 常用源码文件写法, 程序实体(尤其是变量)及其相关各种概念和编程技巧: 类型推断,变量重声明,可重名变量,类型推断,类型转换,别名类型和潜在类型 数组: 数组 ...
随机推荐
- 深入浅出Java垃圾回收机制(一)(转载)
转载来做笔记的:原文地址:http://www.importnew.com/1993.html. 对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲 ...
- 线代: N阶行列式
线性变换 将 (x, y) 变成 (2 x + y, x - 3 y) 就叫做线性变换, 这就是矩阵乘法, 用于表示一切线性变换. 几何上看, 把平面上的每个点 (x, y) 都变到 (2 x + y ...
- Java设计模式中的单例模式
有时候在实际项目的开发中,我们会碰到这样一种情况,该类只允许存在一个实例化的对象,不允许存在一个以上的实例化对象,我们将这种情况称为Java设计模式中的单例模式.设计单例模式主要采用了Java的pri ...
- iOS archiveRootObject 归档失败问题
归档失败问题出在路径上,NSHomeDirectory() NSString *stringPath = [NSSearchPathForDirectoriesInDomains(NSDocument ...
- Linux 通过cron定期执行 php文件(转)
Linux 通过cron定期执行 php文件 补充几点: 1. 要在php文件头加上解释器的路径,通常是 #!/usr/bin/php 2. 授予要执行的php文件执行权限 chmod a+x x ...
- CoreText实现图文混排之文字环绕及点击算法
系列文章: CoreText实现图文混排:http://www.jianshu.com/p/6db3289fb05d CoreText实现图文混排之点击事件:http://www.jianshu.co ...
- Linux内核(14) - 二分法与printk
人生就是一个茶几,上面摆满了杯具.内核也是一个大茶几,不过它上面的杯具是一个个的bug.确定bug什么时候被引入是一个很关键的步骤,在这个定位bug的过程中,不论有意或无意,都会很自然地用到二分查找的 ...
- OC 中new与alloc/init的差别
英文具体解释:http://macresearch.org/difference-between-alloc-init-and-new 1.在实际开发中非常少会用到new.一般创建对象咱们看到的全是[ ...
- hive sql 修改列名
ALTER TABLE dev.dev_jypt_jiadian_cate3_pred_20181109 CHANGE utem_third_cate_name item_third_cate_nam ...
- spring mvc 依赖包
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop&l ...