|
楼主 |
发表于 2010-4-14 15:57
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
使用If{1,0}或者choose{1,2}构建内存数组的原理
[讨论]IF({1,0},A3:A123&C3:C123&E3:E123,D3:D123) 怎么解释啊
讨论]关于IF({1,0},,)与数组变换
字符串可以连接:
"A" & "B" & "C"="ABC";"Aaa"&"Bcd"&"123"="AaaBcd123"
数组也可以连接:
{1,2,3}&{"A","B","C"}={"1A","2B","3C"}
单元格区域也可以连接:
假如A1:A10的数据为1到10,B1:B10的数据为a到j。
A1:A10&B1:B10的结果就是
1a
2b
3c
构建内存数组的实质就是将两个一维数组合并为一个二维数组。需要注意的是在vlookup中构建内存数组时使用的是if{1,0},但在hlookup中使用{1;0},通过这种方法vlookup可以从右往左查,Hlookup可以从下往上查,从而打破了vlookup查找的列必须位于查找区域的最左列,hlookup查找的列必须位于查找区域的最上列的限制。
拓展一下,如遇到 =IF({0,1,1,1},B73:E76,F73:F76)得到的是F&C&D&E
=IF({1,1,0,1},B73:E76,F73:F76)得到的是B&C&F&E
变换的规律是:{}中的常量数组四个元素对应IF函数的Value_if_true的四个数列,其中0所在位置,被Value_if_false 对应的数列所替换
与IF变换相比,CHOOSE变换更简单、灵活:
CHOOSE函数可以任意组合: =CHOOSE({1,2,3,4,5},F73:F76,B73:B76,D73:D76,C73:C76,E73:E76)得到F&B&D&C&E
甚至还可以把不同工作表的两个数据源合并成一个内存数组进行查询。
[ 本帖最后由 lrlxxqxa 于 2010-11-26 22:19 编辑 ] |
|