1 基础概念
- 数组:
- VBA代码中:是一组数字,命名为同一个名字
- EXCEL中(application): 是这样的{1,2,3} 或者是多个单元格组合在一起
- 工作表普通公式和数组公式
- 工作表函数 普通函数 普通公式
- 数组函数 数组公式
2 不同函数的对象和输出
例子
2.1 函数操作对象
- indirect() 操作的对象为1个数,一般是一个字符串
- sum(),max() 等 操作的对象为1组数,一般是1组单元格
- sumprouct () 操作的对象为2个数组,
- 数值公式 操作的都是1组数,甚至是1个二维数组,矩阵等
2.2 函数的输出/返回
工作表函数 输出的一般都是 一个数
输入公式时,工作表函数,都是先选了1个单元格,然后写=公式
数组公式 输出的可以是1个数,或者1个几维数组。(但是在单元格形式下显示的也只是数组的第1个数)
输入公式时,数组函数
有的是先选了1个单元格,然后写=公式
有的是选中多个输入目标单元格,然后写=公式
数组公式可以认为就是普通公式,操作对象,从一个数/单元格/字符串,替换成了一个数组,输出的可以是数组或单个数一个数/单元格/字符串
2.3 实际例子
默认为a3*b3 | 默认为sum(a3*b3) | |||||||
A3*B3 | A3:A8*B3:B8 | A$3:A$8*B$3:B$8 | {=a3:a8*b3*b8} | {=a3:a8*b3*b8} | SUM(A3:A8*B3:B8) | {=sum(a3:a8*b3*b8)} | ||
100 | 11 | 1100 | 1100 | 1100 | 1100 | 1100 | 1100 | 8320 |
101 | 12 | 1212 | 1212 | 1212 | 1212 | 1212 | ||
102 | 13 | 1326 | 1326 | 1326 | 1326 | 1326 | ||
103 | 14 | 1442 | 1442 | 1442 | 1442 | 1442 | ||
104 | 15 | 1560 | 1560 | 1560 | 1560 | 1560 | ||
105 | 16 | 1680 | 1680 | 1680 | 1680 | 1680 |
3 具体公式比较
实际上 普通公式
= * 函数
- 一般只支持 a*b
- 如果提供了一个数组 [a]*[b]
- 实测时,会找到这公式这一行同一行的这2列数据,进行相乘。
- 如果这公式这一行没有同一行的,直接报错#value!
1 | A13:A15*C14:C16 | SUM(A13:A15*C14:C16) | ||||
2 | 6 | 12 | 12 | |||
3 | 7 | 21 | 21 | |||
8 | SUM(A13:A15*C14:C16) | A13:A15*C14:C16 | ||||
=sum() 函数----比较特殊,可以处理一个数组
- 只支持单个数,或1个数组
- 如果是 sum([a]*[b])
- 同上
=sumproudct() 函数----更特殊,可以处理 多个数组的表达式运算!
- 直接支持多个数组的表达式运算
- 这种工作表函数应该不多吧
- 如果是 sumproduct([a]*[b])
数组公式的技巧---记得“输入到什么目标位置--这个概念很重要”
-
如果是输入到单个单元格,就一个单元格里=即可
-
如果是输入到多个单元格,必须先选中多个目标单元格
-
{=a3:a8*b3*b8}
- 记得输入 ctrl+ shift +enter
- 虽然比如d3:d8里都有公式,但都是一个公式(数组公式)
- 普通公式/工作表函数,比如 c3:c8里,肯定是多个不同的公式
之后需要读一下这些内容
http://www.excelfans.com/2014/07/11/excel-formula-array.html
http://www.excelfans.com/2014/07/13/excel-formula-array-2.html
http://www.excelfans.com/2014/07/14/excel-formula-array-3.html