如何基于产品属性表生成全量SKU组合,简化空值过滤配置
SKU全量属性组合生成方案
方案1:Excel/WPS内置函数实现(适配Office 365/2021+、WPS最新版,无需代码)
核心利用TOCOL函数自动过滤空值,配合LET+数组运算生成笛卡尔积,无需编写大量ISBLANK判断逻辑,配置成本极低:
- 第一步:单属性有效值提取:对每类属性列(如类型、规格、香味),用
=TOCOL(属性列范围,1)提取非空值列表,第二个参数1代表自动忽略所有空单元格,无需额外判断逻辑。 - 第二步:全组合生成公式(以3类属性为例,可灵活扩展):
=LET( // 提取各属性非空值列表 attr1,TOCOL(A:A,1), // A列为产品类型列 attr2,TOCOL(B:B,1), // B列为香味列 attr3,TOCOL(C:C,1), // C列为规格列 // 计算各属性值数量 cnt1,ROWS(attr1),cnt2,ROWS(attr2),cnt3,ROWS(attr3), // 计算总组合数 total,cnt1*cnt2*cnt3, // 生成所有组合并拼接 INDEX(attr1,INT((SEQUENCE(total)-1)/(cnt2*cnt3))+1)&", "& INDEX(attr2,INT(MOD(SEQUENCE(total)-1,cnt2*cnt3)/cnt3)+1)&", "& INDEX(attr3,MOD(SEQUENCE(total)-1,cnt3)+1) )
- 第三步:扩展属性只需在公式中新增对应属性的提取、计数变量,调整拼接逻辑即可,无需针对空值单独调试。
方案2:Python轻量脚本实现(适配高频新品迭代场景)
若每月新增SKU品类超过5个,推荐用脚本实现,支持任意数量属性、自动过滤空值,无需每次调整配置:
- 依赖安装:执行命令
pip install pandas openpyxl - 核心代码:
import itertools import pandas as pd # 读取属性表:第一行是属性名,每列存对应属性的可选值 attr_df = pd.read_excel("产品属性录入表.xlsx") # 每列过滤空值,生成属性值列表 attr_lists = [attr_df[col].dropna().tolist() for col in attr_df.columns] # 生成全量笛卡尔积组合 sku_combinations = list(itertools.product(*attr_lists)) # 导出结果 result_df = pd.DataFrame(sku_combinations, columns=attr_df.columns) result_df.to_excel("SKU全组合结果.xlsx", index=False)
- 后续新增品类仅需更新属性录入表的内容,运行脚本即可直接输出结果,无需修改代码。
内容的提问来源于stack exchange,提问作者Orion Hunt
相关产品推荐
相关产品推荐

