简介:这份PDF文档是Excel函数公式的实用速查手册,面向需要提升日常数据处理效率的办公人员、初学者以及备考计算机等级考试的考生。内容按数学函数、逻辑函数、文本函数、判断公式、统计公式、求和公式、查找与引用公式分类,先从相关概念、运算符、单元格相对与绝对引用讲起,再给出SUM、SUMIF、COUNTIF、AVERAGE、ROUND、RANK、IF、IFERROR、LEFT/RIGHT/MID、VLOOKUP等常用函数的公式写法与示例,并涵盖隔列求和、多条件求和、多表相同位置求和、INDEX+MATCH双向查找、统计两表重复项和不重复人数等进阶场景。每个知识点都配有可直接套用的公式说明,方便对照实际表格操作,也可先理解参数含义再按需修改。压缩包内为单个PDF文件,大小仅1.33MB,目录分类清晰,便于下载后存到电脑或手机随时查阅。目前已有2852人浏览学习,适合想系统梳理Excel函数知识、遇到函数问题快速查表的办公人群。
1. 为什么这份 Excel 函数公式 PDF 不只是给文员看的
软件开发工作里,写代码处理数据只是其中一环。数据对账、导出报表、测试用例批量生成、给运营整理 CSV,这些活儿最后往往落在 Excel 上。手头这份《excel函数公式大全及举例[整理].pdf》并没有罗列几千个冷门函数,而是按数学、逻辑、文本、查找引用四类,把 SUMIF、VLOOKUP、INDEX+MATCH 这些高频公式的语法、参数和例子摆在一起。它的价值不在「全」,而在每一个公式都能直接在单元格里抄来用。适合两类人看:一是被 Excel 公式绕晕的初级开发者,二是想在没有 Python 环境时快速完成数据核对的工程师。把函数语法三件事——函数名、括号、逗号分隔的参数——和相对引用、绝对引用先立住,后面所有公式都不会走偏。
提示:文中代码块里单引号后面是解释文字,复制公式时不要带入单元格。
2. 数学函数与统计函数:从 SUM 到 SUMPRODUCT 的进阶路径
2.1 先搞懂运算符与引用,再谈 SUM
PDF 开头讲了三个概念:函数语法、运算符、单元格引用。很多人跳过这段直接看 SUM,结果公式一拖拽就串行。函数语法没什么神秘的,函数名(参数1, 参数2, ...),参数之间用英文逗号隔开。真正决定公式能不能复制的是引用方式。
| 写法 | 含义 | 向右复制时 | 向下复制时 |
|---|---|---|---|
| A1 | 相对引用 | 列变 B1 | 行变 A2 |
| $A1 | 锁定列 | 列不变 A1 | 行变 A2 |
| A$1 | 锁定行 | 列变 B1 | 行不变 A1 |
| $A$1 | 绝对引用 | 都不变 | 都不变 |
我一般写公式先不急着加$,等确认要拖动填充再按 F4 循环切换引用方式。$不是装饰,它锁的是「拖拽时哪个维度固定」。比如要汇总 19 个 sheet 的 B2,写成=SUM(Sheet1:Sheet19!B2),这个 B2 是相对引用,向右拖到 C2 就会变成 19 个 sheet 的 C2,正好是想要的;如果一开始写成$B$2,反而把列锁死,拖拽后还是 B2。
算术运算符里要特别注意^是乘幂,比较运算符<>是不等于,引用运算符冒号表示区域、逗号表示联合。条件里写文本和比较符时,引号、逗号必须用英文半角,否则公式直接报错。
2.2 条件统计四件套:SUMIF / COUNTIF / COUNT / AVERAGE
先把 PDF 里最常用的一组写出来:
=SUM(数值1, 数值2, ...) =SUMIF(查找的范围, 条件, 要求和的范围) =COUNTIF(范围, 条件) =AVERAGE(数值1, 数值2, ...)SUM(A1:A4)是连续区域求和,SUM(A1,B2)是离散单元格求和。SUMIF的三个参数顺序是「范围、条件、求和范围」,很多人写成「求和范围、条件、范围」,结果返回 0 但一点都不报错,这是最隐蔽的坑。条件字符串里带比较符时必须用双引号包起来:
=SUMIF(A1:A4,">=200",B1:B4) ' A列>=200 的行,对应 B 列求和 =SUMIF(A1:A4,"<300",C1:C4) ' A列<300 的行,对应 C 列求和第一个公式的意思:在 A1:A4 里找大于等于 200 的行,把对应 B1:B4 的数值加起来。条件也可以引用单元格,写成=SUMIF(A1:A4,">"&D1,B1:B4),条件值放在 D1,改条件不用动公式。
COUNT统计的是「数值型数字」的个数,不是所有非空单元格。要数文本、日期,得用COUNTA,这个 PDF 里没写,但实际项目里几乎必然遇到。COUNTIF(A1:A4,"<>200")统计不等于 200 的单元格数量,空单元格也会被数进去,除非额外加条件"<>"。AVERAGE自动忽略文本和空值,但不会忽略 0,这个语义差异在计算客单价时尤其要小心。
2.3 ROUND / RANK / INT / ABS / PRODUCT 的边界
=ROUND(数值, 保留的小数位数) =RANK(数值, 范围, 序别) =INT(数字) =ABS(数字) =PRODUCT(数值1, 数值2, ...)ROUND(A1,2)是真正把数值四舍五入成两位小数,和「设置单元格格式保留两位」有本质区别。格式只是显示,底层值还是多位小数,后续用 VLOOKUP 或 SUMIF 匹配时,格式化假象会让对账永远差一分钱。RANK的第三个参数1是升序,0是降序,PDF 里写反的人不少。注意RANK遇到并列名次会跳过下一名,比如两个第 1 之后直接是第 3,如果排行榜需要连续名次,要改用RANK.EQ配合辅助列,或者用SUMPRODUCT去重排名。
INT是向下取整,INT(-2.5)结果是 -3,想要向零取整要用TRUNC(-2.5)得到 -2。ABS和PRODUCT没什么花样,但PRODUCT和SUMPRODUCT完全不同——前者是纯乘积,后者是数组相乘再求和,下面的 2.4 会用到它。
2.4 统计重复与不重复:COUNTIF 配合 SUMPRODUCT
这个场景在真实数据清洗里出现频率非常高。要查两个表是否有重复项,PDF 给的公式是:
B2=COUNTIF(Sheet15!A:A,A2) ' 统计 A2 在另一个表 A 列出现几次意思是在 Sheet15 的 A 列统计 A2 出现的次数。返回值大于 0 说明当前表这个值在另一张表存在,等于 0 就是不存在。往下拉公式,再筛选 B 列大于 0 的行,就能快速把交叉重复的数据摘出来。
统计不重复总人数,用到一个很妙的思路:
C2=SUMPRODUCT(1/COUNTIF(A2:A8,A2:A8)) ' 不重复人数COUNTIF(A2:A8,A2:A8)会生成一个数组,某个名字出现 3 次,对应位置就是 3。用 1 除以次数,每个人被拆成几个 1/3,加起来正好是 1,整个区域求和就是不重复人数。可以理解成「每个名字只贡献一次权重」。
这个公式有两个边界要提前打补丁:区域里有空单元格时,COUNTIF会把空也统计进去,结果就偏了。所以我会先把源数据去空,或者改用=SUMPRODUCT((A2:A8<>"")/COUNTIF(A2:A8,A2:A8&"")),用&""把空值变成字符串,避免除零问题。
3. 逻辑与文本函数:IF 嵌套、IFERROR 兜底与字符串处理
3.1 IF 的本质与七层嵌套边界
IF的完整形态是=IF(条件, 执行条件真, 执行条件假)。关键在于「条件」是个布尔表达式,可以是比较、可以是另一个函数、也可以是单元格引用。PDF 里的例子:
=IF(A1>A2,1,0) ' 条件为真返回 1,否则 0 =IF(A1<A2,1,0) ' 条件为假返回 0 =IF(A1>A2,IF(A3>A4,8,9),1) ' 双层嵌套,内层结果作为外层返回值第三个公式是两层嵌套:A1>A2 为真,进入内层判断 A3>A4 是否成立,6>7 为假,所以返回 9。嵌套最多支持七层,我见过把七个条件叠成一台织布机的写法,可读性很差。Excel 2016 之后有IFS,可以直接写多个条件和对应结果,比如=IFS(A1>100,"高",A1>50,"中",TRUE,"低")。但旧文件要在 WPS 或老版本 Excel 里打开时,我会老老实实用 IF 嵌套,或者先用IF把多个条件压缩成布尔乘积,再用一层 IF 判断。
3.2 多条件判断:AND / OR 与 IFERROR 置空
业务上最常问的是「两个条件同时满足才返回某值」。PDF 给的姿势是:
=IF(AND(A2<500,B2="未到期"),"补款","") ' 两个条件同时成立AND表示所有条件为真才返回真,OR表示任一个为真就返回真。这两个函数的参数都可以是多个条件,比如AND(A2<500,B2="未到期",C2<>"")。注意条件里的文本要加英文双引号,日期要写成DATE(2025,1,1)或者引用单元格,直接写"2025-01-01"在有些区域设置下会变成文本比较,判断失效。
IFERROR是包装业务公式的神器:
C2=IFERROR(A2/B2,"") ' 计算错误时显示空,否则显示结果如果 A2/B2 计算出错(除数为 0 或空格),就显示空文本,否则显示结果。但这个东西要小心用:VLOOKUP 查不到返回#N/A,你用IFERROR包住后,会把「真查不到」和「数据源本身有错」一起吞掉。我在调试阶段从不放IFERROR,等所有分支验证通过,最后一层再包,这样不会拿错误值骗自己。
3.3 文本截取与拼接:LEFT / RIGHT / MID / CONCATENATE
文本函数在处理身份证、订单号、文件名时是刚需。先看签名:
=LEFT(文本, 截取长度) ' 从左边截取 =RIGHT(文本, 截取长度) ' 从右边截取 =MID(文本, 开始位, 截取长度) ' 从中间截取 =LEN(文本) ' 文本长度 =CONCATENATE(文本1, 文本2, ...) ' 合并文本从身份证号提取出生日期:=MID(A2,7,8),第 7 位开始取 8 位,得到 19900315,再配合TEXT可以转成1990-03-15:=TEXT(MID(A2,7,8),"0000-00-00")。注意MID的开始位从 1 开始,不是 0,这个按代码习惯写错的人很多。
CONCATENATE等价于&运算符,比如=A2&"-"&B2比写整个函数短。但CONCATENATE只能逐个传参,新版 Excel 有TEXTJOIN可以指定分隔符拼接区间,=TEXTJOIN("-",TRUE,A1:A10),这个在拼查询参数时特别好用。注意LEN统计的是字符数,中文按 1 个字符算,不是字节数。要做「区分中英文长度」的校验,得用LENB看字节数,这也是很多做姓名校验的人踩的坑。
3.4 数值与文本互转:TEXT / VALUE / EXACT
| 函数 | 作用 | 注意点 |
|---|---|---|
| TEXT | 数值转文本 | 返回文本不能参与运算 |
| VALUE | 文本转数值 | 遇到非数字报 #VALUE! |
| EXACT | 文本完全比较 | 区分大小写 |
=TEXT(A1,"0.00") ' 数字转文本,保留两位 =VALUE("123") ' 文本转数字 =EXACT("a","A") ' 返回 FALSE,区分大小写TEXT的第二个参数是格式码,"0.00"表示两位小数。它返回的是文本,不能再参与加减,只能用于展示或拼接。别写=TEXT(A1,"0.00")+1,你会得到#VALUE!。反过来,VALUE把文本型数字转成数值,从系统导出或外部粘贴时出现「绿色小三角」就是文本型数字,用VALUE或「分列」都能转。EXACT区分大小写,普通=不区分,做账号去重时要注意。
文本函数另一个高频组合是FIND定位第 N 个字符。PDF 里的例子:
=FIND("a", "abcadeafga", 2) ' 返回 4 =FIND("a", "abcadeafga", 3) ' 返回 7 =FIND("a", "abcadeafga", 4) ' 返回 10第三个参数表示从第几个字符开始找,返回的是找到的位置。找不到时返回#VALUE!。这个函数常配合MID做「截取两个分隔符之间的内容」。注意FIND区分大小写,不区分的话用SEARCH,而且SEARCH支持通配符,FIND不支持。
4. 查找引用与求和实战:VLOOKUP、INDEX+MATCH、LOOKUP 与多表汇总
4.1 VLOOKUP 单条件查找的四个参数
先看 PDF 的核心例子:
C11=VLOOKUP(B11,B3:F7,4,FALSE)四个参数分别是:查找值、查找区域、返回列序号、匹配方式。查找值 B11 是你要查的产品名;查找区域 B3:F7 是价目表,注意查找值必须位于区域的第一列,这是 VLOOKUP 最容易被骂的硬限制;返回列序号 4 表示从 B 列开始数第 4 列,也就是 E 列;FALSE是精确匹配,TRUE或省略是近似匹配。近似匹配要求第一列升序,而且行为很像二分查找,用得不对会返回看似合理的脏数据。
| VLOOKUP 参数 | 含义 | 建议 |
|---|---|---|
| 查找值 | 要匹配的内容 | 先 TRIM 去空格 |
| 查找区域 | 包含查找列的表 | 必须加 $ 绝对引用 |
| 列序号 | 从区域第一列数起 | 不是工作表的第几列 |
| 匹配方式 | FALSE 精确 | 默认 TRUE 是近似,慎用 |
我一般会把区域写成绝对引用$B$3:$F$7,否则公式往下拉时区域会跟着偏移,查几行后就查不到了。VLOOKUP 还有三个常见坑:一是查找值带空格,源表没空格,肉眼看不出来;二是区域第一列是文本型数字,查找值是数值型,类型不一致返回#N/A;三是返回列序号数错。遇到#N/A先别上IFERROR,用TRIM清理查找值,或者用VALUE/TEXT统一类型。
4.2 INDEX + MATCH 双向查找
双向查找的价值在于「根据行名和列名交叉取值」,取代手工点格子:
=INDEX(C3:H7,MATCH(B10,B3:B7,0),MATCH(C10,C2:H2,0))MATCH(B10,B3:B7,0)在 B3:B7 里找 B10 的位置,返回行号;MATCH(C10,C2:H2,0)在 C2:H2 里找 C10 的位置,返回列号;INDEX根据行号列号从 C3:H7 里取值。两个 MATCH 的范围一个是行标签列,一个是列标签行,不能写错。
MATCH第三个参数0表示精确匹配,1表示找小于等于查找值的最大值(要求升序),-1表示找大于等于查找值的最小值(要求降序)。实际场景里几乎只用0。相比 VLOOKUP,INDEX+MATCH 的查找值不需要是第一列,列顺序随便换都不会破坏公式,所以在字段经常增删的表单里优先用它。
4.3 LOOKUP 查找最后一条记录与多条件查找
PDF 提到「查找最后一条符合条件的记录」是 LOOKUP 的拿手戏,但没给具体公式。常见写法是:
=LOOKUP(1,0/(A2:A10="张三"),B2:B10) ' 返回张三最后一条 B 列值原理是:A2:A10="张三"得到一组 TRUE/FALSE,0/TRUE得到 0,0/FALSE得到#DIV/0!,而 LOOKUP 会忽略错误值。于是错误值数组里只剩符合条件的 0,LOOKUP 在这些 0 中找最后一个,返回对应的 B 列值,也就是最后一条匹配。多条件时把条件相乘:
=LOOKUP(1,0/((A2:A10="张三")*(B2:B10="华东")),C2:C10)两个条件数组相乘,TRUE*TRUE 才是 1,任何一个是 FALSE 就是 0,返回的是同时满足两个条件的最后一条 C 列值。这个写法比数组公式安全,不用按 Ctrl+Shift+Enter。注意 LOOKUP 的查找值写 1,它是二分查找,理论上要求第二参数升序,但因为错误值被忽略,这个固定套路被广泛验证过。边界是数据量特别大时性能一般,超过几万行我会改用 VBA 或 Python 处理。
4.4 多表求和与隔列求和
PDF 里的三维引用例子很实用:
B2=SUM(Sheet1:Sheet19!B2) ' 对 1 到 19 号表同名单元格求和语法是第一个表名:最后一个表名!单元格。它会统计 Sheet1 到 Sheet19 之间所有工作表(包括插入的中间表)的 B2。中间删掉一个表,区域会自动收缩;新插入的只要在范围内也会自动包含。这个特性很适合做「每月一张 sheet、全年汇总」的台账。注意表名带空格时要写成='1月':这样加单引号。
隔列求和在财务表很常见。PDF 给了两个思路:
=SUMIF($A$2:$G$2,H$2,A3:G3) ' 按标题行条件隔列求和 =SUMPRODUCT((MOD(COLUMN(B3:G3),2)=0)*B3:G3) ' 按列号奇偶隔列求和第一个公式的前提是标题行有规律,比如每隔一列是「预算」、隔一列是「实际」。SUMIF用$A$2:$G$2标题行做条件判断,H$2 是条件,对 A3:G3 对应符合条件的位置求和。这里条件区域和求和区域的行号要严格对齐。第二个公式不依赖标题,COLUMN(B3:G3)返回列号数组,MOD(...,2)=0只取偶数列。SUMPRODUCT的巧劲在于用*把布尔值和数值相乘,TRUE 自动转 1,FALSE 转 0。布尔数组和数值数组必须同尺寸,否则返回#VALUE!。
4.5 按日期和产品求和:SUMIFS 的现代写法
PDF 里只提了「按日期和产品求和」没有展开。这个场景的真正主力是SUMIFS,它和SUMIF参数方向相反——先写求和区域,再写条件区域和条件:
=SUMIFS(求和区域, 条件区域1, 条件1, 条件区域2, 条件2)一个按产品名和日期范围统计销售额的例子:
=SUMIFS(C2:C100,B2:B100,"产品A",A2:A100,">=2025-01-01")意思是:对 C2:C100 求和,要求 B 列等于「产品A」且 A 列日期大于等于 2025-01-01。SUMIFS的条件可以用通配符*和?,比如"*华东*"表示包含华东。注意日期条件要么写成带比较符的文本,要么引用单元格里的日期。VLOOKUP 里FALSE表示精确匹配,SUMIFS 的条件默认就是精确匹配,不需要额外声明。
5. 把这份公式 PDF 变成你自己的 Excel 速查表
5.1 用边界输入验证每个公式
PDF 里的例子只覆盖正常值。真要在项目里用,我一般会建一个testsheet,输入 0、负数、空字符串、文本型数字、带前后空格的产品名,逐一把公式跑一遍。验证工具建议用「公式求值」:选中公式单元格,点「公式」选项卡里的「公式求值」,每一步都能看到嵌套函数的计算过程,比F9看一段表达式更直观。按Ctrl+`` 能切换显示公式,检查引用区域有没有拖拽串位,mac 版对应Ctrl+~`。
如果公式计算量大导致 Excel 无法复制粘贴或卡住不动,先把「计算选项」切到手动,操作完再按 F9 重算。要发给别人的表格,公式区域最好复制后「选择性粘贴」选「值」,避免对方打开时重算整个工作簿。
5.2 错误值对照表加进速查表
| 错误值 | 含义 | 常见场景 |
|---|---|---|
#DIV/0! | 除数为 0 | A/B 中 B 为空或 0 |
#N/A | 查找不到 | VLOOKUP 精确匹配找不到 |
#VALUE! | 数据类型不对 | 文本参与乘法、VALUE 遇到非数字 |
#NAME? | 函数名拼错 | 引号或逗号用了中文符号 |
#REF! | 引用无效 | 删除了公式引用的行列 |
#NUM! | 数值超出范围 | RANK 排序参数写成文本 |
遇到#N/A,先比较查找值和区域第一列的类型,用VALUE或TEXT统一;遇到#VALUE!,多半是文本型数字,选中列做一次「分列」转数值。调试期不要把整个公式包进IFERROR,否则所有错误都会变空字符串,定位反而更慢。
5.3 维护成可检索的参数卡
我会把这份 PDF 转成自己的 Markdown 速查表,每个函数一行签名、一行边界条件。VLOOKUP 记「查找值必须位于区域首列,区域加 $ 锁定,FALSE 精确匹配」;SUMIF 记「参数顺序是范围、条件、求和范围,条件文本加引号」。每个组合公式配一条真实业务样例,比如=INDEX+MATCH配「按订单号查物流状态」,下次遇到直接复制改区域。打印出来贴工位也行,打印前注意把显示公式关掉,否则输出全是公式文本。公式本身不难,难的是记住边界;遇到新需求先在速查表里搜同款签名,再复制样例改区域,通常五分钟内能出结果。
本文还有配套的精品资源,点击获取