以下是引用cdyh2在2006-12-5 16:26:29的发言:能看看我的公式不能成功的原因吗() 前面已经提到,可惜你没仔细看我的思路解析,以下是对你的思路的补充: 1、如果你能够保证每次录入都正确无误(很重要的前提),那么可以使用函数来解决。按你的思路,每次都取最后一行数据来生成列表。“单元格”公式可以进行简化: 原公式: =INDIRECT("查询!$"&MID(基础!$I$1,COLUMN(查询!A1),1)&"$"&LOOKUP(2,1/(查询!A$2:A$2000<>""),ROW(查询!A$2:A$2000))) 既然都使用了LOOKUP函数,就直接取值就可以了,没必要再用INDIRECT函数,优化后: =OFFSET(查询!A$1,MATCH(CHAR(65535),查询!A:A)-1,) 2、另外,对于等级公式,由于存在多个省区具有相同的等级,所以不能直接使用MATCH函数,需要将MATCH段的查找范围使用IF函数进行过滤,在我的解法中已经提出了这一点。 原公式: =INDEX(区域,SMALL(IF(OFFSET(区域,,-1)=单元格,IF(MATCH(区域,区域,0)=ROW(区域)-1,ROW(区域)-1)),ROW()-1)) 修改后公式: =INDEX(区域,SMALL(IF(OFFSET(区域,,-1)=单元格,IF(MATCH(区域,IF(OFFSET(区域,,-1)=单元格,区域),0)=ROW(区域)-1,ROW(区域)-1)),ROW()-1)) 3、通过“省区”和“等级”就可以确定唯一记录了,所以“单位”的公式修改为:(利用“单元格”和“区域”名称) =INDEX(区域,SMALL(IF(OFFSET(区域,,-2)&"|"&OFFSET(区域,,-1)=OFFSET(单元格,,-1)&"|"&单元格,ROW(区域)-1),ROW()-1))
Zlo0Pz2N.rar
(9.32 KB, 下载次数: 163)
|