|
本帖最后由 9lee 于 2011-3-4 14:45 编辑
- =IF(ROWS(二!A$1:A1)-COUNTA(一:二!A:A)>0,OFFSET(三!A$1,ROWS(三!A$1:A1)-COUNTA(一:二!A:A)-1,),IF(ROWS(二!A$1:A1)-COUNTA(一!A:A)>0,OFFSET(二!A$1,ROWS(二!A$1:A1)-COUNTA(一!A:A)-1,),一!A1))
复制代码
说明:
1 根据题意,设定三种情况下分别引用三个工作表的数据
2 第一种情况,引用第一个工作表数据:一!A1。
3 第二种情况,ROWS(二!A$1:A1)-COUNTA(一!A:A)>0,引用第二个工作表数据OFFSET(二!A$1,ROWS(二!A$1:A1)-COUNTA(一!A:A)-1,)。
4 第三种情况,ROWS(二!A$1:A1)-COUNTA(一:二!A:A)>0,引用第三个工作表数据OFFSET(三!A$1,ROWS(三!A$1:A1)-COUNTA(一:二!A:A)-1,)。
重新做过了,公式比较长,数组公式(按三键):
- =IF(ROW(A1)>COUNTA(一:三!A:A),"",OFFSET(INDIRECT(LOOKUP(ROW(A1)-1,MMULT(N(ROW(1:3)>TRANSPOSE(ROW(1:3))),SUBTOTAL(3,(INDIRECT({"一";"二";"三"}&"!a:a")))),{"一";"二";"三"})&"!a1"),ROW(A1)-1-LOOKUP(ROW(A1)-1,MMULT(N(ROW(1:3)>TRANSPOSE(ROW(1:3))),SUBTOTAL(3,(INDIRECT({"一";"二";"三"}&"!a:a"))))),COLUMN(A1)-1))
复制代码 说明:
1 还是用我比较喜欢的offset。
2 第一参数:各表的a1单元格
- INDIRECT(LOOKUP(ROW(A1)-1,MMULT(N(ROW(1:3)>TRANSPOSE(ROW(1:3))),SUBTOTAL(3,(INDIRECT({"一";"二";"三"}&"!a:a")))),{"一";"二";"三"})&"!a1")
复制代码
3 第二参数:行位移
- ROW(A1)-1-LOOKUP(ROW(A1)-1,MMULT(N(ROW(1:3)>TRANSPOSE(ROW(1:3))),SUBTOTAL(3,(INDIRECT({"一";"二";"三"}&"!a:a")))))
复制代码
4 第三参数:列位移
5 当工作表有增减或移动时,可以修改:
- COUNTA(!A:A)中的“一:三”表示需要合并的第一个工作表和最后一个工作的名称,有增减或位置移动时需要修改
- ROW(1:3)中的3代表工作表个数,有n个工作表,就改成n
- {"一";"二";"三"}是所有需要合并的工作表名称,有增减时需要修改
6 不能用名称,不能用辅助列,不能用技巧,07中还不能用宏表函数……还要有延展性,所以,对我来说,这个题目有点难度,不知我这样的基础能不能学中级{:241:}
|
评分
-
查看全部评分
|