以下是引用紧身长裙在2007-1-13 0:20:08的发言:gdliyy版主能不能帮忙解释一下那个名称定义呀:) =OFFSET(INDIRECT(LEFT(前言!$A14,2)&"!A1"),MATCH(前言!$A14,INDIRECT(LEFT(前言!$A14,2)&"!A:A"),)-1,) 如何读解公式,对于很多朋友来说有些难度,其实读解也是讲究方式方法的:应该是先从外向里读,再从内向外逐层运算,最终返回结果。 1、首先我们需要理解定义这个名称的意义,是为了产生动态的超级链接,因此我们必须要生成一个动态的引用。通过上面的名称公式,我们发现最外层是Offset函数,就能达到引用的目的。 2、Offset函数的必输项由3个参数组成(基点、行偏移和列偏移),上面的参数中前两个参数使用了嵌套函数来实现,即:INDIRECT(LEFT(前言!$A14,2)&"!A1")部分用于产生引用基点;MATCH(前言!$A14,INDIRECT(LEFT(前言!$A14,2)&"!A:A"),)-1用于产生行偏移量。 3、针对INDIRECT(LEFT(前言!$A14,2)&"!A1")部分,主要是使用Indirect函数来生成新的引用。由于超级链接首先需要定位到每个表,所以必须使用Indirect函数来根据A列单元格前两个字符来确定“工作表名”,才能确定某个表的A1单元格作为Offset函数的偏移基点。函数段中主要利用了Left函数、单元格混合引用和字符连接符来生成基点单元格引用。 4、而对于MATCH(前言!$A14,INDIRECT(LEFT(前言!$A14,2)&"!A:A"),)-1部分,则利用了Match函数来进行数据定位,以查找如A14单元格的值在Indirect产生的新表A列中的具体位置,即行偏移。 5、利用Indirect函数生成的基点、Match函数得到的行偏移(由于列偏移为0,不偏移),这3个参数就可以确定Offset函数最终引用的具体单元格,再利用超级链接的原理,就可以实现动态超链接了。 |