取上月期末数---EXCEL-VBA-公式-函数应用
来源:网络收集 点击: 时间:2024-05-156月份的结存数,在7月份中为期初数,思路如下:通过VLOOKUP公式来查找上月份对应产品的期末数,公式在每个表中都要适用,所以引用的区域是要动态的,不需要每次修改公式,所以我们得观察表格设置及维护的特点。本人觉得接下来的步骤才是分享的主要经验:


通过观察,每张工作表都是数字+月份的特色,我们通过Indirect公式来构建一个VLOOKUP查找区域的动态区域,如‘6月!A1:M100,在七月的库存表就要引用六月的期末数,我们要取到“6月”,可以通过取7月的表名减1来实现,接下来是如何取到表名呢?

=CELL(FILENAME,A1)可以取到工作簿的名称,来个例子给大家看下,图可以看到,完整的工作表存放路径,我们只要取到7月就可以了,7月前现有“],通过FIND公式来查找”]的位置

=FIND(],CELL(FILENAME,A1))查找”]公式结果
查到了,在41字符处,找到位置后,我们要表名取出来,使用MID函数可以达到这个目的

请看图4,我们通过MID函数把表名取出来了,找到”]位置后,往后一位是我们要的内容,所以+1,取的长度正常3就够了,表名命名规则就是数字+月,例子中我们随意用了15.
取到表名,我们要在取上月数,所以我们要把7改为6,那就是把月份取出来减1咯,请看下一步

图5,取月份有多种方法,本例,采用SUBSTITUTE函数,将月份替换为空值“”,这样就得到7,然后减去1,就可以得到6了,我们这么辛苦将6取出来,就是为了在INDIRECT函数中使用它,构建一个动态的引用区域供VLOOKUP使用。请看下一步:

图5已经取到数字6了,接下来通过INDIRECT来实现一个被VLOOKUP查找的区域,引用工作表的路径是‘6月!A1,这是单个单元格的,区域就是6月!A1:L1000,例子请看图6,离目标只有最后两步远了咯

图7我们可以看到,使用了VLOOKUP公式,查找区域,就是红色边框的部分,用INDIRECT生成的区域,为了不去数到底在第几列,我采用了COLUMN(K5)来代替,COLUMN()会产生所在单元格的列号,本例K5是我们的目标列号

VLOOKUP,查找不到时,会产生N/A#,为了报表美观,用IFERROR函数进行美化处理,如果错误就用0显示,请见图8的结果

表名要由数字+月组成,公式可以直接复制不需要修改可直接使用,
EXCEL函数单元格表格版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_770009.html