公式速查表与写前自查清单
全书速查表:按用途找函数
这本书从数学统计讲到财务信息,函数散落在四个方向。把用过的函数按用途重新排一遍,用的时候先在这里定位,再去对应篇章看细节。
| 用途 | 函数 | 最低版本 | 一句话说明 |
|---|---|---|---|
| 求和 | =SUM(B2:B10) |
全版本 | 基础求和 |
| 条件求和 | =SUMIF(B2:B10,">100",C2:C10) |
全版本 | 单条件求和 |
| 多条件求和 | =SUMIFS(C:C,A:A,"华东",B:B,">100") |
2007 起 | 多字段联合筛选求和 |
| 计数 | =COUNT(B2:B10) |
全版本 | 只数数字 |
| 非空计数 | =COUNTA(A2:A100) |
全版本 | 数所有非空格 |
| 条件计数 | =COUNTIFS(A:A,"华东",C:C,">0") |
2007 起 | 多条件计数 |
| 平均 | =AVERAGE(B2:B10) |
全版本 | 算术平均 |
| 条件平均 | =AVERAGEIF(A:A,"华东",C:C) |
2007 起 | 按条件求平均 |
| 中位数 | =MEDIAN(B2:B10) |
全版本 | 抗极值的中间值 |
| 最大最小 | =MAX(B2:B10) / =MIN(B2:B10) |
全版本 | 极值 |
| 第 N 大 | =LARGE(B2:B10,2) |
全版本 | 取第二名 |
| 排名 | =RANK(B2,$B$2:$B$10) |
全版本 | 名次 |
| 四舍五入 | =ROUND(B2,2) |
全版本 | 保留两位 |
| 向下取整 | =INT(B2) |
全版本 | 取整数部分 |
| 取余 | =MOD(B2,3) |
全版本 | 余数 |
| 条件判断 | =IF(A2>90,"优","良") |
全版本 | 单条件 |
| 多条件判断 | =IFS(A2>90,"优",A2>75,"良",TRUE,"中") |
2019 起 | 免嵌套 |
| 且或非 | =IF(AND(A2>60,B2>60),"过","否") |
全版本 | 布尔组合 |
| 查找 | =XLOOKUP(A2,C:C,D:D,"无") |
2021 起 | 默认精确匹配 |
| 兼容查找 | =INDEX(D:D,MATCH(A2,C:C,0)) |
全版本 | 向左查找也支持 |
| 容错 | =IFERROR(公式,"待核对") |
2007 起 | 拦住错误值 |
| 文本合并 | =TEXTJOIN("-",TRUE,A2:C2) |
2019 起 | 跳过空值合并 |
| 文本截取 | =MID(A2,2,3) |
全版本 | 从第 2 位取 3 个 |
| 文本清洗 | =TRIM(SUBSTITUTE(A2," ","")) |
全版本 | 去空格 |
| 定位字符 | =FIND("-",A2) |
全版本 | 找位置区分大小写 |
| 日期 | =TODAY() / =NOW() |
全版本 | 当前日期时间 |
| 日期推算 | =EDATE(A2,3) |
2007 起 | 加三个月 |
| 月末 | =EOMONTH(A2,0) |
2007 起 | 当月最后一天 |
| 间隔 | =DATEDIF(A2,B2,"Y") |
全版本 | 算年数 |
| 工作日 | =NETWORKDAYS(A2,B2) |
全版本 | 排除周末 |
| 多条件相乘 | =SUMPRODUCT((A:A="华东")*(B:B)) |
全版本 | 低版本多条件 |
| 贷款月供 | =PMT(0.05/12,360,-500000) |
全版本 | 等额本息 |
| 现值 | =PV(0.05,10,1000) |
全版本 | 现金流折现 |
| 内部收益率 | =IRR(B2:B10) |
全版本 | 项目收益率 |
| 类型判断 | =ISNUMBER(A2) |
全版本 | 是不是数字 |
| 空白判断 | =ISBLANK(A2) |
全版本 | 是不是真空 |
版本一栏标 2019 和 2021 的函数发文件前要确认对方环境,标全版本和 2007 的可以放心用。这张表不需要背,收藏起来随时查就行。
关于这张表还有一个使用建议:把自己工作中真正用到的十几条单独挑出来,抄在便签或者另存一份小抄,天天看的那十几个才是最该熟的。表里列了三十多条,不是要你全掌握,而是让你在遇到问题时知道有这么个东西存在,回头能找到。工具的价值在于被想起,不在于被记住。
按场景选函数

实际工作里的顺序往往是反的:先有具体问题,再找该用谁。下表把高频问题和函数直接对应,省掉中间的思考成本。
| 遇到的问题 | 首选 | 退路 |
|---|---|---|
| 统计某区域的金额 | SUMIFS | SUMPRODUCT |
| 按条件数记录条数 | COUNTIFS | SUMPRODUCT |
| 求平均但排除零值 | AVERAGEIF | SUM 除以 COUNTIF |
| 一列有错误值还要求和 | AGGREGATE | SUMIF 加 ISERROR |
| 名次相同想并列 | RANK 默认并列 | 加 COUNTIF 修正 |
| 判断落在哪个档位 | IFS 或 VLOOKUP 近似 | 嵌套 IF |
| 查不到时给提示 | IFERROR 包住查找 | IFNA |
| 查找值在返回列右边 | XLOOKUP | INDEX 加 MATCH |
| 拆开带分隔符的文本 | TEXTSPLIT | 分列或 MID 加 FIND |
| 算出工龄到月 | DATEDIF 用 YM | 手算 |
| 算两个日期有几个工作日 | NETWORKDAYS | 手数 |
| 算贷款月供 | PMT | 查表 |
| 找出文本型数字 | ISNUMBER 配合筛选 | 条件格式标色 |
写公式前的自查清单

公式写错,八成不是语法不熟,而是动手前漏了某一步检查。养成下面这个六步习惯,能省掉大量回头排查的时间。
第一步查数据类型。数字被存成文本,求和结果是零;编号被当成数字,长串会变科学计数法。动手前先在数据旁边写一条 =ISNUMBER(A2) 和 =ISTEXT(A2) 看看这列到底是哪种。这一步花十秒钟,能提前发现后面所有报错的根源。
第二步查空白和空格。看着空的单元格可能藏着一个空格,COUNTA 会把它算进去。用 =LEN(TRIM(A2)) 判断,结果是零才是真空。查不出问题的公式,往往问题就在这类看不见的字符上。
第三步查区域范围。写区域别图省事用整列,A:A 看着简洁,实际要扫过一百万行。写 $A$2:$A$5000 这样的实际范围,又快又稳,还能避免以后数据下面多出一行脏值被误算进去。
第四步查引用方式。要向下填充的公式,行号不能锁;要固定引用的参数表,行列都要加美元符号。填错引用是公式错位的最常见原因,填充前在头两行对比一下结果,确认位置对得上。
第五步查容错。任何可能查不到、可能为空的地方,外面套一层判断或者 IFERROR。这不是为了掩盖错误,而是为了让报错时表格看起来是有意设计过的,而不是一片狼藉。
第六步把结果和手工样本对一遍。挑三五行用计算器或肉眼算一下,跟公式结果比对。三行都对得上再往下填充,否则填充几千行之后发现问题,返工的成本高得多。
| 步骤 | 检查什么 | 怎么快速查 |
|---|---|---|
| 一 | 数据类型 | =ISNUMBER(A2) |
| 二 | 空白与空格 | =LEN(TRIM(A2)) |
| 三 | 区域范围 | 看公式里有没有整列 |
| 四 | 引用方式 | 填两行比对位置 |
| 五 | 容错处理 | 看有没有 IFERROR |
| 六 | 结果抽样 | 手工算三行对照 |
报错类型速查
公式报错时先看错误码,大部分能直接定位原因。
| 错误 | 含义 | 常见原因 |
|---|---|---|
#N/A |
找不到匹配 | 查找值不存在或类型不一致 |
#VALUE! |
值类型错 | 文本参与了算术运算 |
#REF! |
引用失效 | 引用的列或行被删除 |
#DIV/0! |
除零 | 分母为零或为空 |
#NAME? |
名字不认识 | 函数名拼错或版本不支持 |
#NULL! |
交集为空 | 两个不相交区域用空格连接 |
#SPILL! |
溢出受阻 | 动态数组结果被内容挡住 |
#CALC! |
计算无结果 | 数组公式返回空 |
排查顺序建议从 #NAME? 和 #REF! 这两个最基础的问题开始,它们是语法层面的错误,修正后其他错误往往会一起消失。剩下的类型错误和查找错误属于逻辑层面,需要结合具体数据判断。
让公式好维护的三个习惯
写完能跑只是及格,能交接、能改、半年后自己还看得懂才是及格线以上。三个习惯投入很小,回报很大。
习惯一是给关键区域起名字。把参数表、税率、基础数据这些会被反复引用的区域,在名称框里起个中文名,比如“税率表”“客户主数据”。公式里写 =VLOOKUP(A2,客户主数据,3,0) 而不是 =VLOOKUP(A2,Sheet3!$A$2:$D$5000,3,0)。好处是区域变了只改名称定义,所有公式自动跟随;更重要的是一眼能看出这个公式在拿什么数据。
习惯二是把参数集中放在一处。税率、考核线、预算上限这类会变的数字,不要散落在各个公式里硬写。集中放在表头或专用参数区,公式引用单元格。明年税率从百分之十三变成百分之十一,你只需要改一个格子,而不是全表搜索。
习惯三是给复杂公式加注释。Excel 没有行内注释,但可以用名称管理器给公式片段起名,或者干脆在旁边的空列写一句说明。更长久的做法是把公式里的中间步骤拆成辅助列,每一步占一列,逻辑一目了然。辅助列多一点不影响速度,反而让调试轻松得多。
一条公式的诞生过程
前面讲了表格和清单,这里用一个完整的例子把整条思路串一遍,看看一个公式从需求到落地要经过哪些步骤。
需求是这样的:有一张员工表,A 列工号,B 列姓名,C 列部门,D 列入职日期,E 列月薪。要做一张部门汇总,算出每个部门的平均月薪和平均司龄。听上去是两件事,拆开来做就清楚了。
先解决部门列表。部门会增减,不能手工列。用 =UNIQUE(C2:C500) 一条公式拿到当前所有部门,新增部门时自动出现。这一步就是前面讲过的动态数组思路,如果版本不支持,退回到用数据透视表取唯一值。
再算平均月薪。写法是 =IFERROR(AVERAGEIF($C$2:$C$500,G2,$E$2:$E$500),"暂无数据"),G2 是部门名。用 IFERROR 是为了防止某个部门没有记录时报除零错误。注意这里用的是 AVERAGEIF 而不是 AVERAGE 加 IF,前者一条公式解决,后者要配数组,可读性差。
接着算平均司龄。这个麻烦一点,要先算出每个人的司龄再平均。辅助列写 =DATEDIF(D2,TODAY(),"Y") 得到年数,填充整列。然后在汇总表里写 =IFERROR(AVERAGEIF($C$2:$C$500,G2,$F$2:$F$500),0),F 列就是刚算出来的司龄。辅助列看着多余,但它让后面的公式简单直白,比嵌套三层要值。
最后检查一遍。按自查清单的顺序:数字列确认是数值格式不是文本;日期列确认是真日期不是字符串;区域范围写的是实际范围不是整列;引用方式确认 G2 在填充时要跟着走所以不加美元符号,而区域要锁住所以加了。全部确认后向下填充,一张部门汇总表就成了,源数据一变结果自动更新。
这个例子里的每个函数都在前面讲过,把它们串起来之后你会发现,做表的核心不是函数多,而是思路清楚:先把问题拆成独立的小问题,每个小问题找最简单的函数解决,最后拼起来。函数是工具,拆分才是本事。
三个最常被问到的困惑
第一个困惑是函数名记得住但参数顺序总记错。这不是记忆力问题,是学习方式问题。参数顺序靠背没有意义,靠理解才牢。拿 SUMIFS 举例,它的顺序是求和区域在前、条件区域在后,这个顺序确实和直觉相反。但只要你理解成先说清楚要加什么,再说明在哪些条件下加,顺序自然就记住了。每学一个函数,先弄懂每个参数在业务上代表什么,比死记位置有效得多。
第二个困惑是网上的公式复制过来不能用。绝大多数情况是三个原因之一:单元格区域没改,还是原文的 A2:B10;分隔符号地区差异,中文版用逗号而部分版本用分号;函数在当前版本里不存在。前两个手动改一下就好,第三个需要换写法。复制公式时养成习惯,先看清它引用了哪些区域,把区域换成自己的,再检查函数是否可用,最后抽样验证结果。这三步做完再往下填充,能避开绝大多数问题。
第三个困惑是公式对了但结果是错的。这种情况最危险,因为不报错所以容易被忽略。常见原因有:区域范围多算了表头或合计行,导致平均值被拉低;文本型数字参与计算被当成零,导致求和偏小;日期格式不统一,DATEDIF 算出奇怪的结果。排查这类问题只能靠抽样,挑几行手工算一遍对照。养成每个新公式都手工验三行的习惯,是避免带错数据汇报的最后一道防线。
学完这本书之后
这本书覆盖了四类高频函数,但 Excel 的函数有四百多个,谁也学不完。学不完不要紧,重要的是建立起一套属于自己的查用方法:遇到问题先想这属于哪一类任务,再从速查表里找对应的函数,找到之后去具体篇章看语法和坑,最后用自查清单验证一遍。这个方法本身比记住任何一个函数都值钱。
下一步的提升方向有两个。一是往数据处理的深水区走,学 Power Query 做清洗合并,学数据透视表做交互分析,这两样能解决公式解决不了的大数据量问题。二是往自动化的方向走,学用名称管理器封装逻辑,学用 LET 和 LAMBDA 把重复计算收拢,让复杂的表变得可维护。两条路没有先后,看你手上的表更需要哪一种。
最后一个提醒:工具会更新,函数会增加,但做表的基本功是不变的——想清楚要算什么,先把数据结构理顺,再动手写公式。结构清楚,公式就简单;结构混乱,再多的函数也救不回来。这本书教的是函数,真正希望你带走的是这个顺序。
常见问题
这些函数里哪几个最该先学
如果只学五个,推荐 SUMIFS、COUNTIFS、IFERROR、INDEX 加 MATCH、TEXTJOIN。这五个覆盖了统计、容错、查找、文本四类最高频需求,且全部兼容老版本。学会这五个,日常八成的表格任务就不用现搜了。剩下的按需补,用到了再学印象更深。
速查表需要背下来吗
不需要,也不该背。函数太多,硬记容易混淆参数顺序。正确做法是记住“这件事该用哪一类函数”,具体语法查表。用多了自然会记下来,那才是真的记住,比死记硬背牢靠。真正的门槛从来不是记不住语法,而是不知道该用什么。
为什么我写的 SUMIFS 结果是零
按自查清单顺序查一遍。最常见原因有三个:条件区域的写法和数据不一致,比如条件是数字但数据是文本;区域范围大小不匹配,求和区域和条件区域行数不一样;条件里的比较符号写成全角,或者没加引号。用 =""&条件单元格 手动拼接条件字符串能解决大部分类型问题。
公式里的冒号和逗号地区差异
中文版 Excel 用逗号分隔参数,部分地区的版本用分号,公式从网上复制过来时可能报错。这不是函数本身的问题,是区域设置不同。解决办法是改系统区域设置,或者按报错位置手动把分号换成逗号。跨语言版本协作时这一点要留意,公式复制后最好在本地实测一遍。
老版本怎么实现这些技巧
正文里每处用到的老版本写法,在对应篇章都有替代方案。核心思路是:新函数大多能被基础函数组合替代,差别主要在写起来麻烦一点、自动化程度低一点。插件和新函数让工作更快,但基础的 SUM、IF、VLOOKUP 组合永远可用,任何时候都不会让你无路可走。
