excel公式中对单元格的引用包含四种:相对引用,行相对引用,列相对引用,完全绝对引用,其中只有完全绝对引用在公式拖动或复制的过程中行列都不会随着位置的改变而发生变化。
所以,我们如果想让工作表在拖动的过程中发生变化,首先需要考虑的是把工作表名称设计成一个变量,比如要将公式中的sheet1在从A1单元格拖动到A2单元格的时候自动变为sheet2,那么可以讲sheet1表述为"sheet"&row(1:1)&"!", 拖动过程中row(1:1)会自动变更为row(2:2)从而达到sheet2的结果。
当然,实现此功能的前提是sheet的命名是有规律的,如果完全无序的命名,公式是无法实现的,只能考虑VBA了。
可以用VLOOKUP函数
比如zhang,yu,zhao。。。等表的A列是“姓名”。新表的A列也是“姓名”,但是排列顺序和zhang,yu,zhao等表不同,就可以实现。
要在新表的B列摘取zhang的数据、C列摘取yu的数据、D列摘取zhao的数据,以B列为例,摘取zhang表的与新表相同姓名的B列数据在新表的B列,即在新表的B2单元格输入=VLOOKUP(A2,zhang!A:B,2,0)即可,即使zhang表的数据总是变化,新表这里都能找到。其他的以此类推。
比如在A1中输入
=INDIRECT("Sheet" & ROW() & "!B1")
往下拖,第一排就是sheet1,第二排就是sheet2