本手册适用于 Excel 2016 / 2019 / 2021 / Microsoft 365 / WPS 表格,新函数会标注版本要求
🧠 逻辑判断类
IF
根据条件返回不同结果,最常用的逻辑判断函数
=IF(条件, 值为真时的结果, 值为假时的结果)
参数说明:
- 条件:需要判断的逻辑表达式
- 值为真时的结果:条件成立时返回的值
- 值为假时的结果:条件不成立时返回的值
案例:
=IF(B2>=60, "及格", "不及格")
判断B2单元格成绩是否≥60,是则显示"及格",否则显示"不及格"
IFS Excel 2019+
替代多层嵌套IF,多条件判断更清晰易读
=IFS(条件1, 结果1, 条件2, 结果2, ..., TRUE, 默认值)
参数说明:
- 条件1/条件2:按顺序判断的逻辑条件
- 结果1/结果2:对应条件成立时返回的结果
- TRUE:可选,所有条件都不成立时返回默认值
案例:
=IFS(B2>=90, "A", B2>=80, "B", B2>=70, "C", B2>=60, "D", TRUE, "F")
按分数划分等级,90+为A,80+为B,以此类推
AND
所有参数都为真时返回TRUE,否则返回FALSE,用于多条件同时成立的判断
=AND(条件1, 条件2, ...)
案例:
=IF(AND(C2>10000, D2="A"), "重点客户", "")
筛选销售额>10000且客户等级为A的重点客户
OR
任意一个参数为真时返回TRUE,所有参数都为假时返回FALSE
=OR(条件1, 条件2, ...)
案例:
=IF(OR(B2="总监", B2="经理"), "管理人员", "普通员工")
判断职位是总监或经理的为管理人员
NOT
对条件结果取反,条件为真返回FALSE,条件为假返回TRUE
=NOT(条件)
案例:
=IF(NOT(ISBLANK(A2)), "已填写", "未填写")
判断A2单元格不为空时显示"已填写"
XOR Excel 2013+
奇数个条件为真时返回TRUE,偶数个或0个为真时返回FALSE
案例:
=IF(XOR(B2>90, C2>90), "偏科", "均衡")
语文和数学只有一科超过90分时判定为偏科
SWITCH Excel 2019+
根据表达式的值匹配对应结果,比IFS更适合固定值匹配场景
案例:
=SWITCH(B2, 1, "一级", 2, "二级", 3, "三级", "未知")
根据等级数值返回对应的等级名称
IFNA Excel 2013+
只捕获#N/A错误,其他错误(如#DIV/0!)仍然显示,比IFERROR更精准
案例:
=IFNA(VLOOKUP(A2, 表1, 2, 0), "无此数据")
只有查找不到时显示"无此数据",公式本身错误仍然正常提示
🔍 查找引用类
VLOOKUP
最常用的垂直查找函数,在表格第一列查找值,返回同行指定列的数据
=VLOOKUP(查找值, 查找区域, 返回列号, 匹配模式)
参数说明:
- 查找值:要查找的内容,必须在查找区域的第一列
- 查找区域:要查找的数据范围
- 返回列号:要返回的数据在查找区域的第几列
- 匹配模式:FALSE=精确匹配,TRUE=近似匹配
案例:
=VLOOKUP(A2, 员工表!$A$2:$C$100, 2, FALSE)
通过员工ID查找对应的员工姓名
XLOOKUP Excel 365+
VLOOKUP的升级替代版,支持任意方向查找、反向查找、无需排序,功能更强大
=XLOOKUP(查找值, 查找范围, 返回范围, 未找到提示, 匹配模式)
案例:
=XLOOKUP(A2, 员工表!A:A, 员工表!B:B, "未找到", 0)
通过员工ID查找姓名,找不到时显示"未找到"
INDEX+MATCH
最灵活的查找组合,支持任意方向查找,不受查找列位置限制
=INDEX(返回范围, MATCH(查找值, 查找范围, 0))
案例:
=INDEX(C:C, MATCH(A2, B:B, 0))
在B列查找A2的值,返回对应行C列的数据(支持反向查找)
HLOOKUP
垂直查找VLOOKUP的横向版本,在第一行查找值,返回同列指定行的数据
案例:
=HLOOKUP("销售额", 1:100, 5, FALSE)
在第一行查找"销售额"列,返回第5行对应的数据
MATCH
查找值在区域中的相对位置(行号或列号),经常和INDEX搭配使用
参数说明:
- 匹配模式:0=精确匹配,1=升序查找,-1=降序查找
INDEX
返回区域中指定行和列交叉处的单元格值
案例:
=INDEX(A:C, 5, 2)
返回A到C区域中第5行第2列(B5)的值
OFFSET
以指定单元格为基准,偏移指定行列后返回新的引用区域,用于动态范围
案例:
=SUM(OFFSET(A1, 0, 0, COUNTA(A:A), 1))
动态求和A列所有非空单元格,新增数据自动包含
INDIRECT
将文本形式的单元格地址转换为实际的单元格引用,常用于跨表引用
案例:
=INDIRECT(A2&"!B:B")
A2是工作表名称,返回对应工作表的B列引用
ROW / COLUMN
ROW返回单元格行号,COLUMN返回单元格列号,常用于生成序列
案例:
=ROW(A1) 输入到第一行,下拉自动生成1、2、3...序号
FILTER Excel 365+
根据条件筛选区域中的数据,自动溢出返回符合条件的所有结果
案例:
=FILTER(A:C, C:C>10000, "无符合条件数据")
筛选出C列销售额大于10000的所有行数据
UNIQUE Excel 365+
提取区域中的不重复值,自动去重,一键生成不重复列表
案例:
=UNIQUE(B:B)
提取B列所有不重复的产品名称
SORT Excel 365+
对区域按指定列进行排序,1=升序,-1=降序,自动返回排序后的结果
案例:
=SORT(A:C, 3, -1)
将A到C区域按第3列(销售额)降序排序
📝 文本处理类
LEFT / RIGHT / MID
从文本的左侧、右侧或中间指定位置截取指定长度的字符
=LEFT(文本, 截取长度)=RIGHT(文本, 截取长度)=MID(文本, 开始位置, 截取长度)
案例:
=LEFT(A2, 3) 提取A2单元格前3位字符
=MID(A2, 7, 8) 从身份证第7位开始提取8位出生日期
CONCAT / TEXTJOIN
将多个文本字符串合并为一个,TEXTJOIN支持指定分隔符
案例:
=TEXTJOIN("-", TRUE, A2:C2)
将A2、B2、C2单元格内容用"-"连接,忽略空单元格
LEN / LENB
LEN按字符数计算长度,LENB按字节数计算(中文占2字节,英文数字占1字节)
案例:
=LEN(A2) 计算A2单元格文本的字符长度
FIND / SEARCH
查找指定文本在原文本中的起始位置,FIND区分大小写,SEARCH不区分
案例:
=FIND("@", A2) 查找邮箱地址中@符号的位置,用于提取邮箱前缀后缀
SUBSTITUTE
替换文本中指定的内容,支持替换所有或指定第几个匹配项
案例:
=SUBSTITUTE(A2, " ", "") 批量删除A2单元格中的所有空格
REPLACE
从指定位置开始替换指定长度的文本,适合按位置替换的场景
案例:
=REPLACE(A2, 4, 4, "****") 手机号中间4位替换为星号,实现脱敏
TRIM
去除文本首尾的空格,以及文本中间多余的空格(只保留一个空格)
案例:
=TRIM(A2) 清理A2单元格中复制粘贴带来的多余空格
TEXT
将数值、日期按指定格式转换为文本格式,非常灵活强大
案例:
=TEXT(TODAY(), "yyyy年mm月dd日") 将当前日期格式化为"2024年05月20日"格式
VALUE
将文本格式的数字转换为数值格式,解决看起来是数字但无法计算的问题
案例:
=VALUE(A2) 将A2中文本格式的销售额转换为数值,即可正常求和计算
🔢 数值统计类
SUM / SUMIF / SUMIFS
求和函数,SUMIF单条件求和,SUMIFS多条件求和
案例:
=SUM(C2:C100) 求和C列所有销售额
=SUMIF(B:B, "产品A", C:C) 只统计产品A的销售额
COUNT / COUNTIF / COUNTIFS
计数函数,统计符合条件的单元格数量
案例:
=COUNTIF(C:C, ">10000")
统计销售额大于10000的记录数量
MAX / MIN
MAX返回区域中的最大值,MIN返回区域中的最小值
案例:
=MAX(C:C) 返回销售列中的最高销售额
AVERAGE / AVERAGEIF / AVERAGEIFS
计算平均值,AVERAGEIF单条件平均,AVERAGEIFS多条件平均
案例:
=AVERAGEIF(B:B, "产品A", C:C) 计算产品A的平均销售额
SUMPRODUCT
将对应区域的元素相乘后求和,非常强大的多条件统计函数
案例:
=SUMPRODUCT((B:B="产品A")*(C:C>10000)*C:C) 统计产品A中销售额大于1万的总销售额
SUBTOTAL
多功能汇总函数,支持求和、计数、平均等,会自动忽略筛选隐藏的行
常用功能代码:
- 1=平均,2=计数,3=非空计数,4=最大值,5=最小值,9=求和
- 加100前缀(如109)忽略手动隐藏行
案例:
=SUBTOTAL(109, C:C) 对C列求和,自动忽略筛选和隐藏的行
ROUND / ROUNDUP / ROUNDDOWN
ROUND标准四舍五入,ROUNDUP向上取整,ROUNDDOWN向下取整
案例:
=ROUND(C2, 2) 将C2的销售额保留2位小数
INT / MOD
INT向下取整,MOD返回两数相除的余数
案例:
=MOD(ROW(), 2) 返回1和0交替,用于隔行变色的条件格式
LARGE / SMALL
LARGE返回区域中第N大的值,SMALL返回第N小的值
案例:
=LARGE(C:C, 3) 返回销售额排名第3的数值
RANK
返回数值在区域中的排名,排序方式0=降序(默认),1=升序
案例:
=RANK(C2, C:C) 返回C2的销售额在整个C列中的排名
💰 财务函数类
PMT
计算贷款的每期还款额,非常实用的财务函数
案例:
=PMT(4.9%/12, 30*12, 1000000) 计算100万贷款,年利率4.9%,30年等额本息的月供
PV
计算投资的现值,即未来一系列付款现在的价值
案例:
=PV(3%, 10, -10000) 计算每年末存1万,年利率3%,存10年相当于现在一次性存多少钱
FV
计算投资的未来值,即定期定额投资到期后的总金额
案例:
=FV(3%, 10, -10000) 每年存1万,年利率3%,存10年后的总金额
IRR
计算一系列现金流的内部收益率,用于判断投资项目是否划算
📅 日期时间类
TODAY / NOW
TODAY返回当前日期,NOW返回当前日期+时间,会自动更新
案例:
=DATEDIF(B2, TODAY(), "y")
根据B2的出生日期计算年龄
DATEDIF 隐藏函数
计算两个日期之间的间隔(年、月、日)
=DATEDIF(开始日期, 结束日期, "单位")单位:"y"=年,"m"=月,"d"=日,"md"=同月天数差,"ym"=同年月份差,"yd"=同年天数差
YEAR / MONTH / DAY
分别提取日期中的年、月、日数值
案例:
=YEAR(TODAY()) 返回当前年份
WEEKDAY / WEEKNUM
WEEKDAY返回日期是星期几,WEEKNUM返回日期是一年中的第几周
案例:
=WEEKDAY(A2, 2) 返回1=周一,2=周二...7=周日,符合国内习惯
EOMONTH / EDATE
EDATE返回日期偏移N个月后的日期,EOMONTH返回偏移N个月后的月末日期
案例:
=EOMONTH(TODAY(), 0) 返回当月最后一天的日期
WORKDAY / NETWORKDAYS
计算工作日,自动排除周末和法定节假日,非常适合HR和行政使用
案例:
=NETWORKDAYS(A2, B2, 节假日!A:A) 计算两个日期之间的工作日天数,排除自定义节假日
⚠️ 错误处理类
IFERROR
捕获公式错误,返回自定义内容,避免显示#N/A、#DIV/0!等错误值
案例:
=IFERROR(VLOOKUP(A2, 表1, 2, 0), "无数据")
VLOOKUP找不到内容时显示"无数据"而不是#N/A
IS系列判断函数
一系列用于判断单元格类型的函数,返回TRUE或FALSE,经常和IF搭配使用
常用IS函数:
- ISERROR:判断是否为任意错误
- ISNA:判断是否为#N/A错误
- ISBLANK:判断是否为空单元格
- ISTEXT:判断是否为文本
- ISNUMBER:判断是否为数值
- ISEVEN/ISODD:判断是否为偶数/奇数
案例:
=IF(ISBLANK(A2), "请填写", "已填写") 判断A2为空时提示"请填写"
🚀 进阶实用技巧
-
1.
动态下拉菜单+自动填充
结合数据验证+XLOOKUP,选中客户名自动带出电话、地址等信息
-
2.
去除重复项统计
=UNIQUE(A2:A100)提取不重复值,搭配=COUNTIF(A:A, D2)统计出现次数 -
3.
销售排行榜
=LARGE(C2:C100, 1)取第1名销售额,搭配INDEX+MATCH返回对应销售员姓名
❓ 常见问题
Q: VLOOKUP查找不到值,显示#N/A怎么办?
A: 1. 检查查找值和查找列格式是否一致(文本/数值);2. 查找值是否在查找区域第一列;3. 匹配模式是否用了FALSE(精确匹配);4. 外层套IFERROR返回友好提示。
Q: 日期显示为一串数字怎么办?
A: Excel中日期本质是数值,将单元格格式改为日期格式即可正常显示。
Q: 公式输入后不计算,只显示公式文本怎么办?
A: 检查单元格格式是否为文本,改为常规格式,再双击单元格回车即可。