以下是引用cynthia02在2008-6-3 16:09:22的发言:http://club.excelhome.net/viewthread.php?tid=50146&extra=&page=1#624207 3楼老师的答复看不懂,请斑主分步解释好吗,因为要套用在其他格式,由于弄不懂无法应用,请教了。 1.={IF(E8=0,"",E8*SUM(DAYS360(IF(ROW(INDIRECT(a&":"&b))=a,B8,d),IF(ROW(INDIRECT(a&":"&b))=b,$C$2,dd))*OFFSET($C$134,a-1,0,b-a+1,1))/360)} ? 2.=INDIRECT(a&":"&b) ?——原帖第6楼已经说清楚了。 3.=ROW(INDIRECT(a&":"&b))=a ? 4.=IF(ROW(INDIRECT(a&":"&b))=a,B8,d) 与 = IF(ROW(INDIRECT(a&":"&b))=b,$C$2,dd)分别是??? 5.=OFFSET($C$134,a-1,0,b-a+1,1))/360) ? 多谢!! 多谢!!! 多谢!!! 一口气吃不成胖子。 请先阅读本帖前面的基础知识,才好办法解读。首先,这些公式中用的a、b、d、dd都是定义的名称,按Ctrl+F3可以查看。 a=MATCH(Sheet1!$B$2,Sheet1!$B$5:$B$11,1)——利用B5:B11日期是升序排列的情况,定位B2起始日期所在的行。 同理,b——定位C2截止日期所在的行。在例子中,a=1,b=5 d=OFFSET(Sheet1!$B$5,a-1,0,b-a+1,1)——从B5单元格期,向下偏移a-1行,0列,高度为b-a+1行,宽度为1列,即例中的B5:B9区域 dd=OFFSET(Sheet1!$B$5,a,0,b-a+1,1),同理取得例中的B6:B10区域。 所以:=INDIRECT(a&":"&b) 就是=INDIRECT(1&":"&5)也就是=INDIRECT("1:5"),即返回对第1至第5行的引用; =ROW(INDIRECT(a&":"&b) )就是=ROW(1:5),返回第1至5行的行号数组{1;2;3;4;5} =ROW(INDIRECT(a&":"&b) )=a就是{1;2;3;4;5}=1得到{True;False;False;False;False} =IF(ROW(INDIRECT(a&":"&b))=a,$B$2,d)得到即当行号等于a时,返回起始日期,否则返回其他相应日期。 …… 至于DAYS360()则是计算日期间隔天数的,一年按360天的算法。而为什么这么算,则是专业方面而非Excel的问题了。 上面大部分都已分解,第5.也有类似的解读,请自己分块看看对应的是什么数据,再根据专业知识来解读是什么具体的含义。
[此贴子已经被作者于2008-6-4 21:10:05编辑过] |