以下是引用aichong在2006-5-30 17:41:49的发言:经我测试,在使用A1:INDEX()、INDEX():INDEX()这种结构时,INDEX表现为半易失性函数(或工作簿级易失性函数),即:在工作表中按F9键或编辑单元格时不会引起整个工作簿的重新计算,而重新打开工作簿则会重新计算。 而OFFSET则表现为完全易失性函数(或工作表级易失性函数),不仅表现为重新打开工作簿时会重新计算,而且在工作表中按F9键或编辑单元格时会引起整个工作簿的重新计算。 经测试,OFFSET的计算速度比INDEX慢(但文件比用INDEX的小),重新打开工作簿时OFFSET计算完成后还有一定时间的停顿才能让用户编辑工作簿,而INDEX计算完成后用户马上可以编辑工作簿。 附:测试文件(注:由于B、C列填满整列时文件太大,所以上传的文件数据只到20000行,大家可以改变引用范围或用整列试试)
结论:用A1:INDEX()、INDEX():INDEX()这种结构替代OFFSET是值得大力推广的! 谢谢测试, 现在如果可能我必定将INDEX取代OFFSET进行到底. 下面的函数同样也可以产生可变列的数组(可变行可以用同样的方法): =INDEX(INDEX(数据!$B:$B,MATCH("条件字符",数据!$A:$A,)),):INDEX(INDEX(数据!$1:$65536,,COUNTA(INDEX(数据!$1:$65536,MATCH("条件字符",数据!$A:$A,),))),MATCH("条件字符",数据!$A:$A,))
[此贴子已经被作者于2007-1-17 14:08:44编辑过] |