You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多规则下门店商品移库成本自动化计算方案咨询

高效计算门店移库成本的方案

一、Excel 批量计算方案

适合中小数据量,无需编程基础,用内置函数实现自动计算

场景1:LA2/LA3入库全部来自LA1

在Moving Cost列的第一个单元格输入以下公式,下拉填充即可:

=IFS(
    AND(Store code="LA2", Moving Units>0), Moving Units*XLOOKUP(Product Code&"LA1", Product Code&Store code, Original Price),
    AND(Store code="LA3", Moving Units>0), Moving Units*XLOOKUP(Product Code&"LA1", Product Code&Store code, Original Price),
    AND(Store code="LA1", Moving Units<0), ABS(Moving Units)*Original Price,
    TRUE, 0
)
  • 逻辑说明:自动匹配当前商品LA1的原价,对LA2/LA3的入库计算成本;LA1的出库按自身原价×出库数量计算;其他情况填0。

场景2:LA2入库来自LA1和SA1,SA1出库分至多门店

在Moving Cost列的第一个单元格输入以下公式,下拉填充即可:

=IF(
    AND(Store code="LA2", Moving Units>0),
    MIN(Moving Units, SUMIFS(ABS(Moving Units), Product Code, @Product Code, Store code, "LA1"))*XLOOKUP(@Product Code&"LA1", Product Code&Store code, Original Price) +
    MAX(0, Moving Units - SUMIFS(ABS(Moving Units), Product Code, @Product Code, Store code, "LA1"))*XLOOKUP(@Product Code&"SA1", Product Code&Store code, Original Price),
    IF(AND(Moving Units<0), ABS(Moving Units)*Original Price, 0)
)
  • 逻辑说明:优先用LA1的出库量匹配LA2的入库需求,剩余部分用SA1的原价计算;出库门店统一按自身原价×出库数量计算成本。

二、Python 批量计算方案

适合大数据量,一次性处理所有数据,效率更高

前置准备

确保已安装依赖库:pip install pandas openpyxl

场景1代码实现

import pandas as pd

# 读取数据
df = pd.read_excel("移库数据.xlsx")

# 构建商品-LA1原价映射字典
la1_price_map = df[df['Store code'] == 'LA1'].set_index('Product Code')['Original Price'].to_dict()

# 定义成本计算函数
def calc_scenario1(row):
    if row['Store code'] in ['LA2', 'LA3'] and row['Moving Units'] > 0:
        return row['Moving Units'] * la1_price_map.get(row['Product Code'], 0)
    elif row['Store code'] == 'LA1' and row['Moving Units'] < 0:
        return abs(row['Moving Units']) * row['Original Price']
    return 0

# 批量计算移库成本
df['Moving Cost'] = df.apply(calc_scenario1, axis=1)

# 保存结果
df.to_excel("场景1计算结果.xlsx", index=False)

场景2代码实现

import pandas as pd

# 读取数据
df = pd.read_excel("移库数据.xlsx")

# 提取出库记录并汇总各门店出库总量
outbound_records = df[df['Moving Units'] < 0].copy()
outbound_records['Outbound_Qty'] = abs(outbound_records['Moving Units'])
outbound_summary = outbound_records.groupby(['Product Code', 'Store code'])['Outbound_Qty'].sum().unstack(fill_value=0)

# 定义成本计算函数
def calc_scenario2(row):
    if row['Store code'] == 'LA2' and row['Moving Units'] > 0:
        need_qty = row['Moving Units']
        # 获取LA1可供应数量
        la1_available = outbound_summary.loc[row['Product Code'], 'LA1']
        # 计算从LA1和SA1获取的数量及对应成本
        la1_qty = min(need_qty, la1_available)
        la1_cost = la1_qty * df[(df['Product Code'] == row['Product Code']) & (df['Store code'] == 'LA1')]['Original Price'].iloc[0]
        
        sa1_qty = max(0, need_qty - la1_qty)
        sa1_cost = sa1_qty * df[(df['Product Code'] == row['Product Code']) & (df['Store code'] == 'SA1')]['Original Price'].iloc[0]
        return la1_cost + sa1_cost
    elif row['Moving Units'] < 0:
        return abs(row['Moving Units']) * row['Original Price']
    return 0

# 批量计算移库成本
df['Moving Cost'] = df.apply(calc_scenario2, axis=1)

# 保存结果
df.to_excel("场景2计算结果.xlsx", index=False)

内容的提问来源于stack exchange,提问作者ccha735

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:25:39