能否用Excel函数识别需合并配送的门店?支持多配送场景判断
配送合并判断的Excel函数实现及替代方案
Excel函数实现步骤
假设你的透视表结构为:A列是门店名称,B-H列对应周一至周日的配送量(空单元格代表当日无配送)。
1. 计算门店配送日数量
添加辅助列(如I列),输入公式统计每个门店的配送天数:
=COUNT(B2:H2)
2. 标记符合条件的门店
添加标记列(如J列),用嵌套IF函数覆盖所有场景:
=IF(I2=1,"无需处理", IF(I2=2,IF(MIN(B2:H2)/MAX(B2:H2)<0.5,"需合并","无需处理"), IF(I2>=3,IF(MIN(B2:H2)/MAX(B2:H2)<0.3,"需标记","无需处理"),"")))
- 单配送日(I列=1):直接标记「无需处理」
- 双配送日:若最小配送量/最大配送量 < 50%,标记「需合并」,否则「无需处理」
- 三配送日及以上:若最小配送量/最大配送量 < 30%,标记「需标记」,否则「无需处理」
3. 提取目标门店列表
- 若使用Excel 365/2021,用FILTER函数一键提取:
=FILTER(A:A,J:J<>"无需处理") - 旧版Excel用INDEX+SMALL组合(下拉填充至出现#NUM!):
=INDEX(A:A,SMALL(IF(J:J<>"无需处理",ROW(J:J)),ROW(A1)))
替代工具(Excel无法满足时)
Python(Pandas库)
适合处理超大规模数据,逻辑扩展性强:
import pandas as pd # 读取透视表数据(以CSV为例,可替换为Excel读取) df = pd.read_csv("配送数据.csv") # 筛选星期几对应的配送量列 delivery_cols = [col for col in df.columns if col not in ["门店"]] # 计算配送日数、最大/最小配送量 df["配送日数"] = df[delivery_cols].count(axis=1) df["最大配送量"] = df[delivery_cols].max(axis=1) df["最小配送量"] = df[delivery_cols].min(axis=1) # 定义判断逻辑 def judge_merge(row): if row["配送日数"] == 1: return "无需处理" elif row["配送日数"] == 2: return "需合并" if (row["最小配送量"] / row["最大配送量"]) < 0.5 else "无需处理" else: return "需标记" if (row["最小配送量"] / row["最大配送量"]) < 0.3 else "无需处理" df["标记"] = df.apply(judge_merge, axis=1) # 提取符合条件的门店 target_stores = df[df["标记"] != "无需处理"]["门店"] print(target_stores)
Power Query
Excel内置的可视化数据处理工具,无需编写复杂公式,通过拖拽步骤即可实现:
- 将透视表导入Power Query
- 新增列计算配送日数、最大/最小配送量
- 添加条件列实现标记逻辑
- 筛选出标记不为「无需处理」的门店,加载回Excel
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

