简介:Excel函数公式大全及举例整理版PDF文档,面向需要系统掌握Excel常用函数的办公人员、数据分析初学者及软件开发者。文档覆盖数学、逻辑、文本、判断四大类函数,包含SUM、SUMIF、COUNTIF、AVERAGE、ROUND、RANK、IF、IFERROR、LEFT、RIGHT、MID、CONCATENATE、FIND、EXACT、TEXT、VALUE等高频函数,并配有大量可直接套用的公式示例与参数说明,便于速查与实战练习。资源为单个PDF文件,压缩包整体大小仅1.33MB,轻量易下载,方便离线查阅。目前已有2852人学习使用,内容编排由基础概念到统计、查找与引用公式逐层展开,既有入门讲解也有进阶技巧,诸如条件求和、多条件判断、隔列求和、多表汇总、VLOOKUP查找等实用场景均有详细示例,适合日常办公提效或系统学习Excel函数体系。
1. 拿到这份“excel函数公式大全及举例[整理].pdf”,先别急着背公式
把《excel函数公式大全及举例[整理].pdf》下载到本地之后,最先要做的不是从前言开始啃函数列表,而是先想清楚:你真正缺的是一张能搜出答案的索引,还是一组落到单元格里马上能用的公式。很多自称看过“大全”的人,碰到报表还是只会 SUM 和 IF,原因不是记性差,而是没把函数按“查找引用、条件统计、文本处理”这几个族拆开理解。这篇文按这个思路展开,先从 SUMIFS 这类多条件求和讲起,再讲查找引用组合,然后把手头这张函数表整理成可打印、可检索、可回读的 PDF,最后处理 NOW() 这类每次打开都会让 PDF 结果变来变去的易失函数。
2. 函数公式大全里最该先吃透的是 SUMIFS:多条件筛选的求和参数怎么设
2.1 SUMIFS 函数的使用:条件区域与求和区域的配对规则
在许多“excel函数公式大全”类资料里,SUMIFS 几乎都被排在统计函数的前三页。多条件筛选这个场景,Excel 用户首选就是它。语法比 SUMIF 多了一个位置上的坑——求和区域放在第一参,而不是像 SUMIF 那样放在最后一参:
=SUMIFS(订单表!E:E, 订单表!A:A, "华东", 订单表!C:C, ">="&DATE(2024,1,1))这段公式的意思:对“订单表”工作表的 E 列金额求和,条件是 A 列等于“华东”,并且 C 列日期不早于 2024-01-01。注意几个参数细节:求和区域订单表!E:E放在最前面;条件区域和条件必须成对出现,顺序不能乱;第三个条件里>=必须放在引号内,再用&和日期函数拼接。如果直接把">=2024-01-01"写进去,Excel 会把它当作文本比较,结果几乎总是 0,因为文本排序和日期序列值排序不是一回事。
条件里的比较运算符、通配符也要分清。"华东"是精确匹配;"华东*"匹配以“华东”开头的所有文本;"*华东*"匹配包含“华东”的文本;想匹配星号本身,写成"~*"。引用单元格作为条件时不需要加引号,比如">="&G1,G1 放一个真正的日期。这个习惯比在公式里硬编码日期更容易维护。
下面是整理函数手册时最值得放进去的错误对照表,很多 PDF 版本的“大全”恰恰漏了这页。
| 常见错误写法 | 问题 | 正确写法 |
|---|---|---|
=SUMIFS(A2:A100, B2:B100, "华东") | 求和区域与条件区域写反 | =SUMIFS(B2:B100, A2:A100, "华东") |
=SUMIFS(E:E, A:A, 华东) | 文本条件漏引号,会被当作名称引用 | =SUMIFS(E:E, A:A, "华东") |
=SUMIFS(E:E, C:C, ">2024/1/1") | 日期以文本参与比较 | =SUMIFS(E:E, C:C, ">="&DATE(2024,1,1)) |
=SUMIFS(E:E, A:A, "*华东") | 想匹配“包含”但通配符位置不对 | 检查通配符位置,"*华东*"才表示包含 |
还有一类容易忽略的坑是区域不齐:求和区域写E:E,条件区域写A2:A100,两者行数不一致,SUMIFS 会直接返回#VALUE!;反过来两个区域都写整列,虽然能算,但每次重算都要扫描一百多万行。维护一份长寿命报表时,我一般明确写A2:A100这类有限区域,或者把 A:E 整体转成 Excel 表格(Ctrl+T),用结构化引用规避这个问题。
提示:整列引用看着省事,却会让 SUMIFS 每次重算都扫一遍整张工作表,几万行数据不觉得,几十万行时卡顿感会非常明显。
2.2 从 SUMIFS 到 SUMPRODUCT:多条件统计的另一条腿
SUMIFS 只能做“多条件求和”,计数要换 COUNTIFS,求平均值要换 AVERAGEIFS。当条件里出现“不等于、包含、多个并列”这类复杂逻辑时,这三个函数的条件表达式写起来会很别扭,这时候换 SUMPRODUCT 反而更直白:
=SUMPRODUCT((A2:A100="华东")*(C2:C100>=DATE(2024,1,1))*E2:E100)括号里的比较运算逐个算出布尔数组,TRUE在乘法里自动转成 1,FALSE转成 0。三个数组按位相乘后,只有全部条件为真的行才会留下 E 列的原值,最后求和。这个公式没有任何函数专用参数,所有逻辑都由运算符完成,条件可以任意扩展,比如再乘一个(D2:D100<>"作废")。
SUMPRODUCT 通常比 SUMIFS 慢,因为 SUMIFS 对等值条件会走哈希优化,而 SUMPRODUCT 是逐行扫描。另一个容易踩的坑是 E 列里不能有文本或错误值,否则乘出来是#VALUE!。如果数据源来自数据库导出,导入时先做一次清洗,把文本型数字转成真正的数字,再交给 SUMPRODUCT。用逗号分隔写法SUMPRODUCT((条件1)*(条件2), E2:E100)结果一样,只是把乘法拆成两个区域做内积。
2.3 条件统计前的数据准备:文本数字与空值
无论 SUMIFS 还是 SUMPRODUCT,最大的隐性错误都不是函数本身,而是数据没清洗。从 CSV 或数据库导出的表里,金额列经常是文本数字,单元格左上角带绿色小三角。SUMIFS 对文本型数字参与条件匹配时经常匹配不上,结果不是报错,而是静默少算几行,这类问题几乎不会写进 PDF 版函数大全,所以你要在自己的检查清单里补上。
清洗办法是在旁边建一个辅助列写=VALUE(A2),或者直接分列一次:选中列,数据→分列→完成,Excel 会把文本数字转成数字。空值参与比较时,E2:E100里的空单元格在 SUMIFS 下会被当作 0 或忽略,要看具体版本;SUMPRODUCT 里空单元格乘出来是 0,不影响求和但影响计数。统计前先用=COUNTBLANK(E2:E100)探一眼空行数量,比写完公式再去猜数据干净多了。
3. 查找引用类函数公式的搭配:VLOOKUP、INDEX 与 MATCH 的边界
3.1 VLOOKUP 的四参数与首列约束
查找引用是“excel函数公式大全”里篇幅最大的一块,其中 VLOOKUP 出场率最高。它一共四个参数:查找值、查找区域、返回列号、匹配方式。区域必须从包含查找值的那一列开始,返回列号是相对这个区域的第一列数出来的偏移,而不是工作表的真实列号。
=VLOOKUP(B2, 产品表!$A$2:$D$100, 4, FALSE)B2是当前表里的产品编号;产品表!$A$2:$D$100是被查区域,A 列是产品编号,D 列是价格;4表示返回区域第 4 列,也就是 D 列的价格;FALSE是精确匹配。区域要加绝对引用,否则向下填充时区域会跟着跑。匹配方式写0和FALSE等价,写TRUE或省略则进入近似匹配——近似匹配要求查找区域第一列严格升序排列,很多人在这里返回奇怪结果,就是因为默认了真值而数据没排序。
VLOOKUP 在函数大全里被反复举例,但边界非常明确:查找列必须位于区域最左侧,这是它最大的限制。一旦表结构调整,比如把产品编号从 A 列挪到 C 列,几乎所有 VLOOKUP 公式都要改。所以在长期维护的报表模板里,我一般直接推荐 INDEX + MATCH。
3.2 INDEX + MATCH:列位置变了也不怕
INDEX 返回某个区域内指定行、列交叉处的值;MATCH 返回某个值在一列或一行中的位置。两者拼起来就是“先找位置,再取值”:
=INDEX(成绩表!E:E, MATCH(B2, 成绩表!A:A, 0))MATCH(B2, 成绩表!A:A, 0)在 A 列里精确查找 B2,返回行号;INDEX(成绩表!E:E, 行号)取出该行的 E 列值。MATCH 的第三个参数 0 表示精确匹配,写 1 或 -1 分别对应升序或降序下的近似查找,日常报表里九成用法都是 0。这个组合的好处是查找列和返回列可以任意摆放,函数只关心它们各自所在的一整列,不需要拼一个连续区域。
做双向交叉查询时,INDEX + MATCH 的优势更明显。比如左侧是部门列表、上方是月份,想取“华东”加上“2024-03”的交叉点:
=INDEX($B$2:$E$10, MATCH($G$2, $A$2:$A$10, 0), MATCH($H$2, $B$1:$E$1, 0))$G$2放部门名,第一个 MATCH 在 A2:A10 找行位置;$H$2放月份,第二个 MATCH 在表头 B1:E1 找列位置;INDEX 按行、列两个偏移量取交叉点。这个写法比嵌套 VLOOKUP 直观得多,也是双条件查找的标准答案。要注意 MATCH 里的查找值与查找区域的类型必须一致,文本对比数字会直接返回#N/A。
3.3 XLOOKUP 与 IFERROR 收尾
新版 Excel 里的 XLOOKUP 正在逐步取代前两个函数:=XLOOKUP(B2, 产品表!A:A, 产品表!D:D, "未找到")。三个参数分别是查找值、查找数组、返回数组,第四个可选参数是找不到时的返回值。它没有首列约束,返回列直接写区域,性能也比 VLOOKUP 好。旧文件在别人电脑上打开时版本兼容仍是问题,所以我只把 XLOOKUP 写进自己的个人工作簿,给团队共享的模板里仍然用 INDEX + MATCH。
三套方案里,VLOOKUP 适合快速做一次性的小查找,INDEX + MATCH 适合模板化报表,XLOOKUP 适合新版 Office 365 环境。下面这张对照表放进你的函数手册 PDF 里,比单纯堆函数清单有用得多。
| 场景 | 推荐函数 | 理由 |
|---|---|---|
| 简单单列查找,区域固定 | VLOOKUP | 写法短,学习成本低 |
| 查找列不在首列 | INDEX + MATCH | 不受列位置限制 |
| 需要返回多列或找不到时给默认值 | XLOOKUP | 参数直白,支持默认值 |
| 查找值可能不存在,要求不显示 #N/A | IFERROR 包裹任意查找 | 统一兜底 |
IFERROR 是这些查找公式的收尾工具:=IFERROR(VLOOKUP(...), "未找到")。它会把#N/A、#VALUE!、#REF!全部拦下来,替换成你指定的文本。但它也会把公式本身真正的错误盖住,比如区域引用失效,排查时反而更难。我的习惯是只在最外层收口,先在内层单独求值确认无误,再用 IFERROR 包上去。
4. 把函数公式大全整理成 PDF:打印设置、表格转换与解析回读
4.1 从 Excel 打印为 PDF:打印区域与打印标题
手头这份《excel函数公式大全及举例[整理].pdf》,最常见的来源是自己整理完再打印成 PDF。直接 Ctrl+P 打印大宽表,一定会出现列被截断、下一页没有表头的情况。标准做法是先设置打印区域:页面布局→打印区域→设置打印区域,选中 A1 到最后一个有内容的列;再在“打印标题”里把顶端标题行设为第 1 行,这样 PDF 每一页都会重复表头。列宽超过一页宽时,把页面设置改成横向;“适合宽 1 页高 1 页”的缩放会牺牲字号,长表格我更推荐取消缩放,让列在横向页面里完整展开。
Excel 自带的“文件→导出→创建 PDF/XPS”会保留分页符,但不会自动生成书签目录。如果手册有几十个分类 Sheet,导出 PDF 后每个 Sheet 会成为左侧书签的一级节点,代价是 Sheet 名必须起得像章节名,比如01_sumifs、02_vlookup。PDF 里要跳转时,没有书签翻页会找到手酸,这也是很多“整理版”PDF 难用的原因。
4.2 LibreOffice 命令行把 xlsx 批量转 PDF
在 Linux 服务器或 CI 流程里把 xlsx 转 PDF,我一般用 LibreOffice 的 headless 模式,一条命令就能批量转换:
soffice --headless --convert-to pdf --outdir ./pdf_output 函数公式大全.xlsx--headless让 soffice 不弹图形界面;--convert-to pdf指定转换目标格式;--outdir指定输出目录。工作簿里有多个 Sheet 时,LibreOffice 会全部渲染进同一个 PDF,顺序按 Sheet 标签顺序走。工作表名包含中文时输出文件名保持原名不变,Linux 下一般没问题,但路径里尽量不要有空格,否则整个路径要加引号。转换前把数据区域里多余的几万行空行删掉,否则 PDF 里会出现大批空白页,这是命令行转换最常见的翻车点。
4.3 Markdown 表格转换 Excel 再导出
很多函数公式手册最初是 Markdown 格式的表格,比如自己维护的函数表.md。直接用 Excel 打开 md 文件会乱,常见做法是先用 Python 把它转成 xlsx,再走前面的打印链路。Markdown 表格本身是|分隔的纯文本,手工解析几行就够了:
import pandas as pd md_table = """| 函数 | 用途 | 示例 | | --- | --- | --- | | SUMIFS | 多条件求和 | =SUMIFS(E:E, A:A, "华东") | | INDEX | 按位置取值 | =INDEX(A1:B2, 2, 1) |""" rows = [] for line in md_table.strip().splitlines(): line = line.strip() if not line or set(line).issubset(set("|:- ")): continue cells = [c.strip() for c in line.strip("|").split("|")] rows.append(cells) df = pd.DataFrame(rows[1:], columns=rows[0]) df.to_excel("函数表.xlsx", index=False)逻辑说明:第一行是表头,第二行是分隔线,分隔线只由管道符、冒号、减号和空格组成,用集合判断直接跳过;每一行用strip("|")去掉首尾管道符再按|切分,得到单元格列表;rows[1:]是数据行,rows[0]是列名。这个脚本不依赖额外表格解析库,pandas 落盘 xlsx 时列的宽度不会自动调整,转换完要在 Excel 里全选列双击自适应,或者用 openpyxl 统一设置列宽,再进打印环节。
4.4 PDF 解析回读:pdftotext 与 pdfplumber
函数大全 PDF 的另一个常见需求是反向的:从别人给的 PDF 里把公式表抽回 Excel。结构化排版良好的表格,优先用 pdftotext 带-layout参数提取文本;表格比较规整时,用 pdfplumber 直接抽表:
pdftotext -layout 函数公式大全.pdf 函数公式大全.txtimport pdfplumber with pdfplumber.open("函数公式大全.pdf") as pdf: for page in pdf.pages: table = page.extract_table() if table: for row in table: print(" | ".join(c or "" for c in row))-layout会尽量保留原文的换行和空格,适合检查 PDF 是不是扫描件——如果输出是乱码或空文件,说明这份 PDF 是图片型,需要先走 OCR 才能解析。pdfplumber 的extract_table()依赖 PDF 自带的文本坐标信息,对用 Excel 打印生成的 PDF 识别率很高,对扫描件同样无能为力。解析结果里经常混进重复表头行和空白行,打印时先用set(row) == {None}把空行过滤掉,再进 DataFrame 写回 Excel。
| 生成链路 | 适用场景 | 关键坑 |
|---|---|---|
| Excel → 导出 PDF | 一次性、单机操作 | 书签依赖 Sheet 命名 |
| soffice 命令行转换 | 批量、CI 自动化 | 空行会变成空白页 |
| Markdown → Python → xlsx → PDF | 手册频繁更新 | 列宽不会自动适应 |
| pdfplumber 回读 | 从 PDF 还原表格 | 扫描件必须 OCR |
5. 让 NOW() 不再实时更新:函数公式手册里的时间定格技巧
5.1 为什么 =NOW() 每次打开都会变
“函数公式 now 怎么让他不更新实时时间”指向一个非常具体的场景:在整理成 PDF 的函数手册里放了一个=NOW(),每次打开文件、每次重算,时间都跳到当前时刻,导出 PDF 后日期老是变,手册看起来像没定版。NOW 和 TODAY、RAND、RANDBETWEEN、OFFSET 一样都属于易失函数,任何单元格发生重算都会重新求值。只要工作簿的计算模式是自动,打开文件那一刻就会触发一次全量重算,PDF 里印的时间自然永远是“当下”。
5.2 三种把 NOW() 固定成静态值的方法
第一种是手动把公式变成值。选中含=NOW()的单元格,复制,右键菜单选择“选择性粘贴→值”,或直接快捷键 Ctrl+Alt+V,再按 V 回车,公式被替换成定格的时间文本。这是最彻底的做法,单元格里不再有公式,PDF 导出几百次也不会变。
第二种是用 VBA 在打开或保存时写入当前时间,适合不希望手工操作的模板:
Sub 固定当前时间() Range("A1").Value = Format(Now, "yyyy-mm-dd hh:mm:ss") End SubFormat(Now, ...)把系统当前时间格式化成字符串,直接写入单元格值而不是公式,A1 存的是静态文本,关闭重算不会影响它。要自动触发,就把这段代码挂到 Workbook 的 BeforeSave 事件里,保存手册时自动刷新一次“最后修改时间”,平时开着文件不影响数据。
第三种是切换计算模式:公式→计算选项→手动。之后 NOW() 不会自动重算,只有按 F9 才会更新。这个方案保留了公式本身,但 F9 按多了其他易失函数也会跟着变,而且文件发给同事时对方工作簿可能是自动计算模式,打开瞬间立刻失效,所以只适合自己临时用。Mac 版 Excel 的计算选项入口同样在“公式”标签下,快捷键对应 Cmd+=。
5.3 验证 PDF 里时间已经定格的三步检查
导出 PDF 前先做三步验证:按 Ctrl+切换到显示公式模式,检查当初写 NOW 的单元格里显示的是=NOW()还是静态日期;再随便改一个无关单元格,看日期是否跳动;最后用 4.4 节的pdftotext -layout` 把 PDF 里的时间字段抽出来比对,确认与导出的基准时间一致。如果打印出来的 PDF 中时间仍旧变化,回到“公式→计算选项→手动重算”,再打开 VBA 编辑器(Alt+F11)检查 ThisWorkbook 里的 Workbook_Open 是否写了 Calculate 或 RefreshAll,删掉之后再重新导出 PDF。
本文还有配套的精品资源,点击获取