1、6月份的结存数,在7月份中为期初数,思路如下:通过VLOOKUP公式来查找上月份对应产品的期末数,公式在每个表中都要适用,所以引用的区域是要动态的,不需要每次修改公式,所以我们得观察表格设置及维护的特点。本人觉得接下来的步骤才是分享的主要经验:
2、通过观察,每张工作表都是数字+月份的特色,我们通过Indirect公式来构建一个VLOOKUP查找区域的动态区域,如‘6月'!A1:M100,在七月的库存表就要引用六月的期末数,我们要取到“6月”,可以通过取7月的表名减1来实现,接下来是如何取到表名呢?
3、=CELL("FILENAME",A1)可以取到工作簿的名称,来个例子给大家看下,图可以看到,完整的工作表存放路径,我们只要取到7月就可以了,7月前现有“]",通过FIND公式来查找”]"的位置
4、=FIND("]",CELL("FILENAME",A1))查找”]"公式结果查到了,在41字符处,找到位置后,我们要表名取出来,使用MID函数可以达到这个目的
5、请看图4,我们通过MID函数把表名取出来了,找到”]"位置后,往后一位是我们要的内容,所以+1,取的长度正常3就够了,表名命名规则就是数字+月,例子中我们随意用了15.取到表名,我们要在取上月数,所以我们要把7改为6,那就是把月份取出来减1咯,请看下一步
6、图5,取月份有多种方法,本例,采用SUBSTITUTE函数,将月份替换为空值“”,这样就得到7,然后减去1,就可以得到6了,我们这么辛苦将6取出来,就是为了在INDIRECT函数中使用它,构建一个动态的引用区域供VLOOKUP使用。请看下一步:
7、图5已经取到数字6了,接下来通过INDIRECT来实现一个被VLOOKUP查找的区域,引用工作表的路径是‘6月'!A1,这是单个单元格的,区域就是6月'!A1:L1000,例子请看图6,离目标只有最后两步远了咯
8、图7我们可以看到,使用了VLOOKUP公式,查找区域,就是红色边框的部分,用INDIRECT生成的区域,为了不去数到底在第几列,我采用了COLUMN(K5)来代替,COLUMN()会产生所在单元格的列号,本例K5是我们的目标列号
9、VLOOKUP,查找不到时,会产生N/A#,为了报表美观,用IFERROR函数进行美化处理,如果错误就用0显示,请见图8的结果