做采购的不会 Excel,就像开车没有方向盘。我带过的学员里,有人入行第一年被经理骂了三次——不是谈判没谈好,是表格做得太慢。
月初要出报表,几千行采购数据一个个手动加总;供应商报价对比,靠肉眼一行行核对;库存周转分析,复制粘贴到手指发麻。十分钟能搞定的事,硬是忙了大半天。
其实不是你不会,是没人系统教过你。
Excel 对采购人来说就是吃饭的筷子。不用成为函数专家,但每天都要用的那几个核心函数,值得花时间学一下。下面这些是我做培训这些年,采购学员问得最多、也确实最常用的。按场景分好类了,用的时候直接翻。
✦ ✦ ✦
一、数据查找与匹配
采购工作中最常见的场景:手里一批物料编码,要在价格库、供应商库、库存表里找到对应信息。一个一个复制粘贴去找,那是新手干的事。
1. VLOOKUP
采购人最先该学的查找函数,就是 VLOOKUP。
它能做什么: 根据一个关键词,在另一个表中找到对应的信息。比如根据物料编码查价格、根据供应商编号查联系方式。
语法:=VLOOKUP(查找值, 查找区域, 返回第几列, 精确匹配/模糊匹配)
实战案例: 你有一张采购订单表,里面有供应商编码,要把供应商名称匹配过来。
=VLOOKUP(B2, 供应商信息表!A:B, 2, 0)
- ❋B2:当前表的供应商编码
- ❋供应商信息表!A:B:要去查找的区域(A列是编码,B列是名称)
- ❋2:返回区域的第2列(供应商名称)
- ❋0:精确匹配
五个注意点:
- STEP 1查找值必须在查找区域的第一列。 VLOOKUP 的死规定,你要找的"供应商编码"必须在查找区域的最左边。
- STEP 2返回列数从查找区域的第一列开始数。 不是从表格的 A 列开始算,是从你选定的区域的第一列开始算。
- STEP 3第四参数一定要写 0。 写 0 代表精确匹配,不写或者写 1 的话,找不到完全匹配的值时会返回近似结果,大概率是错的。
- STEP 4查找区域要加绝对引用。 用
$A$2:$B$100,下拉公式时区域才不会跑偏。选中区域后按 F4 键就可以。 - STEP 5返回 #N/A 说明没找到。 常见原因:编码前后有空格、数字格式不一致、一个是文本一个是数值。
进阶用法:IFERROR + VLOOKUP
VLOOKUP 查不到就返回 #N/A,既难看又影响后续计算。用 IFERROR 包装一下:
=IFERROR(VLOOKUP(B2, 供应商信息表!A:B, 2, 0), "未找到")
查不到的时候显示"未找到",不出错误值。
2. XLOOKUP
如果你的 Excel 版本是 Office 365 或 Excel 2021 以上,用 XLOOKUP。它解决了好几个 VLOOKUP 的硬伤。
语法:=XLOOKUP(查找值, 查找列, 返回列, [未找到时显示], [匹配模式])
比 VLOOKUP 强在哪:
- ❋查找列不必须是最左边
- ❋可以向左查找(VLOOKUP 做不到)
- ❋可以返回整行或整列
- ❋自带错误处理
实战案例: 根据供应商名称查找联系人电话(名称在右边,电话在左边):
=XLOOKUP(F2, B2:B100, A2:A100, "未找到")
版本支持的话,优先用 XLOOKUP。
3. INDEX + MATCH
版本老一点的,或者需要更灵活的方式,用 INDEX+MATCH 组合。
MATCH 找位置:=MATCH(查找值, 查找区域, 0),返回查找值在区域中的第几行。
INDEX 取数据:=INDEX(数据区域, 第几行, 第几列),根据行列位置返回数据。
组合起来:
=INDEX(价格表!A:C, MATCH(B2, 价格表!A:A, 0), 3)
在价格表的 A:C 区域里,找到 B2 这个物料编码所在的行,返回第 3 列(单价)。
优势:
- ❋不受查找列必须在最左边的限制
- ❋数据量大时查找速度比 VLOOKUP 快
- ❋可以返回查找值左边的数据
✦ ✦ ✦
二、条件统计
每个月要做的采购数据分析——花了多少钱,买了多少东西,每个供应商供了多少货。这些用条件统计函数几分钟搞定。
1. SUMIF
语法:=SUMIF(条件区域, 条件, 求和区域)
实战: 统计某家供应商的总采购金额
=SUMIF(C2:C1000, "深圳华强电子", H2:H1000)
统计某个品类的采购总额:
=SUMIF(D2:D1000, "电容", H2:H1000)
用单元格引用更灵活:
=SUMIF(C2:C1000, F2, H2:H1000)
F2 里放供应商名称,下拉填充就能批量统计所有供应商。
2. SUMIFS
一个条件不够用就上 SUMIFS。
语法:=SUMIFS(求和区域, 条件区域1, 条件1, 条件区域2, 条件2, ...)
注意 SUMIFS 的求和区域写在最前面,SUMIF 写在最后面,别搞混了。
实战: 统计"深圳华强电子"3月份的电容采购总额
=SUMIFS(H2:H1000, C2:C1000, "深圳华强电子", A2:A1000, ">=2025-3-1", A2:A1000, "<=2025-3-31", D2:D1000, "电容")
同时满足供应商、日期范围、物料类别四个条件,一次出结果。
3. COUNTIF / COUNTIFS
想知道某家供应商来了多少批货、某个物料买了多少次,用 COUNTIF。
语法:=COUNTIF(计数区域, 条件)
实战: 统计深圳华强电子的到货批次
=COUNTIF(C2:C1000, "深圳华强电子")
多条件用 COUNTIFS:
=COUNTIFS(C2:C1000, "深圳华强电子", F2:F1000, "已入库")
4. AVERAGEIF / AVERAGEIFS
算平均单价、平均交货天数,用这个。
实战: 计算某物料各次采购的平均单价
=AVERAGEIF(B2:B1000, "MLCC-0805-104K", H2:H1000)
✦ ✦ ✦
三、逻辑判断
1. IF
语法:=IF(条件, 条件成立时返回的值, 条件不成立时返回的值)
实战: 判断交期是否延误
=IF(E2 > F2, "延误", "正常")
E2 是实际到货日期,F2 是承诺交货日期。晚于承诺就标"延误"。
判断是否需要补货:
=IF(G2 < 100, "需要补货", "库存充足")
G2 是当前库存,低于安全库存就提示补货。
2. IFS(Excel 2016+)
语法:=IFS(条件1, 返回值1, 条件2, 返回值2, ...)
不用写嵌套 IF,IFS 清晰很多。
实战: 供应商评级
=IFS(综合得分>=90, "A级供应商", 综合得分>=80, "B级供应商", 综合得分>=70, "C级供应商", 综合得分<70, "D级供应商")
3. IF + AND/OR
AND:所有条件都成立才返回真
=IF(AND(E2 <= F2, G2 = "合格"), "正常入库", "需处理")
实际到货日不晚于承诺日,同时质检合格,才正常入库。
OR:任意一个条件成立就返回真
=IF(OR(H2 < 50, I2 > 30), "预警", "正常")
库存低于 50,或者在途天数超过 30 天,触发预警。
✦ ✦ ✦
四、文本处理
从 ERP 导出的数据经常带着各种脏东西——多余空格、格式不一致、文本和数字混在一起。文本函数就是处理这些的。
1. TRIM
很多数据从系统导出来后,文本前后或中间有多余空格,VLOOKUP 匹配不上就是因为这个。TRIM 一键清理。
=TRIM(A2)
建议养成习惯:从 ERP 导出数据后,先拿 TRIM 清洗一遍再操作。
2. LEFT / RIGHT / MID
LEFT:从左边开始提取
实战: 从物料编码中提取前 4 位(品类代码)
=LEFT(A2, 4)
编码"ELEC-CAP-0805-104K"提取出"ELEC"
RIGHT:从右边开始提取
=RIGHT(B2, 6)
提取订单号的后 6 位。
MID:从中间任意位置提取
=MID(A2, 6, 3)
从第 6 位开始,取 3 个字符。
3. LEN
检查数据格式时很好用。比如正常供应商编码应该是 8 位,用 LEN 一算就知道哪些有问题。
=LEN(A2)
筛选出长度不是 8 的,大概率有问题。
4. TEXT
把数字转换成指定格式的文本,做报表时很有用。
实战: 把日期格式化成"2025年3月15日"
=TEXT(A2, "yyyy年m月d日")
金额加千位分隔符:
=TEXT(H2, "#,##0.00")
5. TEXTJOIN(Excel 2016+)
把多个单元格的内容合并到一个单元格。
实战: 将同一采购单的多个物料名称合并
=TEXTJOIN("、", TRUE, C2:C10)
生成报价汇总表时,把同一供应商供应的多个物料名称合并到一格,很实用。
✦ ✦ ✦
五、日期与时间
1. TODAY 与 NOW
=TODAY() → 当天日期(自动更新)
=NOW() → 当前日期+时间(自动更新)
实战: 计算距交货期还有多少天
=F2 - TODAY()
结果为负数说明已经延误了。
2. DATEDIF
这个函数在 Excel 帮助文档里搜不到,但很实用。
语法:=DATEDIF(开始日期, 结束日期, "单位")
"d"=天数,"m"=整月数,"y"=整年数
实战: 计算采购提前期
=DATEDIF(下单日期, 到货日期, "d")
算某供应商合作了多少个月:
=DATEDIF(首次合作日期, TODAY(), "m")
3. YEAR / MONTH / DAY
做月度采购报表统计时特别有用。
=YEAR(A2) → 提取年份
=MONTH(A2) → 提取月份
=DAY(A2) → 提取日
生成"年月"字段用于数据透视表汇总:
=YEAR(A2) & "年" & MONTH(A2) & "月"
4. EOMONTH
实战: 计算当月最后一天,用于月度结算
=EOMONTH(TODAY(), 0)
0 表示当月最后一天,-1 表示上个月最后一天。
✦ ✦ ✦
六、数据清洗与错误处理
1. IFERROR
前面在 VLOOKUP 那里已经用过,通用场景也适用。
=IFERROR(原公式, 出错时返回的值)
实战: 计算单价时避免被零除
=IFERROR(总金额 / 数量, "数据异常")
2. ISNUMBER / ISTEXT
检查数据格式。
=ISNUMBER(A2) → 数字返回 TRUE
=ISTEXT(A2) → 文本返回 TRUE
实战: 检查单价列是否为数字
=IF(ISNUMBER(H2), H2 * 数量, "格式错误")
3. UNIQUE(新版 Excel)
从大量采购数据中一键提取所有不重复的供应商名称或物料编码。
=UNIQUE(供应商列区域)
实战: 从年度采购明细中提取所有供应商名单
=UNIQUE(C2:C10000)
4. FILTER(新版 Excel)
按条件筛选,比 Excel 自带的筛选更灵活。
语法:=FILTER(数据区域, 条件, [无结果时返回])
实战: 提取所有 A 级供应商的名单和联系方式
=FILTER(A2:D100, F2:F100 = "A级供应商", "无符合条件的供应商")
筛选结果会自动扩展,数据更新后结果同步更新。
✦ ✦ ✦
七、实战组合公式
公式单独学不难,难的是在实际场景里组合用。下面几个是采购工作中高频出现的组合场景。
场景 1:多条件查找最新单价
根据物料编码和供应商,查找最近一次采购的单价。
=INDEX(单价列, MATCH(1, (物料编码列=目标编码)*(供应商列=目标供应商)*(日期列=MAXIFS(日期列, 物料编码列, 目标编码, 供应商列, 目标供应商)), 0))
老版 Excel 需要按 Ctrl+Shift+Enter 以数组公式输入。
场景 2:动态库存预警
=IF(F2 - SUMIF(出库!A:A, A2, 出库!B:B) < 安全库存, "触发补货", "正常")
当前库存减去已出库数量,低于安全库存就触发补货提示。
场景 3:供应商综合评分自动定级
=IFS(AVERAGE(评分区间)>=90, "A级", AVERAGE(评分区间)>=80, "B级", AVERAGE(评分区间)>=70, "C级", TRUE, "D级")
把质量、交期、服务、价格多个维度评分自动计算并定级。
场景 4:月度采购金额自动汇总
=SUMPRODUCT((MONTH(日期列)=MONTH(TODAY()))*(YEAR(日期列)=YEAR(TODAY()))*金额列)
当月采购总额一键算出。
场景 5:采购订单到期提醒
=IF(F2-TODAY()<=7, IF(F2-TODAY()>=0, "即将到期,还有"&F2-TODAY()&"天", "已延误"&ABS(F2-TODAY())&"天"), "正常")
交货期前 7 天自动提醒,过期自动标延误天数。
✦ ✦ ✦
实用建议
1. 数据区和报表区分开
不要直接在原始数据上写公式。建一个"数据录入区"只放原始数据,再建一个"报表展示区"用公式引用计算。每天更新数据区,报表自动刷新,一次搭建长期用。
2. 快捷键能省很多时间
- ❋Ctrl+Shift+↓:快速选中整列
- ❋Alt+=:一键求和
- ❋F4:切换绝对引用/相对引用
- ❋Ctrl+T:把数据区域转为超级表,公式自动向下填充
3. 建自己的公式工具箱
把常用的公式存到一个单独的 Excel 文件里,按场景分好类。每次遇到类似情况直接打开复制粘贴,改改参数就行。积累半年,效率翻倍。
✦ ✦ ✦
Excel 函数这东西,看十遍不如动手敲一遍。上面每个函数我都写了采购场景的案例,打开 Excel 照着试一遍就行。
不用一次全部学会。先搞定 VLOOKUP、SUMIFS、IF 这三个,平时八成的数据处理够用了。用熟了再学别的。
做采购的,工具趁手比什么都强。



