如何识别存在多种重量分类的采购订单(PO)
识别包含多种重量分类的采购订单方法
核心逻辑很明确:统计每个采购订单(PO)下的重量分类种类数,筛选出种类数大于1的PO即可。以下是两种实用实现方式:
方案1:用Excel快速处理
如果数据存储在Excel/CSV中,按以下步骤操作:
- 确保数据结构为每行对应1个PO下的单个SKU,列至少包含「采购订单号」和「重量分类」
- 方法A(辅助列):
添加新列「分类种类数」,输入数组公式(输入后按Ctrl+Shift+Enter生效):
公式里的=SUMPRODUCT(($A$2:$A$1000=A2)/COUNTIF($B$2:$B$1000&$A$2:$A$1000,$B$2:$B$1000&$A$2:$A$1000))A$2:$A$1000替换为你的PO号列范围,B$2:$B$1000替换为重量分类列范围。之后筛选「分类种类数」>1的行,对应的PO就是目标对象。 - 方法B(数据透视表):
- 插入数据透视表,行字段选「采购订单号」,值字段选「重量分类」
- 右键值字段→「值字段设置」→计算类型选「非重复计数」
- 筛选透视表中「非重复计数」>1的PO,即为需要识别的对象
方案2:用Python批量处理(适合大量数据)
如果数据量极大(数千份PO),用Python脚本效率更高,示例代码如下(假设数据是CSV格式):
import pandas as pd # 读取采购订单数据,替换为你的文件路径 df = pd.read_csv("purchase_orders.csv") # 按PO分组,统计每个PO的重量分类种类数 po_class_stats = df.groupby("po_number")["weight_class"].nunique() # 筛选出分类种类数大于1的PO target_pos = po_class_stats[po_class_stats > 1].reset_index() # 输出结果或保存到文件 print("需识别的采购订单:") print(target_pos) target_pos.to_csv("target_purchase_orders.csv", index=False)
注意事项
- 无论用哪种方法,必须保证PO号格式统一(避免同一个PO出现"PO123"和"po123"两种写法)
- 如果数据来自ERP系统,直接导出「PO号+SKU重量分类」的明细数据即可,无需提前汇总
内容的提问来源于stack exchange,提问作者Francisco Augusto Varela Aguir
相关产品推荐
相关产品推荐

