全文约2600字

大家好,我是古老师。今天我将发布2025年第9周PMC生产计划群的“每日一练”题目与答案。本次发布的资料包括每日练习题、对应的正确答案以及对相关考点的详细解析,旨在辅助大家的学习,并作为参考资料使用。
本周的主题集中在表格中单元格文本的分拆,例如文本与数字、文本与字母的分离,文本分行处理,以及将文本格式的日期转换为标准日期等几个方面。这些分拆操作在生产计划的各种场景中都非常实用。

题目背景:
在物料清单中,物料代码通常包含特定规则,如字母代表物料类型或产地代码,数字代表年份等。如果不将这些信息分开,后续的数据分析将难以快速汇总。
考核点:
1. 函数:TEXTSPLIT
2. 堆叠函数:REDUCE
参考答案:
假设A列中包含符合上述规则的物料代码“M-APC5-SZ-2024”,可以在适当位置输入以下动态数组公式:
=DROP(REDUCE("",TRIMRANGE(A2:A100),LAMBDA(x,y,VSTACK(x,TEXTSPLIT(y,"-")))),1,1)
公式解释:
TRIM(A2:A100):确保从A2到A100单元格区域中的每个值都没有多余的空格。
REDUCE("", ..., LAMBDA(x, y, VSTACK(x, ...))):使用REDUCE函数遍历处理过的每个值,并通过VSTACK将其堆叠起来。
TEXTSPLIT(y, "-"):使用TEXTSPLIT函数根据分隔符“-”拆分每个物料代码。
DROP(..., 1):移除结果中的第一个元素(即初始的空字符串),以确保结果仅包含有效的拆分数据。

题目背景:
在一些ERP系统导出的数据中,工单号通常包含日期信息,例如:WK240515A-3。为了便于后续进行日期维度的数据分析,需要从这些工单号中提取出日期部分,并将其转换为标准日期格式。
考核点:
1. 定义函数:LET
2. 日期函数:DATE
3. 文本函数:LEFT MID RIGHT
参考答案:
假设A列为为工单号:WK240515A-3,可以在适当位置输入以下动态数组公式:
=LET(A,TRIMRANGE(A2:A100),DATE("20"&MID(A,3,2),MID(A,5,2),MID(A,7,2)))

函数解释:
TRIM(A2:A100):确保从A2到A100单元格区域中的每个值都没有多余的空格。
LET:定义变量以简化公式表达。这里我们定义了一个名为A的变量来存储处理后的数据范围。
MID(A, 3, 2):从A中提取从第3个字符开始的2个字符(年份部分),并加上2000得到完整的年份。
MID(A, 5, 2):从A中提取从第5个字符开始的2个字符(月份部分)。
MID(A, 7, 2):从A中提取从第7个字符开始的2个字符(日期部分)。
DATE(year, month, day):将提取出的年、月、日组合成标准日期格式。
周三: 备注中的混合文本处理题目背景:
在表格中,有一些文本备注包含多种规则的信息,例如“库位A3-过期20240515”,其中包括库位信息、库存状态和日期信息。需要将这些信息分离出来。分离的难点在于文本长度不一致,例如库位可能是“A3”、“B14”或“C007”。对于这类信息,可以使用文本函数进行特定截取。
考核点:
1. 文本函数:TEXTBEFORE/TEXTAFTER/MID/RIGHT/LEFT
2. 合并函数:HSTACK
3. 裁剪函数:TRIMRANGE
4. 日期函数:DATE
参考答案:
假设A列为包含上述格式的备注信息,可以在适当位置输入以下动态数组公式:
=LET(A,TRIMRANGE(A2:A100),B,RIGHT(A,8),HSTACK(TEXTBEFORE(TEXTAFTER(A,"库位"),"-"),TEXTAFTER(TEXTBEFORE(A,B),"-"),DATE(LEFT(B,4),MID(B,5,2),RIGHT(B,2))))

函数解释:
TRIM(A2:A100):确保从A2到A100单元格区域中的每个值都没有多余的空格。
LET:定义变量以简化公式表达。这里我们定义了两个变量:
A:存储处理后的数据范围。
datePart:提取出每条记录末尾的8个字符(即日期部分)。
TEXTAFTER(A, "库位"):从A中提取“库位”之后的部分。
TEXTBEFORE(..., "-"):从上一步的结果中提取“-”之前的库位信息。
TEXTBEFORE(A, datePart):从A中提取日期部分之前的内容。
TEXTAFTER(..., "-"):从上一步的结果中提取“-”之后的库存状态信息。
DATE(LEFT(datePart, 4), MID(datePart, 5, 2), RIGHT(datePart, 2)):将提取出的日期部分转换为标准日期格式。
HSTACK(...):将提取出的库位信息、库存状态和日期组合成一个水平数组。
周四: 分拆单元格内容题目背景:
在某些特定场景中,需要将单元格的内容分拆到多行或多列。此时,需要观察待分拆的单元格,找到其中的特定规律,并使用文本函数进行快速分离。
考核点:
1. 文本函数:TEXTSPLIT
参考答案:
A列的数据为:C200交300;M-X3080交20;S1005交1800,此时可以利用关键符号:"交",";"来分离,录入动态数组公式一键分离;
=TEXTSPLIT(A2,"交",";")

函数解释:
TEXTSPLIT(A2, "交", ";"):此公式使用TEXTSPLIT函数根据指定的分隔符“交”和“;”对单元格A2中的内容进行分拆。
第一个参数A2:表示要进行分拆的单元格。
第二个参数"交":表示第一个分隔符,用于分拆不同部分的交货信息。
第三个参数";":表示第二个分隔符,用于分拆不同的记录。
该公式会将单元格中的内容按照“交”和“;”分割成多个部分,并以数组的形式返回结果。
周五: 分拆单元格内容并堆叠题目背景:
在实际应用场景中,数据来源更为复杂,不仅需要将单元格内容分拆成多行或多列,还需要批量分离多个单元格的内容并将它们堆叠在一起。此时,单一的函数已经无法满足需求,需要使用高阶函数如REDUCE来完成这一任务。
考核点:
1. 文本函数:TEXTSPLIT
2. 合并函数:VSTACK
3. 堆叠函数:REDUCE
4. 裁剪函数:TRIMRANGE
5. 舍弃函数:DROP
参考答案:
假设A列和B列的数据如下:
A列:标识符(例如“A”)
B列:包含分隔符的数据(例如“C2050x3;M3080x2;S1005x1”)
可以在适当位置输入以下动态数组公式来实现批量分拆并堆叠: =DROP(REDUCE("",TRIMRANGE(A2:A100),LAMBDA(X,Y,VSTACK(X,LET(A,Y,IFNA(HSTACK(A,TEXTSPLIT(OFFSET(A,,1),"x",";")),A))))),1)

函数解释:
TRIMRANGE(A2:A100):确保从A2到A100单元格区域中的每个值都没有多余的空格。
REDUCE("", ..., LAMBDA(X, Y, ...)):使用REDUCE函数遍历处理过的每个值,并通过LAMBDA函数定义逻辑。
X:累积结果。
Y:当前处理的单元格值。
OFFSET(Y, 0, 1):获取与当前行对应的B列数据。
LET:定义变量以简化公式表达。这里我们定义了一个名为A的变量来存储对应的B列数据。
TEXTSPLIT(A, "x", ";"):根据分隔符“x”和“;”对A进行分拆。
HSTACK(Y, TEXTSPLIT(...)):将A列的标识符与分拆后的结果水平堆叠。
IFNA(..., Y):如果分拆过程中出现错误,则返回原始的标识符。
VSTACK(X, ...):将处理后的结果垂直堆叠到累积结果X中。
DROP(..., 1):移除结果中的第一个元素(初始的空字符串),以确保结果仅包含有效的数据。
以上就是本周关于PMC生产计划的所有题目和答案。希望通过这些练习,大家能够更好地掌握数据处理和分析的技巧,特别是在复杂的数据环境中如何高效地分离、提取和转换信息。这些技能不仅有助于提高工作效率,还能增强对数据的理解和应用能力。
同时,欢迎大家加入古哥PMC专业群,与更多的同行一起交流经验、共同学习、进步和成长。感谢大家的积极参与和支持!