从ERP导出数据的时候,由于系统本身的设置或者是设置没有填充同类项目的话,就会在每一行的下面留下连续的空单元格,此时如果需要做进一步数据分析或者引用会发现不好操作。如下图,如果需要对工单WK001F进行数据汇总的话,直接用SUMIFS汇总求和是没有用的,需要条件区域的工单号是连续的才能够条件求和。
所以对于这类数据,可能很多生产计划都会遇到的,解决这个问题方法有很多,有操作的方法、有函数的方法,有动态数组的方法等;
操作法
操作的方法优点是操作简单,不需要函数都可以,缺点是当数据量太多的时候,定位空值的话会非常卡。步骤如下:
步骤1:选中数据按下F5定位定位条件选择空值
步骤2:这里注意,千万不要动鼠标,很容易误操作,让选中状态取消。如图所示按下F2进入编辑状态后,输入=A2,然后按下Ctrl+回车批量填充,就完成了;
步骤3:选中工单号区域,复制选择性粘贴粘贴成数值;这样就不会因为更改了数据而变换引用位置。
函数法
函数的方法需要在边上额外建立一个辅助列,可以利用LOOKUP函数来解决,也可以用IF判断来解决,先看一下LOOKUP的方法
边上新增加一列,录入以下函数并下拉填充:
B2=LOOKUP("座",$A$2:A2),这个方法是用模糊查询的原理查找的;强记即可;
C2=IF(A2"",A2,C1),这个方法的思路也非常好,利用下方的单元格是否为空来判断,再返回本身列C1;
动态数组法
上面的方法思路不能直接填充整个区域,需要利用函数下拉填充才能实现数据填充,这个方法不是很好,因为这意味着一定要插入一列辅助列才能计算如汇总数量,统计工单等二次分析数据了,所以最佳方案就是用动态数组不需要填充公式的,一个公式完成;
D2=LOOKUP(ROW(2:13),ROW(2:13)/(A2:A13>0),A2:A13),录入此函数可以发现,不需要填充了,直接生成一列动态数组区域了,这里用的是ROW生产一个数组,再去指定区域找对应满足》0条件的结果,返回的结果如下:
上面的方法有点难以理解,数据量太大的话,也会影响效率,用365函数SCAN+LAMBDA来就相对好理解了;
E2=SCAN(0,A2:A13,LAMBDA(x,y,IF(y="",x,y)))
这个非常好理解,函数的方法2类似,只不过这里是如果Y=空的话,返回X,否则返回Y,这里X代表初始0,后续每一次都会累加的起始值;Y代表一个范围,分别是A2/A3/A4一直到A13,相当于X会累加多次,这样就得到下图结果;
案例
有了这些动态数组就可以不用辅助列运算更多的数据,如计算各个工单的数量汇总的公式:
=SUM(FILTER(C2:C13,SCAN(0,A2:A13,LAMBDA(x,y,IF(y="",x,y)))=A2))
先用筛选函数把WK-001的工单筛选出来,再用SUM函数求和就可以了;
我是古哥:
从事制造行业18年,在企业运营、供应链管理、智能制造系统等方面具有丰富的实战经验。企业智能化,柔性化计划运营管理专家,擅长通过企业流程优化规范,企业管理、导入计划运营提升企业效率;对提高企业准时交货率,降低企业库存,输出智能制造人才有丰富的经验。学习PMC生产计划,关注古哥计划!
领取专属 10元无门槛券
私享最新 技术干货