|
楼主 |
发表于 2009-5-8 22:54
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
在上图L4:O6中的数组公式如下
=IF((COLUMN(A:D)+4*(ROW(1:3)-1))^0,OFFSET(A1,COLUMN(A:D)+4*(ROW(1:3)-1)-1,),)
会写数组公式,最好会用数组的方式去体会公式的运算过程。这里使用IF条件,IF的逻辑判断部分的数组,和 OFFSET的第二参数数组 是完全匹配的。这个很关键,两个齿轮咬合了,不致造成其中一个齿轮多出一个齿(相对于数组元素)没有落脚点。
思维过程:
IF逻辑判断的二维数组的 a11(一行一列位置)为1,于是对应返回 TRUE部分 对应的 b11,这里的b11 是由 Offset函数根据自身驱动参数的 C11进行运算产生的。这里之所以能一一对应过去是因为数组结构完全一致。
经过这个过程后,我们知道 OFFSET的立体的C11位置算是落到地面原先IF函数逻辑判断的数组中了。
想通一个元素落地的过程后,就能明白最后所有的立体的元素都落到地上来了,呵呵。于是最后能返回正确值。
在IF数组公式专门帖中我把这个方式称为 袋子,先用逻辑判断部分构造一个袋子,然后把天上的地上的反正统统装进袋子,呵呵。
[ 本帖最后由 胡剑0227 于 2009-5-8 22:58 编辑 ] |
评分
-
4
查看全部评分
-
|