—— 学一些函数,大大提升自己的工作效率
前阵子瓜爸问起我一些数据整理上的事情,我跟他共享了日常工作中高频使用的函数,有些技能让他顿感惊讶倍感惊喜。
今天把这套财务人高频使用的函数组合分享出来,从查数、对账、汇总、判断、日期到格式化,覆盖全部高频场景。建议先收藏,用到时直接翻。
(不仅仅是财务能用到,瓜爸做工程造价结算也能用的很顺手哦!!!)
01|XLOOKUP
VLOOKUP做不到的事,它都行
场景还原:
你的台账里,A列是"姓名",B列是"工号",C列是"部门"。现在你手上有一份工号清单,要批量查出对应的姓名——工号在左,姓名在左,VLOOKUP根本查不了。
这就是VLOOKUP的死穴:查找列必须在返回列的左边。
XLOOKUP直接打破这个限制:
=XLOOKUP(F2, B:B, A:A)
意思:从B列找到F2这个工号,返回对应的A列姓名 想从左往右查、从右往左查,随你
找不到时不会像VLOOKUP那样跳出刺眼的#N/A:
=IFERROR(XLOOKUP(F2, B:B, A:A), "台账无此人")
XLOOKUP 的完整语法:
=XLOOKUP(找什么, 在哪列找, 返回哪列, [找不到时显示什么], [匹配模式], [搜索模式])
最后三个参数是可选的,但非常实用:
进阶用法——多列查找:
需要同时返回姓名和部门?一个公式搞定:
=XLOOKUP(F2, B:B, A:C)
XLOOKUP 的返回区域可以是一整片范围,结果会自动溢出到相邻列。一个公式,两列数据,瞬间到位。
避坑提醒: XLOOKUP 是 Excel 365 和 Excel 2021 才有的函数。如果你用的是旧版本,请用下面的 INDEX+MATCH 组合替代。
02|INDEX + MATCH
跨列万能查找,财务对账标配
这是Excel里最万能的查找组合,但很多财务人看到公式就头大,其实逻辑很简单:
=INDEX(要返回的数据在哪列, MATCH(找什么, 在哪列找, 0))
场景还原:
应付账款台账里,I列是"发票号",J列是"实际付款日期",K列是"付款金额"。你手上有一份发票清单,需要逐行查出对应付款金额。
=INDEX(K:K, MATCH(I2, I:I, 0))
拆解一下:MATCH(I2, I:I, 0) → 在I列找到发票号I2,返回它是第几行 INDEX(K:K, ...) → 根据行号,去K列取值
为什么财务必学这组?
因为实际工作中,查找列和返回列往往不在表格最左侧,VLOOKUP要重新排列列顺序,INDEX+MATCH完全不用动原表结构。
进阶用法——双向查找(行列交叉定位):
假设你有一张各部门各月份的费用表,行是部门、列是月份。要查"财务部3月"的费用:
=INDEX(B2:M100, MATCH("财务部", A2:A100, 0), MATCH("3月", B1:M1, 0))
先用 MATCH 找到"财务部"在第几行,再用 MATCH 找到"3月"在第几列,最后用 INDEX 把这个交叉点的值取出来。这种行列双向定位,VLOOKUP 做不到,XLOOKUP 也做不到。
INDEX+MATCH vs XLOOKUP 怎么选?
03|SUMIFS
多条件汇总,月末报告神器
场景还原:
你有全年12个月的报销明细,现在要汇总:销售一部、2025年3月、类别为"差旅"的报销总额。
以前要筛选+手动累加,现在一行公式:
=SUMIFS(C:C, A:A, "销售一部", B:B, "2025年3月", D:D, "差旅")
参数顺序:SUMIFS(求和列, 条件列1, 条件1, 条件列2, 条件2, ...)
关键细节:条件列和求和列是分开的! SUMIFS 的第一个参数是"求和列",后面的才是"条件列+条件"成对出现。这和旧版 SUMIF 刚好相反,很多人在这里踩坑。
条件里可以用通配符和比较符:
| |
|---|
| =SUMIFS(工资列, 部门列, "财务部") |
| =SUMIFS(金额列, 月份列, "6月", 类别列, "招待费") |
| =COUNTIFS(金额列, ">5000") |
| =SUMIFS(金额列, 姓名列, "张*") |
| =SUMIFS(金额列, 日期列, ">=2025/1/1", 日期列, "<=2025/3/31") |
💡 COUNTIFS 的语法和 SUMIFS 一模一样,区别是一个求和、一个计数,配合起来做财务分析非常好用。
💡 通配符:* 代表任意多个字符,? 代表单个字符。"张*" 匹配所有姓张的人。
避坑提醒: 条件值如果是文本,必须加双引号;如果是引用单元格,则不加引号。例如 =SUMIFS(C:C, A:A, F2) 中 F2 不加引号,但 =SUMIFS(C:C, A:A, "销售一部") 中文本必须加引号。
04|FILTER
输入条件,整张表自动生成
这是 Excel 365 专属函数,但用过的人都直呼"回不去了":
场景还原:
报销台账有几百行数据,领导突然要你"把所有金额大于10000且状态为'未审批'的记录筛出来"。
不用筛选器,不用复制粘贴,FILTER一行搞定:
=FILTER(A:E, (E:E>10000) * (D:D="未审批"))
含义:筛选A到E列中,E列(金额)大于10000且D列(状态)为"未审批"的整行数据 自动生成一张动态筛选表,原始数据更新,这张表同步刷新
数据示例:
【原始报销台账】 A: 姓名 | B: 部门 | C: 报销日期 | D: 状态 | E: 金额 张三 | 销售部 | 2025/3/5 | 已审批 | ¥8,500 李四 | 财务部 | 2025/3/8 | 未审批 | ¥12,000 ← 这行会被筛出 王五 | 行政部 | 2025/3/12 | 未审批 | ¥25,000 ← 这行会被筛出 赵六 | 销售部 | 2025/3/15 | 已审批 | ¥6,200【FILTER公式输出的结果表】 自动生成独立表格,只显示 E列>10000 且 D列="未审批" 的行
多条件逻辑:
| | |
|---|
| (条件1) * (条件2) | |
| (条件1) + (条件2) | |
进阶用法——排序+筛选一步到位:
把筛出来的结果按金额从大到小排:
=SORT(FILTER(A:E, (E:E>10000) * (D:D="未审批")), 5, -1)
SORT 的第三个参数 -1 表示降序,5 表示按第5列(金额列)排序。
避坑提醒: FILTER 是动态数组函数,结果会"溢出"到相邻单元格。使用时确保下方和右侧有足够的空白区域,否则会报 #SPILL! 错误。
05|EDATE + EOMONTH + DATEDIF
日期加减+月末计算,账龄分析必备
财务工作中日期计算特别多:合同到期日、应收账款账龄、费用摊销截止日期……这三个函数组合起来,几乎覆盖所有日期场景。
① EDATE — 往前/往后推N个月
=EDATE(A2, 3) → A2日期往后3个月是哪天=EDATE(A2, -6) → A2日期往前6个月是哪天
② EOMONTH — 找到某月最后一天
=EOMONTH(A2, 0) → A2所在月的月末=EOMONTH(TODAY(), -1) → 上个月最后一天=EOMONTH(TODAY(), 0) → 本月最后一天
③ DATEDIF — 计算两个日期的间隔
这是一个"隐藏函数"(函数列表里搜不到,但能用):
=DATEDIF(开始日期, 结束日期, "Y") → 相差几年=DATEDIF(开始日期, 结束日期, "M") → 相差几月=DATEDIF(开始日期, 结束日期, "D") → 相差几天=DATEDIF(开始日期, 结束日期, "YM") → 相差几月(忽略年)=DATEDIF(开始日期, 结束日期, "MD") → 相差几天(忽略月和年)
场景还原(账龄分析):
应收账款台账里,B列是"销售日期",C列是"账期(月)",需要计算每笔应收的"到期日":
=EDATE(B2, C2)
然后再算"逾期天数"(今天距到期日过了多久):
=DATEDIF(E2, TODAY(), "D")
超过30天标黄提醒,超过90天标红预警——配合条件格式,账龄管理一目了然。
实战组合——自动判断账龄区间:
=IFS( TODAY()<=E2, "未到期", TODAY()-E2<=30, "0-30天", TODAY()-E2<=90, "31-90天", TODAY()-E2<=180, "91-180天", TRUE, "180天以上")
E2是到期日。这个公式自动把每笔应收归类到对应账龄段,配合数据透视表,一秒生成账龄分析报告。
避坑提醒: DATEDIF 的第一个参数必须是较小的日期,第二个是较大的日期。如果反了,会报 #NUM! 错误。
06|ROUND + TEXT
精确算账、数字格式化,报表不再乱七八糟
① ROUND — 控制小数位数,防止分毫之差
财务做汇率换算、税费计算时,差一位小数可能累计出大错:
=ROUND(A2, 2) → 四舍五入保留2位小数(最常用)=ROUNDUP(A2, 0) → 无论多少,全部向上取整(进位)=ROUNDDOWN(A2, 2) → 无论多少,全部向下取整(不舍)
为什么财务必须用 ROUND?
Excel 内部计算精度是15位小数。比如 =1/3 的结果是 0.333333333333333,如果你直接用这个值参与后续计算,累加100次后就会出现 33.33 和 33.333... 的差异。
正确做法:每一步计算都用 ROUND 锁定精度。
=ROUND(A2*汇率, 2)
不是最后结果再四舍五入,而是每一步中间计算都舍入,这样才能保证汇总数和明细数完全对上。
② TEXT — 把数字格式成想要的样子
=TEXT(A2, "¥#,##0.00") → ¥1,234.56=TEXT(A2, "0.00%") → 78.50%=TEXT(A2, "YYYY-MM-DD") → 2025-03-15=TEXT(A2, "YYYY年MM月DD日") → 2025年03月15日=TEXT(A2, "0.00") → 1234.56=TEXT(A2, "#,##0") → 1,235
场景还原:
做报销汇总表时,希望金额列显示成"¥1,234.56"的格式,而不是原始数字:
=TEXT(SUMIFS(...), "¥#,##0.00")
一个公式同时完成计算+格式化,输出报表时直接复制,不用再手动调格式。
TEXT 格式代码速查表:
| | |
|---|
¥#,##0.00 | | |
0.00% | | |
YYYY-MM-DD | | |
YYYY年M月 | | |
#,##0 | | |
0.00 | | |
07|IF + IFS
条件判断,让表格自己"做决策"
财务工作中充满判断逻辑:是否超预算、是否逾期、费用是否合理……IF系列函数让表格自动给出结论。
基础用法——IF:
=IF(B2>预算, "超支", "正常")=IF(C2="已付款", "✓", "待处理")
进阶用法——嵌套IF(多层判断):
=IF(B2>=90, "优秀", IF(B2>=75, "良好", IF(B2>=60, "及格", "不及格")))
嵌套IF虽然能用,但层数多了容易写错。Excel 2019+ 推荐用 IFS 替代。
推荐用法——IFS(多条件判断,清晰不嵌套):
=IFS( B2>=90, "优秀", B2>=75, "良好", B2>=60, "及格", TRUE, "不及格")
每一对都是"条件, 结果",从上往下判断,命中即返回。最后的 TRUE 相当于 else,兜底处理所有不满足前面条件的情况。
场景还原——费用报销审批:
=IFS( D2>50000, "需总监审批", D2>10000, "需经理审批", D2>2000, "需主管审批", TRUE, "可直接报销")
D2是报销金额。一个公式自动判断审批层级,不用再人工对照制度一条条查。
08|IFERROR
错误值终结者,报表干净美观
VLOOKUP查不到显示 #N/A,除法分母为零显示 #DIV/0!,日期格式错误显示 #VALUE!……这些错误值直接出现在报表里,既不专业又容易吓到领导。
IFERROR 一个公式解决所有错误:
=IFERROR(你的公式, 出错时显示什么)
常用场景:
| |
|---|
| =IFERROR(VLOOKUP(...), "无记录") |
| =IFERROR(A2/B2, 0) |
| =IFERROR((B2-A2)/A2, "—") |
| =IFERROR(INDEX(..., MATCH(...)), "未匹配") |
最佳实践: 所有可能出错的公式外面都包一层 IFERROR。不是掩盖错误,而是让报表更专业。真正的错误应该在数据源头解决,而不是让报表使用者看到一屏的 #N/A。
一张图总结:财务高频公式地图
查数据 汇总统计 日期计算 判断/格式/容错 XLOOKUP SUMIFS EDATE IF / IFS INDEX+ COUNTIFS EOMONTH IFERROR MATCH DATEDIF ROUND FILTER TEXT
坦白说,Excel公式没有"必须会"的压力,但会了和不会,工作效率上还是有蛮大的差异。
我的经验是:与其突击背公式,不如建立一个自己的"公式本"——遇到一个新需求就记一个,用多了自然就熟了。
以上这8个函数/组合,覆盖了我日常 80% 以上的公式场景,供你参考。
几个实用建议:
- 先学会思路,再记公式。 公式忘了可以查,思路错了全盘皆输。
- 每学一个函数,立刻在真实工作中用一次。 用过一次的记忆效果,抵得上背十遍。
- 建立自己的公式模板库。 把常用的公式存在一个Excel文件里,标注好用途,下次直接复制改参数。
- 遇到报错先看数据,再看公式。 80%的公式错误其实是数据格式问题(文本型数字、日期格式不一致等)。
💬 你有哪些实用小技能吗?我们一起学习探索下。