全文约2200字
大家好,我是古老师。在PMC(生产与物料控制)的工作环境中,物料控制员常常需要分析仓库中存货的价值,例如某工厂成品仓库的存货价值。具体而言,他们需要分析不同金额区间内的存货占总库存价值的比例,比如0-999元范围内的存货占比。这种分析的金额区间是可以灵活调整的,比如可以从0-999元调整至0-1999元。
以具体的金额区间为例,“0-999元”、“1000-1499元”、“1500-1999元”以及“2000-2999元”,物料控制员会计算每个区间内存货占总库存价值的比例。通过这类分析,可以快速掌握成品仓库中低值、中值和高值存货的比例和排名,为生产计划和物料控制的决策提供重要的数据支持。
确定范围与对应关系要分析成品仓中中成品对应价值的范围分析,第一步就需要建立金额范围区间,我们可以在合适位置录入金额范围,这个范围为了方便后续查找与引用,设计为标准的一维数据。
在F列录入标题金额范围,下方录入对应的数字整数,如0、1000、2000……,这些数字可以根据管理需求,灵活调整。
在G列录入标题范围对应,下方录入动态数组公式:
=LET(Ranges,F2:F30,TAKE(MAP(Ranges,F3:F31,LAMBDA(Start,End,LET(S,Start,E,End,IF(E="",S&"以上",S&"-"&(E-1))))),COUNTA(Ranges)))
定义变量:
Ranges, F2:F30:定义了一个名为Ranges的变量,它包含从F2到F30的单元格区域,这些单元格中存储的是金额区间的起始值。
Ranges1, F3:F31:定义了一个名为Ranges1的变量,它包含从F3到F31的单元格区域,这些单元格中存储的是金额区间的结束值。注意这里的范围比Ranges多一行,这是为了处理最后一个区间的特殊情况(即没有明确的结束值)。
使用MAP函数:
MAP(Ranges, Ranges1, LAMBDA(...)):MAP函数用于遍历Ranges和Ranges1中的每一个元素,并对每一对起始值和结束值应用一个LAMBDA函数。
LAMBDA(Start, End, ...):定义了一个匿名函数(LAMBDA函数),它接受两个参数:Start(起始值)和End(结束值)。
LAMBDA函数内部逻辑:
LET(S, Start, E, End, ...):在LAMBDA函数内部再次使用LET函数,定义了两个局部变量S和E,分别对应Start和End。
IF(E="", S&"以上", S&"-"&(E-1)):这是一个条件判断语句,用于生成区间的描述。
如果E为空(即没有明确的结束值),则生成的描述为S&"以上",表示从S开始到无限大的区间。
否则,生成的描述为S&"-"&(E-1),表示从S到E-1的区间。
使用TAKE和COUNTA函数:
TAKE(..., COUNTA(Ranges)):TAKE函数用于从MAP函数的结果中提取前COUNTA(Ranges)个元素。
COUNTA(Ranges):计算Ranges中有多少个非空单元格,确保只提取有效的区间描述,排除任何多余的空值或错误。
总结
这个公式的主要作用是根据起始值和结束值生成一系列金额区间描述,并确保结果中只包含有效的区间。通过这种方式,可以方便地管理和分析库存中不同金额区间的存货比例。
返回成品金额的范围有了上面定义的区间范围,我们就可以利用XLOOKUP函数来引用这些区间。假设C列包含不同成品对应的金额,在D列输入标题“对应范围”,然后在D列下方录入以下动态数组公式:
=LET(C,C2:C10000,TAKE(XLOOKUP(C,F:F,G:G,,-1),COUNTA(C)))
公式解释:
定义变量:
C, C2:C10000:定义了一个名为C的变量,它包含从C2到C10000的单元格区域,这些单元格中存储的是不同成品对应的金额。
使用XLOOKUP函数:
XLOOKUP(C, F:F, G:G, "", -1):XLOOKUP函数用于在F列(金额范围)中查找C列中的每个金额,并返回对应的G列(区间描述)。具体参数如下:
C:要查找的值,即C列中的金额。
F:F:查找范围,即F列中的金额范围。
G:G:返回范围,即G列中的区间描述。
"":如果没有找到匹配项,则返回空字符串。
-1:表示查找方式为近似匹配,即查找小于或等于查找值的最大值。
使用TAKE和COUNTA函数:
TAKE(..., COUNTA(C)):TAKE函数用于从XLOOKUP的结果中提取前COUNTA(C)个元素。
COUNTA(C):计算C中有多少个非空单元格,确保只提取有效的区间描述,排除任何多余的空值或错误。
总结
这个公式的主要作用是根据C列中不同成品对应的金额,查找并返回F列和G列中定义的相应区间描述。通过这种方式,可以方便地将每个成品的金额与其所属的金额区间对应起来,从而进行进一步的分析。
汇总不同范围的金额已经成功在C列返回了对应的不同金额范围,接下来可以对这些范围的金额进行汇总。在H列输入标题“汇总金额”,然后在H列下方录入以下动态数组公式:
=SUMIFS(C:C,D:D,G2#)
公式解释:
SUMIFS(C:C, D:D, G2#):SUMIFS函数用于根据多个条件对指定范围内的值进行求和。在这个公式中:
C:C:这是要进行求和的范围,即C列中不同成品对应的金额。
D:D:这是条件范围,即D列中返回的金额区间描述。
G2#:这是条件值,即G列中定义的金额区间描述的动态数组。#符号表示这是一个动态数组引用,确保公式能够正确处理多个区间描述。
总结
这个公式的主要作用是根据D列中返回的金额区间描述,对C列中相应范围的金额进行汇总。通过这种方式,可以方便地查看每个金额区间内的总金额,从而进行进一步的分析和决策。
不同范围的占比和排名接下就是不同范围的金额占比和金额分析了,在I列录入标题占比,并在下方录入占比的动态数组公式:
=H2#/SUM(H2#)
在J列录入动态数组公式:
=RANK(H2#,H2#)
以上公式的解释为:
占比公式:
=H2# / SUM(H2#):这个公式用于计算每个金额区间在总金额中的占比。
H2#:这是一个动态数组引用,表示H列中所有汇总金额的值。
SUM(H2#):计算H列中所有汇总金额的总和。
H2# / SUM(H2#):将每个金额区间内的汇总金额除以总金额,得到该区间的占比。
排名公式:
=RANK(H2#, H2#):这个公式用于计算每个金额区间在所有汇总金额中的排名。
H2#:这是一个动态数组引用,表示H列中所有汇总金额的值。
RANK(H2#, H2#):计算每个金额区间内的汇总金额在所有汇总金额中的排名。
总结
这两个公式的主要作用是:
占比公式:计算每个金额区间在总金额中的占比,帮助理解各个区间的重要程度。
排名公式:确定每个金额区间在所有汇总金额中的排名,帮助识别哪些区间是最重要的。
通过这种方式,可以全面分析不同金额区间内的金额占比和排名,为生产和库存管理提供有力的数据支持。
最后的技术总结通过动态数组的应用,我们已经设计好了一个全自动更新的金额范围分析库存表。用户只需调整所需分析的金额范围,即可快速分析出仓库中资材的金额占比、排名等数据,为PMC(生产与物料控制)做出更好的生产排程决策,满足客户需求,保证按时交货。