取1行/列的max/min,large/small
错误的
VALUE(CONCATENATE(MATCH(D14,建筑数new!B:B,0)))
MAX(CONCATENATE(MATCH(D14,建筑数new!B:B,0),":",MATCH(D14,建筑数new!B:B,0)))
MAX(CONCATENATE(MATCH(D16,建筑数new!B:B,0),":",MATCH(D16,建筑数new!B:B,0)))
MAX(CONCATENATE(MATCH(D14,建筑数new!B:B,0),":",CONCATENATE(MATCH(D14,建筑数new!B:B,0))))
成功写法
SMALL(INDIRECT(CONCATENATE("建筑数new!",MATCH(D31,建筑数new!B:B,0),":",MATCH(D31,建筑数new!B:B,0))),2)
知识点几个
(1)使用indirect ,引用其他sheet 或表的数据,特别注意
用&或concatenaet拼好数据之后,要加上 引用的表名!!一般都不是查本表!!
(2)使用indirect 和 vlookup hlookup 特别注意false参数
当 indirect需要使用r1cl模式的时候,得有false参数
当vlookup hlookup一般都是精确查找,都得用false参数
(3)一个单元格拼好了,内容,用其他函数引用他时,
直接引用?indirect引用?value引用?
单元格里一般只要有公式,indirect比较稳妥
(4) max min 一般没有 large(,) small(,) 好用!!
带出来的问题,其实是对EXCEL理解不深
理解 一个单元格的直接引用,indirect引用,value引用
下面例子表,左上角是A1
A | 1 | 2 | 3 | |||||||
B | 11 | 12 | 13 | |||||||
C | 21 | 22 | 23 | |||||||
D | 31 | 32 | 33 | |||||||
MAX(G6) | MAX(VALUE(G6)) | MAX(INDIRECT(G6)) | ||||||||
B | 2:2 | 0 | 0.084722222 | 13 | 13 | |||||
C | ||||||||||
A | ||||||||||
D |
2:2 其实是拼出来的结果 CONCATENATE(MATCH(F6,A:A,0),":",MATCH(F6,A:A,0))
max(g6)
max(VALUE(g6)) 有些时候适用?
max(INDIRECT(g6)) 正确引用了单元格里的公式结果!!
EXCEL 对单元格的引用方式差别 VBA里应该有差别
引用区域的差别
- 单元格引用 =(a1)
- 行引用 =(1:1)
- 列引用 =(a:a)
- 区域引用 =(a1:c5)
相对引用和绝对引用的差别
- =a1 相对引用
- =a$1 锁定行,行绝对引用,列相对
- =$a1 锁定列,列绝对引用,行相对
- =$a$1 行列都绝对引用
- 另外r1c1模式
- 不知道 $是否适用,没试过?
直接引用,indirect() value()
- 直接引用 =a1 =max(a1)
- =max(value(a1))
- =max(indirect(a1))
indirect函数用法
- 引用 参数文本 指向的引用
- indirect(a1) 引用所指向的tag:a1的内容,作为参数
- indirect("a1") 引用所指向的tag:"a1",作为参数
- indirect(concatenate()) 引用的是concatenate()结果产生的字符串作为tag
- 因为concatenate()或&返回的一定是字符串
- 默认参数为true是a1引用 indirect( ,false) r1c1