前两天在excel表格中做不同工作表之间的数据调用,因为牵扯到调用数据的单元格不固定,所以被调用数据的单元格需要用函数表示其地址,故而用到了indirect函数。
调用中发现了很多问题,一一解决之后发现,indirect函数的格式应该是这样的,举例说明一下。
if(p6=“2月”,indirect("sheet1!c"&row()-2,if(p6=“1月”,sheet1!a1))
解释如下
如果p6单元格值为“2月”时,将当前需要计算的单元格的行数减2,得到需调用数据的单元格行号,而列号不变,仍为sheet1工作表的c列,此单元格的数据计算结果即被调用至公式所在的单元格。需要注意,其中不变的sheet1!c需加引号。
ps:引出此问题的原因是如果采用简单的公式if(p6=“2月”,sheet1!c1,if(p6=“1月”,sheet1!a1)),在下拉复制公式时,因为不知道1月的数量,不能确认单元格位置,如果下拉三行后,公式将变成if(p9=“2月”,sheet1!c4,if(p9=“1月”,sheet1!a4)),。当然如果此时p9等于1月,取数没有问题,但如果p9等于2月,则将从sheet1的c4单元格开始取数,而非我们希望的c1单元格开始。
网友评论