关于对EXCEL INDIRECT函数的奇怪用法的解释 一. 说实在的,要我说出个所以然来,也说不清,只能靠比尔盖茨来说了,EXCEL是他们做出来的,我们不可能看到EXCEL的源代码,它的运行机制如何也不知道,我们所做的,就是根椐他们所定的规则去运用它,为我们的工作带来便利,任何一个EXCEL高手,不能说是高手,只能说比一般的人多一点了解而已,在EXCEL中究竟还有多少我们所不了解的,无从知道,在本论坛中涉及EXCEL的方方面面,是够多的了,但不能说,论坛中所有的知识已经穷尽了EXCEL的用法,这种观点你们可能不相信,反正我是信了. 二. INDIRECT函数这种用法,估计用的人很少,我就在实际运用中说一点点体验,至于观点是否正确,大家不必计较,能用就用,不适用的话,且把它当作笑话罢了 首先列出它帮助中的说明,估计大家早已熟悉不过的了: 语法
INDIRECT(ref_text,a1) Ref_text 为对单元格的引用,此单元格可以包含 A1-样式的引用、R1C1-样式的引用、定义为引用的名称或对文本字符串单元格的引用。如果 ref_text不是合法的单元格的引用,函数 INDIRECT 返回错误值#REF!。 · 如果 ref_text 是对另一个工作簿的引用(外部引用),则那个工作簿必须被打开。如果源工作簿没有打开,函数 INDIRECT 返回错误值 #REF!。 A1 为一逻辑值,指明包含在单元格 ref_text 中的引用的类型。 · 如果 a1 为 TRUE 或省略,ref_text 被解释为 A1-样式的引用。 · 如果 a1 为 FALSE,ref_text 被解释为R1C1-样式的引用。 示例
说明:如果在INDIRECT()中输入的是一个单元格区域,而单元格区域中含有对某些表示单元格地址的文本结果会怎样?如果区哉是同一列,比如B2:B16 结果会返回第一个单元格表示的引用,如果区域是几行几列的话,结果会是错误值了,因为它违背了此函数的规则了,无所适从了 不管怎样的错误,它表示的还是一个区域,只是结果是错误的了如图: E1=indirect(B1:C20) 结果是错误,既然是错误,不要管它,我们的目的并不是要返回这单元格的所有内容,我想求和,于是加上SUM Sum(indirect(B1:C20)),作为一个数组求和,记得按三键,表示成 {Sum(indirect(B1:C20))} 结果有了回报,返回了一个内存数组,如图: 既然是内存数组,再来一次数组求和呢? =SUM(SUM(INDIRECT(B1:C6))) 数组公式,终于有了最终结果,求和成功,但得注意,区域中不可有空单元格,否则会出错 在此公式中, SUM(SUM(INDIRECT(B1:C6)))改成average(SUM(INDIRECT(B1:C6))) 也是求和,可见起作用的是括号里的SUM了,而average(average(INDIRECT(B1:C6)))求平均数 sum(average(INDIRECT(B1:C6)))还是求平均数. 好了,就说到这, 不管白猫黑猫抓到耗子就是好猫 |