mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
12378 字
33 分钟
Excel函数完全指南:从基础到高级

Excel函数完全指南:从基础到高级#

欢迎来到Excel函数完全指南!Excel函数是Excel中最强大的功能之一,它们可以帮助你执行各种计算、分析数据、处理文本等操作。本教程将详细介绍Excel中的各种函数,从基础到高级,每个函数都配有详细的使用示例,帮助你全面掌握Excel函数的使用技巧。

1. Excel函数基础#

1.1 函数的基本语法#

Excel函数的基本语法如下:

=函数名(参数1, 参数2, ...)
  • 函数名:函数的名称,如SUM、AVERAGE等
  • 参数:函数的输入值,可以是常量、单元格引用、表达式等
  • 参数分隔符:不同参数之间用逗号分隔
  • 括号:函数名后面必须跟括号,参数放在括号内

1.2 函数的分类#

Excel函数可以分为以下几大类:

  • 数学与三角函数:用于执行数学计算
  • 统计函数:用于分析数据
  • 逻辑函数:用于执行逻辑运算
  • 查找和引用函数:用于查找数据或引用单元格
  • 文本函数:用于处理文本
  • 日期和时间函数:用于处理日期和时间
  • 财务函数:用于财务计算
  • 信息函数:用于获取单元格信息
  • 工程函数:用于工程计算
  • 数据库函数:用于数据库操作
  • 兼容性函数:用于兼容旧版本Excel

1.3 输入函数的方法#

手动输入:

  1. 选择要输入函数的单元格
  2. 输入等号(=)
  3. 输入函数名
  4. 输入左括号(
  5. 输入参数
  6. 输入右括号)
  7. 按Enter键确认

使用函数向导:

  1. 选择要输入函数的单元格
  2. 点击”公式”选项卡
  3. 点击”插入函数”
  4. 在”插入函数”对话框中选择函数类别
  5. 选择函数
  6. 点击”确定”
  7. 在”函数参数”对话框中输入参数
  8. 点击”确定”

使用函数库:

  1. 选择要输入函数的单元格
  2. 点击”公式”选项卡
  3. 在”函数库”组中选择函数类别
  4. 选择函数
  5. 在”函数参数”对话框中输入参数
  6. 点击”确定”

1.4 函数的嵌套#

Excel函数可以嵌套使用,即一个函数作为另一个函数的参数。例如:

=IF(SUM(A1:A10)>100, "超过", "未超过")

在这个例子中,SUM函数作为IF函数的第一个参数。

2. 数学与三角函数#

数学与三角函数用于执行各种数学计算,如加法、减法、乘法、除法、平方根、三角函数等。

2.1 基本数学函数#

2.1.1 SUM函数#

功能:求和

语法:=SUM(number1, [number2], ...)

参数:

  • number1:必需,要相加的第一个数值
  • number2:可选,要相加的其他数值,最多可添加255个参数

示例:

=SUM(A1:A10) // 求和A1到A10的数值
=SUM(1, 2, 3) // 求和1、2、3,结果为6
=SUM(A1:A5, B1:B5) // 求和A1到A5和B1到B5的数值

2.1.2 SUMIF函数#

功能:根据指定条件求和

语法:=SUMIF(range, criteria, [sum_range])

参数:

  • range:必需,要根据条件进行评估的单元格区域
  • criteria:必需,条件,形式可以是数字、表达式、单元格引用或文本
  • sum_range:可选,要求和的实际单元格区域

示例:

=SUMIF(A1:A10, ">60") // 求和A1到A10中大于60的数值
=SUMIF(A1:A10, "苹果", B1:B10) // 求和A1到A10中值为"苹果"的对应B列数值
=SUMIF(A1:A10, ">"&C1, B1:B10) // 求和A1到A10中大于C1值的对应B列数值

2.1.3 SUMIFS函数#

功能:根据多个指定条件求和

语法:=SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)

参数:

  • sum_range:必需,要求和的实际单元格区域
  • criteria_range1:必需,第一个要根据条件进行评估的单元格区域
  • criteria1:必需,第一个条件
  • criteria_range2, criteria2:可选,其他条件区域和条件,最多可添加127个条件

示例:

=SUMIFS(C1:C10, A1:A10, ">60", B1:B10, "<90") // 求和A1到A10中大于60且B1到B10中小于90的对应C列数值
=SUMIFS(D1:D10, A1:A10, "苹果", B1:B10, ">10", C1:C10, "红色") // 求和A1到A10中值为"苹果"、B1到B10中大于10且C1到C10中值为"红色"的对应D列数值

2.1.4 AVERAGE函数#

功能:计算平均值

语法:=AVERAGE(number1, [number2], ...)

参数:

  • number1:必需,要计算平均值的第一个数值
  • number2:可选,要计算平均值的其他数值,最多可添加255个参数

示例:

=AVERAGE(A1:A10) // 计算A1到A10的平均值
=AVERAGE(1, 2, 3, 4, 5) // 计算1、2、3、4、5的平均值,结果为3
=AVERAGE(A1:A5, B1:B5) // 计算A1到A5和B1到B5的平均值

2.1.5 AVERAGEIF函数#

功能:根据指定条件计算平均值

语法:=AVERAGEIF(range, criteria, [average_range])

参数:

  • range:必需,要根据条件进行评估的单元格区域
  • criteria:必需,条件
  • average_range:可选,要计算平均值的实际单元格区域

示例:

=AVERAGEIF(A1:A10, ">60") // 计算A1到A10中大于60的数值的平均值
=AVERAGEIF(A1:A10, "苹果", B1:B10) // 计算A1到A10中值为"苹果"的对应B列数值的平均值

2.1.6 AVERAGEIFS函数#

功能:根据多个指定条件计算平均值

语法:=AVERAGEIFS(average_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)

参数:

  • average_range:必需,要计算平均值的实际单元格区域
  • criteria_range1:必需,第一个要根据条件进行评估的单元格区域
  • criteria1:必需,第一个条件
  • criteria_range2, criteria2:可选,其他条件区域和条件

示例:

=AVERAGEIFS(C1:C10, A1:A10, ">60", B1:B10, "<90") // 计算A1到A10中大于60且B1到B10中小于90的对应C列数值的平均值

2.1.7 MAX函数#

功能:求最大值

语法:=MAX(number1, [number2], ...)

参数:

  • number1:必需,要比较的第一个数值
  • number2:可选,要比较的其他数值

示例:

=MAX(A1:A10) // 求A1到A10的最大值
=MAX(1, 2, 3, 4, 5) // 求1、2、3、4、5的最大值,结果为5

2.1.8 MIN函数#

功能:求最小值

语法:=MIN(number1, [number2], ...)

参数:

  • number1:必需,要比较的第一个数值
  • number2:可选,要比较的其他数值

示例:

=MIN(A1:A10) // 求A1到A10的最小值
=MIN(1, 2, 3, 4, 5) // 求1、2、3、4、5的最小值,结果为1

2.1.9 ABS函数#

功能:求绝对值

语法:=ABS(number)

参数:

  • number:必需,要计算绝对值的数值

示例:

=ABS(-5) // 求-5的绝对值,结果为5
=ABS(A1) // 求A1单元格数值的绝对值

2.1.10 MOD函数#

功能:求余数

语法:=MOD(number, divisor)

参数:

  • number:必需,要计算余数的被除数
  • divisor:必需,除数

示例:

=MOD(10, 3) // 求10除以3的余数,结果为1
=MOD(A1, 2) // 求A1单元格数值除以2的余数

2.1.11 ROUND函数#

功能:四舍五入

语法:=ROUND(number, num_digits)

参数:

  • number:必需,要四舍五入的数值
  • num_digits:必需,要保留的小数位数

示例:

=ROUND(3.14159, 2) // 四舍五入到2位小数,结果为3.14
=ROUND(3.14159, 0) // 四舍五入到整数,结果为3
=ROUND(3.14159, -1) // 四舍五入到十位,结果为0

2.1.12 ROUNDUP函数#

功能:向上舍入

语法:=ROUNDUP(number, num_digits)

参数:

  • number:必需,要向上舍入的数值
  • num_digits:必需,要保留的小数位数

示例:

=ROUNDUP(3.14159, 2) // 向上舍入到2位小数,结果为3.15
=ROUNDUP(3.14159, 0) // 向上舍入到整数,结果为4

2.1.13 ROUNDDOWN函数#

功能:向下舍入

语法:=ROUNDDOWN(number, num_digits)

参数:

  • number:必需,要向下舍入的数值
  • num_digits:必需,要保留的小数位数

示例:

=ROUNDDOWN(3.14159, 2) // 向下舍入到2位小数,结果为3.14
=ROUNDDOWN(3.999, 0) // 向下舍入到整数,结果为3

2.2 三角函数#

2.2.1 SIN函数#

功能:求正弦值

语法:=SIN(number)

参数:

  • number:必需,角度(弧度)

示例:

=SIN(PI()) // 求π的正弦值,结果为0
=SIN(RADIANS(30)) // 求30度的正弦值,结果为0.5

2.2.2 COS函数#

功能:求余弦值

语法:=COS(number)

参数:

  • number:必需,角度(弧度)

示例:

=COS(0) // 求0弧度的余弦值,结果为1
=COS(RADIANS(60)) // 求60度的余弦值,结果为0.5

2.2.3 TAN函数#

功能:求正切值

语法:=TAN(number)

参数:

  • number:必需,角度(弧度)

示例:

=TAN(0) // 求0弧度的正切值,结果为0
=TAN(RADIANS(45)) // 求45度的正切值,结果为1

2.2.4 ASIN函数#

功能:求反正弦值

语法:=ASIN(number)

参数:

  • number:必需,正弦值,范围在-1到1之间

示例:

=ASIN(0.5) // 求0.5的反正弦值(弧度)
=DEGREES(ASIN(0.5)) // 求0.5的反正弦值(度数),结果为30

2.2.5 ACOS函数#

功能:求反余弦值

语法:=ACOS(number)

参数:

  • number:必需,余弦值,范围在-1到1之间

示例:

=ACOS(0.5) // 求0.5的反余弦值(弧度)
=DEGREES(ACOS(0.5)) // 求0.5的反余弦值(度数),结果为60

2.2.6 ATAN函数#

功能:求反正切值

语法:=ATAN(number)

参数:

  • number:必需,正切值

示例:

=ATAN(1) // 求1的反正切值(弧度)
=DEGREES(ATAN(1)) // 求1的反正切值(度数),结果为45

2.3 其他数学函数#

2.3.1 SQRT函数#

功能:求平方根

语法:=SQRT(number)

参数:

  • number:必需,要计算平方根的数值,必须为正数

示例:

=SQRT(9) // 求9的平方根,结果为3
=SQRT(A1) // 求A1单元格数值的平方根

2.3.2 PI函数#

功能:返回π值(3.141592653589793)

语法:=PI()

参数:无

示例:

=PI() // 返回π值
=PI()*RADIUS^2 // 计算圆的面积

2.3.3 RAND函数#

功能:返回0到1之间的随机数

语法:=RAND()

参数:无

示例:

=RAND() // 返回0到1之间的随机数
=RAND()*10 // 返回0到10之间的随机数
=INT(RAND()*100) // 返回0到99之间的随机整数

2.3.4 RANDBETWEEN函数#

功能:返回指定范围内的随机整数

语法:=RANDBETWEEN(bottom, top)

参数:

  • bottom:必需,随机数的最小值
  • top:必需,随机数的最大值

示例:

=RANDBETWEEN(1, 100) // 返回1到100之间的随机整数
=RANDBETWEEN(1, 6) // 模拟掷骰子,返回1到6之间的随机整数

3. 统计函数#

统计函数用于分析数据,如计算平均值、中位数、标准差等。

3.1 基本统计函数#

3.1.1 COUNT函数#

功能:计算包含数字的单元格个数

语法:=COUNT(value1, [value2], ...)

参数:

  • value1:必需,要计数的第一个项、单元格引用或区域
  • value2:可选,要计数的其他项、单元格引用或区域

示例:

=COUNT(A1:A10) // 计算A1到A10中包含数字的单元格个数
=COUNT(1, "文本", TRUE) // 计算数字的个数,结果为1

3.1.2 COUNTA函数#

功能:计算非空单元格个数

语法:=COUNTA(value1, [value2], ...)

参数:

  • value1:必需,要计数的第一个项、单元格引用或区域
  • value2:可选,要计数的其他项、单元格引用或区域

示例:

=COUNTA(A1:A10) // 计算A1到A10中非空单元格个数
=COUNTA(1, "文本", TRUE, "") // 计算非空值的个数,结果为3

3.1.3 COUNTBLANK函数#

功能:计算空白单元格个数

语法:=COUNTBLANK(range)

参数:

  • range:必需,要计算空白单元格个数的区域

示例:

=COUNTBLANK(A1:A10) // 计算A1到A10中空白单元格个数

3.1.4 COUNTIF函数#

功能:根据指定条件计算单元格个数

语法:=COUNTIF(range, criteria)

参数:

  • range:必需,要根据条件进行评估的单元格区域
  • criteria:必需,条件

示例:

=COUNTIF(A1:A10, ">60") // 计算A1到A10中大于60的单元格个数
=COUNTIF(A1:A10, "苹果") // 计算A1到A10中值为"苹果"的单元格个数
=COUNTIF(A1:A10, "*") // 计算A1到A10中非空单元格个数

3.1.5 COUNTIFS函数#

功能:根据多个指定条件计算单元格个数

语法:=COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2], ...)

参数:

  • criteria_range1:必需,第一个要根据条件进行评估的单元格区域
  • criteria1:必需,第一个条件
  • criteria_range2, criteria2:可选,其他条件区域和条件

示例:

=COUNTIFS(A1:A10, ">60", B1:B10, "<90") // 计算A1到A10中大于60且B1到B10中小于90的单元格个数
=COUNTIFS(A1:A10, "苹果", B1:B10, ">10") // 计算A1到A10中值为"苹果"且B1到B10中大于10的单元格个数

3.1.6 AVERAGE函数#

功能:计算平均值

语法:=AVERAGE(number1, [number2], ...)

参数:

  • number1:必需,要计算平均值的第一个数值
  • number2:可选,要计算平均值的其他数值

示例:

=AVERAGE(A1:A10) // 计算A1到A10的平均值
=AVERAGE(1, 2, 3, 4, 5) // 计算1、2、3、4、5的平均值,结果为3

3.1.7 MEDIAN函数#

功能:计算中位数

语法:=MEDIAN(number1, [number2], ...)

参数:

  • number1:必需,要计算中位数的第一个数值
  • number2:可选,要计算中位数的其他数值

示例:

=MEDIAN(A1:A10) // 计算A1到A10的中位数
=MEDIAN(1, 2, 3, 4, 5) // 计算1、2、3、4、5的中位数,结果为3
=MEDIAN(1, 2, 3, 4) // 计算1、2、3、4的中位数,结果为2.5

3.1.8 MODE函数#

功能:计算众数(出现频率最高的数值)

语法:=MODE(number1, [number2], ...)

参数:

  • number1:必需,要计算众数的第一个数值
  • number2:可选,要计算众数的其他数值

示例:

=MODE(A1:A10) // 计算A1到A10的众数
=MODE(1, 2, 2, 3, 4) // 计算众数,结果为2

3.1.9 MODE.SNGL函数#

功能:计算众数(出现频率最高的数值)

语法:=MODE.SNGL(number1, [number2], ...)

参数:

  • number1:必需,要计算众数的第一个数值
  • number2:可选,要计算众数的其他数值

示例:

=MODE.SNGL(A1:A10) // 计算A1到A10的众数
=MODE.SNGL(1, 2, 2, 3, 4) // 计算众数,结果为2

3.1.10 MODE.MULT函数#

功能:计算所有众数

语法:=MODE.MULT(number1, [number2], ...)

参数:

  • number1:必需,要计算众数的第一个数值
  • number2:可选,要计算众数的其他数值

示例:

=MODE.MULT(A1:A10) // 计算A1到A10的所有众数
=MODE.MULT(1, 2, 2, 3, 3, 4) // 计算众数,结果为2和3

3.2 高级统计函数#

3.2.1 STDEV.S函数#

功能:计算基于样本的标准差

语法:=STDEV.S(number1, [number2], ...)

参数:

  • number1:必需,要计算标准差的第一个数值
  • number2:可选,要计算标准差的其他数值

示例:

=STDEV.S(A1:A10) // 计算A1到A10的基于样本的标准差
=STDEV.S(1, 2, 3, 4, 5) // 计算1、2、3、4、5的基于样本的标准差

3.2.2 STDEV.P函数#

功能:计算基于总体的标准差

语法:=STDEV.P(number1, [number2], ...)

参数:

  • number1:必需,要计算标准差的第一个数值
  • number2:可选,要计算标准差的其他数值

示例:

=STDEV.P(A1:A10) // 计算A1到A10的基于总体的标准差
=STDEV.P(1, 2, 3, 4, 5) // 计算1、2、3、4、5的基于总体的标准差

3.2.3 VAR.S函数#

功能:计算基于样本的方差

语法:=VAR.S(number1, [number2], ...)

参数:

  • number1:必需,要计算方差的第一个数值
  • number2:可选,要计算方差的其他数值

示例:

=VAR.S(A1:A10) // 计算A1到A10的基于样本的方差
=VAR.S(1, 2, 3, 4, 5) // 计算1、2、3、4、5的基于样本的方差

3.2.4 VAR.P函数#

功能:计算基于总体的方差

语法:=VAR.P(number1, [number2], ...)

参数:

  • number1:必需,要计算方差的第一个数值
  • number2:可选,要计算方差的其他数值

示例:

=VAR.P(A1:A10) // 计算A1到A10的基于总体的方差
=VAR.P(1, 2, 3, 4, 5) // 计算1、2、3、4、5的基于总体的方差

3.2.5 CORREL函数#

功能:计算两个数据集之间的相关系数

语法:=CORREL(array1, array2)

参数:

  • array1:必需,第一个数据集
  • array2:必需,第二个数据集

示例:

=CORREL(A1:A10, B1:B10) // 计算A1到A10和B1到B10之间的相关系数

3.2.6 COVARIANCE.S函数#

功能:计算基于样本的协方差

语法:=COVARIANCE.S(array1, array2)

参数:

  • array1:必需,第一个数据集
  • array2:必需,第二个数据集

示例:

=COVARIANCE.S(A1:A10, B1:B10) // 计算A1到A10和B1到B10之间的基于样本的协方差

3.2.7 COVARIANCE.P函数#

功能:计算基于总体的协方差

语法:=COVARIANCE.P(array1, array2)

参数:

  • array1:必需,第一个数据集
  • array2:必需,第二个数据集

示例:

=COVARIANCE.P(A1:A10, B1:B10) // 计算A1到A10和B1到B10之间的基于总体的协方差

3.2.8 PERCENTILE.INC函数#

功能:计算百分位数(包含端点)

语法:=PERCENTILE.INC(array, k)

参数:

  • array:必需,要计算百分位数的数据集
  • k:必需,要计算的百分位数,范围在0到1之间

示例:

=PERCENTILE.INC(A1:A10, 0.5) // 计算A1到A10的50%百分位数(中位数)
=PERCENTILE.INC(A1:A10, 0.9) // 计算A1到A10的90%百分位数

3.2.9 PERCENTILE.EXC函数#

功能:计算百分位数(不包含端点)

语法:=PERCENTILE.EXC(array, k)

参数:

  • array:必需,要计算百分位数的数据集
  • k:必需,要计算的百分位数,范围在0到1之间(不包括0和1)

示例:

=PERCENTILE.EXC(A1:A10, 0.5) // 计算A1到A10的50%百分位数(中位数)
=PERCENTILE.EXC(A1:A10, 0.9) // 计算A1到A10的90%百分位数

4. 逻辑函数#

逻辑函数用于执行逻辑运算,如判断条件是否成立、执行条件分支等。

4.1 基本逻辑函数#

4.1.1 IF函数#

功能:根据条件返回不同的值

语法:=IF(logical_test, value_if_true, [value_if_false])

参数:

  • logical_test:必需,要测试的条件
  • value_if_true:必需,条件为真时返回的值
  • value_if_false:可选,条件为假时返回的值

示例:

=IF(A1>60, "及格", "不及格") // 如果A1大于60,返回"及格",否则返回"不及格"
=IF(A1>B1, A1, B1) // 如果A1大于B1,返回A1,否则返回B1
=IF(A1="", "空白", A1) // 如果A1为空白,返回"空白",否则返回A1

4.1.2 AND函数#

功能:判断多个条件是否同时成立

语法:=AND(logical1, [logical2], ...)

参数:

  • logical1:必需,要测试的第一个条件
  • logical2:可选,要测试的其他条件

示例:

=AND(A1>60, B1>60) // 如果A1和B1都大于60,返回TRUE,否则返回FALSE
=AND(A1>60, B1>60, C1>60) // 如果A1、B1和C1都大于60,返回TRUE,否则返回FALSE

4.1.3 OR函数#

功能:判断多个条件是否至少有一个成立

语法:=OR(logical1, [logical2], ...)

参数:

  • logical1:必需,要测试的第一个条件
  • logical2:可选,要测试的其他条件

示例:

=OR(A1>60, B1>60) // 如果A1或B1大于60,返回TRUE,否则返回FALSE
=OR(A1>60, B1>60, C1>60) // 如果A1、B1或C1大于60,返回TRUE,否则返回FALSE

4.1.4 NOT函数#

功能:对条件的结果取反

语法:=NOT(logical)

参数:

  • logical:必需,要取反的条件

示例:

=NOT(A1>60) // 如果A1不大于60,返回TRUE,否则返回FALSE
=NOT(TRUE) // 返回FALSE
=NOT(FALSE) // 返回TRUE

4.2 高级逻辑函数#

4.2.1 IFERROR函数#

功能:如果公式返回错误,返回指定的值,否则返回公式的结果

语法:=IFERROR(value, value_if_error)

参数:

  • value:必需,要测试是否有错误的参数
  • value_if_error:必需,公式返回错误时要返回的值

示例:

=IFERROR(1/0, "错误") // 因为1/0返回错误,所以返回"错误"
=IFERROR(A1/B1, "除数不能为零") // 如果B1为零,返回"除数不能为零"

4.2.2 IFNA函数#

功能:如果公式返回#N/A错误,返回指定的值,否则返回公式的结果

语法:=IFNA(value, value_if_na)

参数:

  • value:必需,要测试是否为#N/A错误的参数
  • value_if_na:必需,公式返回#N/A错误时要返回的值

示例:

=IFNA(VLOOKUP("不存在", A1:B10, 2, FALSE), "未找到") // 如果VLOOKUP返回#N/A错误,返回"未找到"

4.2.3 XOR函数#

功能:判断多个条件中是否有且只有一个成立

语法:=XOR(logical1, [logical2], ...)

参数:

  • logical1:必需,要测试的第一个条件
  • logical2:可选,要测试的其他条件

示例:

=XOR(A1>60, B1>60) // 如果A1和B1中只有一个大于60,返回TRUE,否则返回FALSE
=XOR(TRUE, FALSE, FALSE) // 返回TRUE
=XOR(TRUE, TRUE, FALSE) // 返回FALSE

4.2.4 SWITCH函数#

功能:根据值列表返回对应结果

语法:=SWITCH(expression, value1, result1, [value2, result2], ..., [default])

参数:

  • expression:必需,要计算的值
  • value1:必需,要匹配的第一个值
  • result1:必需,value1匹配时返回的结果
  • value2, result2:可选,其他值和对应的结果
  • default:可选,没有匹配值时返回的结果

示例:

=SWITCH(A1, 1, "优秀", 2, "良好", 3, "及格", "不及格") // 根据A1的值返回对应的等级
=SWITCH(B1, "苹果", 5, "香蕉", 3, "橙子", 4, 0) // 根据B1的值返回对应的价格

4.2.5 IFS函数#

功能:根据多个条件返回对应结果

语法:=IFS(logical_test1, value1, [logical_test2, value2], ...)

参数:

  • logical_test1:必需,要测试的第一个条件
  • value1:必需,logical_test1为真时返回的值
  • logical_test2, value2:可选,其他条件和对应的结果

示例:

=IFS(A1>=90, "优秀", A1>=80, "良好", A1>=60, "及格", A1<60, "不及格") // 根据A1的值返回对应的等级
=IFS(B1>100, "超出", B1>50, "正常", B1>0, "偏低", TRUE, "错误") // 根据B1的值返回对应的状态

5. 查找和引用函数#

查找和引用函数用于查找数据或引用单元格,如查找特定值、返回单元格引用等。

5.1 基本查找函数#

5.1.1 VLOOKUP函数#

功能:在表格的首列查找值,并返回对应行中的值

语法:=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])

参数:

  • lookup_value:必需,要查找的值
  • table_array:必需,要查找的表格区域
  • col_index_num:必需,要返回的列号
  • range_lookup:可选,是否使用近似匹配,TRUE(默认)为近似匹配,FALSE为精确匹配

示例:

=VLOOKUP("苹果", A1:B10, 2, FALSE) // 在A1:A10中查找"苹果",返回对应B列的值
=VLOOKUP(C1, A1:B10, 2, TRUE) // 在A1:A10中近似查找C1的值,返回对应B列的值

5.1.2 HLOOKUP函数#

功能:在表格的首行查找值,并返回对应列中的值

语法:=HLOOKUP(lookup_value, table_array, row_index_num, [range_lookup])

参数:

  • lookup_value:必需,要查找的值
  • table_array:必需,要查找的表格区域
  • row_index_num:必需,要返回的行号
  • range_lookup:可选,是否使用近似匹配,TRUE(默认)为近似匹配,FALSE为精确匹配

示例:

=HLOOKUP("苹果", A1:J10, 2, FALSE) // 在A1:J1中查找"苹果",返回对应第2行的值
=HLOOKUP(C1, A1:J10, 3, TRUE) // 在A1:J1中近似查找C1的值,返回对应第3行的值

5.1.3 LOOKUP函数#

功能:在单行或单列中查找值,并返回对应位置的值

语法:

  • 向量形式:=LOOKUP(lookup_value, lookup_vector, [result_vector])
  • 数组形式:=LOOKUP(lookup_value, array)

参数:

  • lookup_value:必需,要查找的值
  • lookup_vector:向量形式必需,要查找的单行或单列区域
  • result_vector:向量形式可选,要返回值的单行或单列区域
  • array:数组形式必需,要查找的数组

示例:

=LOOKUP("苹果", A1:A10, B1:B10) // 在A1:A10中查找"苹果",返回对应B1:B10中的值
=LOOKUP(5, {1, 2, 3, 4, 5}, {"一", "二", "三", "四", "五"}) // 查找5,返回"五"

5.2 高级查找函数#

5.2.1 XLOOKUP函数#

功能:在表格或区域中查找值,并返回对应的值

语法:=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])

参数:

  • lookup_value:必需,要查找的值
  • lookup_array:必需,要查找的区域
  • return_array:必需,要返回值的区域
  • if_not_found:可选,找不到值时返回的值
  • match_mode:可选,匹配模式,0为精确匹配,1为近似匹配(升序),-1为近似匹配(降序),2为通配符匹配
  • search_mode:可选,搜索模式,1为从第一个值开始搜索,-1为从最后一个值开始搜索,2为二进制搜索(升序),-2为二进制搜索(降序)

示例:

=XLOOKUP("苹果", A1:A10, B1:B10) // 在A1:A10中查找"苹果",返回对应B1:B10中的值
=XLOOKUP("不存在", A1:A10, B1:B10, "未找到") // 如果找不到"不存在",返回"未找到"
=XLOOKUP(C1, A1:A10, B1:B10, "未找到", 1) // 近似匹配C1的值

5.2.2 INDEX函数#

功能:返回表格或区域中指定位置的值

语法:

  • 数组形式:=INDEX(array, row_num, [column_num])
  • 引用形式:=INDEX(reference, row_num, [column_num], [area_num])

参数:

  • array:数组形式必需,要返回值的数组
  • reference:引用形式必需,要返回值的引用
  • row_num:必需,要返回值的行号
  • column_num:可选,要返回值的列号
  • area_num:引用形式可选,要使用的区域号

示例:

=INDEX(A1:D10, 2, 3) // 返回A1:D10中第2行第3列的值
=INDEX((A1:B10, C1:D10), 2, 3, 2) // 返回第二个区域(C1:D10)中第2行第3列的值

5.2.3 MATCH函数#

功能:返回指定值在表格或区域中的位置

语法:=MATCH(lookup_value, lookup_array, [match_type])

参数:

  • lookup_value:必需,要查找的值
  • lookup_array:必需,要查找的区域
  • match_type:可选,匹配类型,1为近似匹配(升序),0为精确匹配,-1为近似匹配(降序)

示例:

=MATCH("苹果", A1:A10, 0) // 在A1:A10中精确查找"苹果",返回其位置
=MATCH(5, A1:A10, 1) // 在A1:A10中近似查找5(升序),返回其位置
=MATCH(5, A1:A10, -1) // 在A1:A10中近似查找5(降序),返回其位置

5.2.4 CHOOSE函数#

功能:根据索引返回对应的值

语法:=CHOOSE(index_num, value1, [value2], ...)

参数:

  • index_num:必需,要返回的值的索引,范围在1到254之间
  • value1:必需,index_num为1时要返回的值
  • value2:可选,index_num为2时要返回的值,最多可添加254个值

示例:

=CHOOSE(2, "第一", "第二", "第三") // 返回"第二"
=CHOOSE(MONTH(TODAY()), "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月") // 根据当前月份返回对应中文月份

5.3 引用函数#

5.3.1 OFFSET函数#

功能:从指定引用偏移指定行数和列数后返回新的引用

语法:=OFFSET(reference, rows, cols, [height], [width])

参数:

  • reference:必需,要偏移的引用
  • rows:必需,要偏移的行数,正数向下偏移,负数向上偏移
  • cols:必需,要偏移的列数,正数向右偏移,负数向左偏移
  • height:可选,返回引用的高度
  • width:可选,返回引用的宽度

示例:

=OFFSET(A1, 2, 3) // 返回A1向下偏移2行、向右偏移3列的单元格(D3)
=OFFSET(A1, 0, 0, 5, 5) // 返回以A1为起点的5行5列区域

5.3.2 INDIRECT函数#

功能:返回由文本字符串指定的引用

语法:=INDIRECT(ref_text, [a1])

参数:

  • ref_text:必需,要转换为引用的文本字符串
  • a1:可选,引用样式,TRUE(默认)为A1样式,FALSE为R1C1样式

示例:

=INDIRECT("A1") // 返回A1单元格的引用
=INDIRECT(C1) // 如果C1包含"A1",返回A1单元格的引用
=INDIRECT("Sheet2!A1") // 返回Sheet2工作表中A1单元格的引用

5.3.3 ROW函数#

功能:返回引用的行号

语法:=ROW([reference])

参数:

  • reference:可选,要返回行号的引用

示例:

=ROW() // 返回当前单元格的行号
=ROW(A1) // 返回A1单元格的行号,结果为1
=ROW(A1:A10) // 返回A1:A10区域的行号数组

5.3.4 COLUMN函数#

功能:返回引用的列号

语法:=COLUMN([reference])

参数:

  • reference:可选,要返回列号的引用

示例:

=COLUMN() // 返回当前单元格的列号
=COLUMN(A1) // 返回A1单元格的列号,结果为1
=COLUMN(A1:J1) // 返回A1:J1区域的列号数组

5.3.5 ROWS函数#

功能:返回引用的行数

语法:=ROWS(array)

参数:

  • array:必需,要返回行数的数组或引用

示例:

=ROWS(A1:A10) // 返回A1:A10区域的行数,结果为10
=ROWS(A1:J10) // 返回A1:J10区域的行数,结果为10

5.3.6 COLUMNS函数#

功能:返回引用的列数

语法:=COLUMNS(array)

参数:

  • array:必需,要返回列数的数组或引用

示例:

=COLUMNS(A1:A10) // 返回A1:A10区域的列数,结果为1
=COLUMNS(A1:J10) // 返回A1:J10区域的列数,结果为10

6. 文本函数#

文本函数用于处理文本,如连接文本、提取文本、转换文本大小写等。

6.1 基本文本函数#

6.1.1 CONCATENATE函数#

功能:连接多个文本字符串

语法:=CONCATENATE(text1, [text2], ...)

参数:

  • text1:必需,要连接的第一个文本字符串
  • text2:可选,要连接的其他文本字符串,最多可添加255个参数

示例:

=CONCATENATE("Hello", " ", "World") // 连接"Hello"、" "和"World",结果为"Hello World"
=CONCATENATE(A1, " ", B1) // 连接A1、" "和B1的文本

6.1.2 CONCAT函数#

功能:连接多个文本字符串

语法:=CONCAT(text1, [text2], ...)

参数:

  • text1:必需,要连接的第一个文本字符串
  • text2:可选,要连接的其他文本字符串

示例:

=CONCAT("Hello", " ", "World") // 连接"Hello"、" "和"World",结果为"Hello World"
=CONCAT(A1, " ", B1) // 连接A1、" "和B1的文本

6.1.3 TEXTJOIN函数#

功能:使用分隔符连接多个文本字符串

语法:=TEXTJOIN(delimiter, ignore_empty, text1, [text2], ...)

参数:

  • delimiter:必需,要使用的分隔符
  • ignore_empty:必需,是否忽略空值,TRUE为忽略,FALSE为不忽略
  • text1:必需,要连接的第一个文本字符串
  • text2:可选,要连接的其他文本字符串

示例:

=TEXTJOIN(", ", TRUE, "苹果", "香蕉", "橙子") // 用", "连接"苹果"、"香蕉"和"橙子",结果为"苹果, 香蕉, 橙子"
=TEXTJOIN(", ", TRUE, A1:A5) // 用", "连接A1到A5的文本,忽略空值

6.1.4 LEFT函数#

功能:从文本字符串的左侧提取指定个数的字符

语法:=LEFT(text, [num_chars])

参数:

  • text:必需,要提取字符的文本字符串
  • num_chars:可选,要提取的字符个数,默认为1

示例:

=LEFT("Hello World", 5) // 提取左侧5个字符,结果为"Hello"
=LEFT(A1, 3) // 提取A1单元格文本左侧3个字符

6.1.5 RIGHT函数#

功能:从文本字符串的右侧提取指定个数的字符

语法:=RIGHT(text, [num_chars])

参数:

  • text:必需,要提取字符的文本字符串
  • num_chars:可选,要提取的字符个数,默认为1

示例:

=RIGHT("Hello World", 5) // 提取右侧5个字符,结果为"World"
=RIGHT(A1, 3) // 提取A1单元格文本右侧3个字符

6.1.6 MID函数#

功能:从文本字符串的指定位置提取指定个数的字符

语法:=MID(text, start_num, num_chars)

参数:

  • text:必需,要提取字符的文本字符串
  • start_num:必需,开始提取的位置,第一个字符的位置为1
  • num_chars:必需,要提取的字符个数

示例:

=MID("Hello World", 7, 5) // 从第7个字符开始提取5个字符,结果为"World"
=MID(A1, 2, 3) // 从A1单元格文本的第2个字符开始提取3个字符

6.1.7 LEN函数#

功能:返回文本字符串的长度

语法:=LEN(text)

参数:

  • text:必需,要计算长度的文本字符串

示例:

=LEN("Hello World") // 返回"Hello World"的长度,结果为11
=LEN(A1) // 返回A1单元格文本的长度

6.1.8 TRIM函数#

功能:去除文本字符串的前后空格

语法:=TRIM(text)

参数:

  • text:必需,要去除空格的文本字符串

示例:

=TRIM(" Hello World ") // 去除前后空格,结果为"Hello World"
=TRIM(A1) // 去除A1单元格文本的前后空格

6.1.9 CLEAN函数#

功能:去除文本字符串中的非打印字符

语法:=CLEAN(text)

参数:

  • text:必需,要去除非打印字符的文本字符串

示例:

=CLEAN(A1) // 去除A1单元格文本中的非打印字符

6.2 文本转换函数#

6.2.1 LOWER函数#

功能:将文本字符串转换为小写

语法:=LOWER(text)

参数:

  • text:必需,要转换为小写的文本字符串

示例:

=LOWER("HELLO WORLD") // 转换为小写,结果为"hello world"
=LOWER(A1) // 将A1单元格文本转换为小写

6.2.2 UPPER函数#

功能:将文本字符串转换为大写

语法:=UPPER(text)

参数:

  • text:必需,要转换为大写的文本字符串

示例:

=UPPER("hello world") // 转换为大写,结果为"HELLO WORLD"
=UPPER(A1) // 将A1单元格文本转换为大写

6.2.3 PROPER函数#

功能:将文本字符串转换为首字母大写,其他字母小写

语法:=PROPER(text)

参数:

  • text:必需,要转换的文本字符串

示例:

=PROPER("hello world") // 转换为首字母大写,结果为"Hello World"
=PROPER(A1) // 将A1单元格文本转换为首字母大写

6.2.4 VALUE函数#

功能:将文本转换为数字

语法:=VALUE(text)

参数:

  • text:必需,要转换为数字的文本字符串

示例:

=VALUE("123") // 转换为数字,结果为123
=VALUE(A1) // 将A1单元格文本转换为数字

6.2.5 TEXT函数#

功能:将数字转换为指定格式的文本

语法:=TEXT(value, format_text)

参数:

  • value:必需,要转换的数值
  • format_text:必需,要使用的格式代码

示例:

=TEXT(1234.56, "#,##0.00") // 转换为带千位分隔符的文本,结果为"1,234.56"
=TEXT(NOW(), "yyyy-mm-dd") // 将当前日期转换为"yyyy-mm-dd"格式的文本
=TEXT(A1, "0.00") // 将A1单元格数值转换为保留2位小数的文本

6.3 文本查找和替换函数#

6.3.1 FIND函数#

功能:在文本字符串中查找指定字符或文本的位置(区分大小写)

语法:=FIND(find_text, within_text, [start_num])

参数:

  • find_text:必需,要查找的字符或文本
  • within_text:必需,要在其中查找的文本
  • start_num:可选,开始查找的位置,默认为1

示例:

=FIND("World", "Hello World") // 查找"World"在"Hello World"中的位置,结果为7
=FIND("o", "Hello World", 5) // 从第5个字符开始查找"o"的位置,结果为8

6.3.2 SEARCH函数#

功能:在文本字符串中查找指定字符或文本的位置(不区分大小写)

语法:=SEARCH(find_text, within_text, [start_num])

参数:

  • find_text:必需,要查找的字符或文本
  • within_text:必需,要在其中查找的文本
  • start_num:可选,开始查找的位置,默认为1

示例:

=SEARCH("world", "Hello World") // 查找"world"在"Hello World"中的位置,结果为7
=SEARCH("o", "Hello World", 5) // 从第5个字符开始查找"o"的位置,结果为8

6.3.3 REPLACE函数#

功能:替换文本字符串中的部分字符

语法:=REPLACE(old_text, start_num, num_chars, new_text)

参数:

  • old_text:必需,要替换部分字符的文本字符串
  • start_num:必需,开始替换的位置
  • num_chars:必需,要替换的字符个数
  • new_text:必需,要替换成的文本

示例:

=REPLACE("Hello World", 7, 5, "Excel") // 从第7个字符开始替换5个字符,结果为"Hello Excel"
=REPLACE(A1, 2, 3, "XYZ") // 从A1单元格文本的第2个字符开始替换3个字符为"XYZ"

6.3.4 SUBSTITUTE函数#

功能:替换文本字符串中的指定字符或文本

语法:=SUBSTITUTE(text, old_text, new_text, [instance_num])

参数:

  • text:必需,要替换字符或文本的文本字符串
  • old_text:必需,要替换的字符或文本
  • new_text:必需,要替换成的字符或文本
  • instance_num:可选,要替换的第几个匹配项,默认为替换所有匹配项

示例:

=SUBSTITUTE("Hello World World", "World", "Excel") // 替换所有"World"为"Excel",结果为"Hello Excel Excel"
=SUBSTITUTE("Hello World World", "World", "Excel", 1) // 只替换第一个"World"为"Excel",结果为"Hello Excel World"
=SUBSTITUTE(A1, " ", "-") // 将A1单元格文本中的空格替换为"-"

6.4 其他文本函数#

6.4.1 CHAR函数#

功能:返回指定ASCII码对应的字符

语法:=CHAR(number)

参数:

  • number:必需,ASCII码,范围在1到255之间

示例:

=CHAR(65) // 返回ASCII码65对应的字符,结果为"A"
=CHAR(10) // 返回换行符

6.4.2 CODE函数#

功能:返回文本字符串中第一个字符的ASCII码

语法:=CODE(text)

参数:

  • text:必需,要返回第一个字符ASCII码的文本字符串

示例:

=CODE("A") // 返回"A"的ASCII码,结果为65
=CODE(A1) // 返回A1单元格文本第一个字符的ASCII码

6.4.3 REPT函数#

功能:重复指定的文本字符串指定次数

语法:=REPT(text, number_times)

参数:

  • text:必需,要重复的文本字符串
  • number_times:必需,要重复的次数,必须为非负数

示例:

=REPT("*") // 重复"*"5次,结果为"****"
=REPT(A1, 3) // 重复A1单元格文本3次

6.4.4 T函数#

功能:如果值为文本,返回该文本,否则返回空文本

语法:=T(value)

参数:

  • value:必需,要测试的值

示例:

=T("Hello") // 返回"Hello"
=T(123) // 返回空文本
=T(A1) // 如果A1为文本,返回A1,否则返回空文本

7. 日期和时间函数#

日期和时间函数用于处理日期和时间,如获取当前日期和时间、计算日期差、提取日期和时间的部分等。

7.1 基本日期和时间函数#

7.1.1 TODAY函数#

功能:返回当前日期

语法:=TODAY()

参数:无

示例:

=TODAY() // 返回当前日期
=TODAY()+7 // 返回7天后的日期
=TODAY()-30 // 返回30天前的日期

7.1.2 NOW函数#

功能:返回当前日期和时间

语法:=NOW()

参数:无

示例:

=NOW() // 返回当前日期和时间
=NOW()+1/24 // 返回1小时后的日期和时间
=NOW()-1/48 // 返回30分钟前的日期和时间

7.1.3 DATE函数#

功能:根据年、月、日创建日期

语法:=DATE(year, month, day)

参数:

  • year:必需,年份
  • month:必需,月份
  • day:必需,日期

示例:

=DATE(2026, 2, 25) // 返回2026年2月25日
=DATE(A1, B1, C1) // 根据A1(年)、B1(月)、C1(日)创建日期

7.1.4 TIME函数#

功能:根据时、分、秒创建时间

语法:=TIME(hour, minute, second)

参数:

  • hour:必需,小时
  • minute:必需,分钟
  • second:必需,秒

示例:

=TIME(12, 30, 45) // 返回12:30:45
=TIME(A1, B1, C1) // 根据A1(小时)、B1(分钟)、C1(秒)创建时间

7.2 日期和时间提取函数#

7.2.1 YEAR函数#

功能:提取日期中的年份

语法:=YEAR(serial_number)

参数:

  • serial_number:必需,要提取年份的日期

示例:

=YEAR(DATE(2026, 2, 25)) // 提取2026年
=YEAR(A1) // 提取A1单元格日期中的年份
=YEAR(TODAY()) // 提取当前日期的年份

7.2.2 MONTH函数#

功能:提取日期中的月份

语法:=MONTH(serial_number)

参数:

  • serial_number:必需,要提取月份的日期

示例:

=MONTH(DATE(2026, 2, 25)) // 提取2月
=MONTH(A1) // 提取A1单元格日期中的月份
=MONTH(TODAY()) // 提取当前日期的月份

7.2.3 DAY函数#

功能:提取日期中的日

语法:=DAY(serial_number)

参数:

  • serial_number:必需,要提取日的日期

示例:

=DAY(DATE(2026, 2, 25)) // 提取25日
=DAY(A1) // 提取A1单元格日期中的日
=DAY(TODAY()) // 提取当前日期的日

7.2.4 HOUR函数#

功能:提取时间中的小时

语法:=HOUR(serial_number)

参数:

  • serial_number:必需,要提取小时的时间

示例:

=HOUR(TIME(12, 30, 45)) // 提取12小时
=HOUR(A1) // 提取A1单元格时间中的小时
=HOUR(NOW()) // 提取当前时间的小时

7.2.5 MINUTE函数#

功能:提取时间中的分钟

语法:=MINUTE(serial_number)

参数:

  • serial_number:必需,要提取分钟的时间

示例:

=MINUTE(TIME(12, 30, 45)) // 提取30分钟
=MINUTE(A1) // 提取A1单元格时间中的分钟
=MINUTE(NOW()) // 提取当前时间的分钟

7.2.6 SECOND函数#

功能:提取时间中的秒钟

语法:=SECOND(serial_number)

参数:

  • serial_number:必需,要提取秒钟的时间

示例:

=SECOND(TIME(12, 30, 45)) // 提取45秒钟
=SECOND(A1) // 提取A1单元格时间中的秒钟
=SECOND(NOW()) // 提取当前时间的秒钟

7.3 日期和时间计算函数#

7.3.1 DATEDIF函数#

功能:计算两个日期之间的差值

语法:=DATEDIF(start_date, end_date, unit)

参数:

  • start_date:必需,开始日期
  • end_date:必需,结束日期
  • unit:必需,返回值的单位,“Y”表示年,“M”表示月,“D”表示日,“MD”表示忽略年和月的日差,“YM”表示忽略年的月差,“YD”表示忽略年的日差

示例:

=DATEDIF(DATE(2020, 1, 1), DATE(2026, 2, 25), "Y") // 计算年差,结果为6
=DATEDIF(DATE(2020, 1, 1), DATE(2026, 2, 25), "M") // 计算月差,结果为73
=DATEDIF(DATE(2020, 1, 1), DATE(2026, 2, 25), "D") // 计算日差,结果为2244

7.3.2 DATEVALUE函数#

功能:将文本转换为日期

语法:=DATEVALUE(date_text)

参数:

  • date_text:必需,要转换为日期的文本字符串

示例:

=DATEVALUE("2026-02-25") // 将文本转换为日期
=DATEVALUE(A1) // 将A1单元格文本转换为日期

7.3.3 TIMEVALUE函数#

功能:将文本转换为时间

语法:=TIMEVALUE(time_text)

参数:

  • time_text:必需,要转换为时间的文本字符串

示例:

=TIMEVALUE("12:30:45") // 将文本转换为时间
=TIMEVALUE(A1) // 将A1单元格文本转换为时间

7.3.4 EOMONTH函数#

功能:返回指定日期所在月的最后一天

语法:=EOMONTH(start_date, months)

参数:

  • start_date:必需,开始日期
  • months:必需,月份偏移量,正数表示未来月份,负数表示过去月份

示例:

=EOMONTH(DATE(2026, 2, 25), 0) // 返回2026年2月的最后一天,结果为2026-02-28
=EOMONTH(DATE(2026, 2, 25), 1) // 返回2026年3月的最后一天,结果为2026-03-31
=EOMONTH(DATE(2026, 2, 25), -1) // 返回2026年1月的最后一天,结果为2026-01-31

7.3.5 EDATE函数#

功能:返回指定日期加上指定月数的日期

语法:=EDATE(start_date, months)

参数:

  • start_date:必需,开始日期
  • months:必需,要添加的月数

示例:

=EDATE(DATE(2026, 2, 25), 1) // 返回2026年3月25日
=EDATE(DATE(2026, 2, 25), -1) // 返回2026年1月25日
=EDATE(DATE(2026, 2, 25), 12) // 返回2027年2月25日

7.3.6 WEEKDAY函数#

功能:返回日期对应的星期几

语法:=WEEKDAY(serial_number, [return_type])

参数:

  • serial_number:必需,日期
  • return_type:可选,返回类型,1(默认)表示星期日为1,2表示星期ー为1,3表示星期一为0

示例:

=WEEKDAY(DATE(2026, 2, 25)) // 返回2(星期二)
=WEEKDAY(DATE(2026, 2, 25), 2) // 返回2(星期二)
=WEEKDAY(DATE(2026, 2, 25), 3) // 返回1(星期二)

7.3.7 WEEKNUM函数#

功能:返回日期对应的周数

语法:=WEEKNUM(serial_number, [return_type])

参数:

  • serial_number:必需,日期
  • return_type:可选,返回类型,1(默认)表示星期日为一周的第一天,2表示星期ー为一周的第一天

示例:

=WEEKNUM(DATE(2026, 2, 25)) // 返回9(2026年第9周)
=WEEKNUM(DATE(2026, 2, 25), 2) // 返回9(2026年第9周)

7.3.8 YEARFRAC函数#

功能:计算两个日期之间的年份分数

语法:=YEARFRAC(start_date, end_date, [basis])

参数:

  • start_date:必需,开始日期
  • end_date:必需,结束日期
  • basis:可选,日计数基准,0(默认)表示US (NASD) 30/360,1表示实际/实际,2表示实际/360,3表示实际/365,4表示欧洲30/360

示例:

=YEARFRAC(DATE(2026, 1, 1), DATE(2026, 2, 25)) // 计算两个日期之间的年份分数
=YEARFRAC(DATE(2026, 1, 1), DATE(2026, 12, 31)) // 结果为1

8. 财务函数#

财务函数用于财务计算,如计算贷款还款额、投资收益等。

8.1 基本财务函数#

8.1.1 PMT函数#

功能:计算贷款的每期还款额

语法:=PMT(rate, nper, pv, [fv], [type])

参数:

  • rate:必需,每期利率
  • nper:必需,总还款期数
  • pv:必需,现值(贷款金额)
  • fv:可选,未来值,默认为0
  • type:可选,付款时间类型,0(默认)表示期末付款,1表示期初付款

示例:

=PMT(5%/12, 36, 100000) // 计算年利率5%,贷款100000元,36期的月供
=PMT(8%/12, 24, 50000, 0, 1) // 计算年利率8%,贷款50000元,24期的期初付款额

8.1.2 PPMT函数#

功能:计算贷款的每期本金还款额

语法:=PPMT(rate, per, nper, pv, [fv], [type])

参数:

  • rate:必需,每期利率
  • per:必需,要计算的期数
  • nper:必需,总还款期数
  • pv:必需,现值(贷款金额)
  • fv:可选,未来值,默认为0
  • type:可选,付款时间类型,0(默认)表示期末付款,1表示期初付款

示例:

=PPMT(5%/12, 1, 36, 100000) // 计算第1期的本金还款额
=PPMT(5%/12, 36, 36, 100000) // 计算第36期的本金还款额

8.1.3 IPMT函数#

功能:计算贷款的每期利息还款额

语法:=IPMT(rate, per, nper, pv, [fv], [type])

参数:

  • rate:必需,每期利率
  • per:必需,要计算的期数
  • nper:必需,总还款期数
  • pv:必需,现值(贷款金额)
  • fv:可选,未来值,默认为0
  • type:可选,付款时间类型,0(默认)表示期末付款,1表示期初付款

示例:

=IPMT(5%/12, 1, 36, 100000) // 计算第1期的利息还款额
=IPMT(5%/12, 36, 36, 100000) // 计算第36期的利息还款额

8.1.4 FV函数#

功能:计算投资的未来值

语法:=FV(rate, nper, pmt, [pv], [type])

参数:

  • rate:必需,每期利率
  • nper:必需,总投资期数
  • pmt:必需,每期投资金额
  • pv:可选,现值(初始投资金额),默认为0
  • type:可选,付款时间类型,0(默认)表示期末付款,1表示期初付款

示例:

=FV(5%/12, 12, -1000) // 计算每月投资1000元,年利率5%,1年后的未来值
=FV(8%/12, 60, -500, -10000) // 计算初始投资10000元,每月投资500元,年利率8%,5年后的未来值

8.1.5 PV函数#

功能:计算投资的现值

语法:=PV(rate, nper, pmt, [fv], [type])

参数:

  • rate:必需,每期利率
  • nper:必需,总投资期数
  • pmt:必需,每期投资金额
  • fv:可选,未来值,默认为0
  • type:可选,付款时间类型,0(默认)表示期末付款,1表示期初付款

示例:

=PV(5%/12, 12, -1000) // 计算每月投资1000元,年利率5%,1年的现值
=PV(8%/12, 60, -500, 100000) // 计算每月投资500元,年利率8%,5年后达到100000元的现值

8.1.6 NPV函数#

功能:计算投资的净现值

语法:=NPV(rate, value1, [value2], ...)

参数:

  • rate:必需,贴现率
  • value1:必需,第一期现金流
  • value2:可选,其他期现金流

示例:

=NPV(10%, -10000, 3000, 4000, 5000) // 计算初始投资10000元,后续三年分别收回3000、4000、5000元,贴现率10%的净现值
=NPV(8%, B1:B5) // 计算B1到B5现金流,贴现率8%的净现值

8.1.7 IRR函数#

功能:计算投资的内部收益率

语法:=IRR(values, [guess])

参数:

  • values:必需,现金流数组
  • guess:可选,猜测值,默认为0.1

示例:

=IRR({-10000, 3000, 4000, 5000}) // 计算初始投资10000元,后续三年分别收回3000、4000、5000元的内部收益率
=IRR(A1:A4) // 计算A1到A4现金流的内部收益率

8.1.8 XIRR函数#

功能:计算不规则间隔现金流的内部收益率

语法:=XIRR(values, dates, [guess])

参数:

  • values:必需,现金流数组
  • dates:必需,对应的日期数组
  • guess:可选,猜测值,默认为0.1

示例:

=XIRR({-10000, 3000, 4000, 5000}, {"2025-01-01", "2025-06-01", "2026-01-01", "2026-06-01"}) // 计算不规则间隔现金流的内部收益率
=XIRR(A1:A4, B1:B4) // 计算A1到A4现金流和B1到B4日期的内部收益率

9. 信息函数#

信息函数用于获取单元格的信息,如单元格的数据类型、是否为空等。

9.1 基本信息函数#

9.1.1 ISBLANK函数#

功能:判断单元格是否为空

语法:=ISBLANK(value)

参数:

  • value:必需,要测试的值

示例:

=ISBLANK(A1) // 如果A1为空,返回TRUE,否则返回FALSE
=IF(ISBLANK(A1), "空白", "非空白") // 如果A1为空,返回"空白",否则返回"非空白"

9.1.2 ISNUMBER函数#

功能:判断值是否为数字

语法:=ISNUMBER(value)

参数:

  • value:必需,要测试的值

示例:

=ISNUMBER(A1) // 如果A1为数字,返回TRUE,否则返回FALSE
=IF(ISNUMBER(A1), "数字", "非数字") // 如果A1为数字,返回"数字",否则返回"非数字"

9.1.3 ISTEXT函数#

功能:判断值是否为文本

语法:=ISTEXT(value)

参数:

  • value:必需,要测试的值

示例:

=ISTEXT(A1) // 如果A1为文本,返回TRUE,否则返回FALSE
=IF(ISTEXT(A1), "文本", "非文本") // 如果A1为文本,返回"文本",否则返回"非文本"

9.1.4 ISLOGICAL函数#

功能:判断值是否为逻辑值

语法:=ISLOGICAL(value)

参数:

  • value:必需,要测试的值

示例:

=ISLOGICAL(A1) // 如果A1为逻辑值(TRUE或FALSE),返回TRUE,否则返回FALSE
=IF(ISLOGICAL(A1), "逻辑值", "非逻辑值") // 如果A1为逻辑值,返回"逻辑值",否则返回"非逻辑值"

9.1.5 ISERROR函数#

功能:判断值是否为错误值

语法:=ISERROR(value)

参数:

  • value:必需,要测试的值

示例:

=ISERROR(A1) // 如果A1为错误值,返回TRUE,否则返回FALSE
=IF(ISERROR(A1), "错误", "正常") // 如果A1为错误值,返回"错误",否则返回"正常"

9.1.6 ISNA函数#

功能:判断值是否为#N/A错误

语法:=ISNA(value)

参数:

  • value:必需,要测试的值

示例:

=ISNA(A1) // 如果A1为#N/A错误,返回TRUE,否则返回FALSE
=IF(ISNA(A1), "未找到", "正常") // 如果A1为#N/A错误,返回"未找到",否则返回"正常"

9.1.7 ERROR.TYPE函数#

功能:返回错误值的类型

语法:=ERROR.TYPE(error_val)

参数:

  • error_val:必需,错误值

示例:

=ERROR.TYPE(A1) // 返回A1中错误值的类型
=IF(ERROR.TYPE(A1)=3, "值错误", "其他错误") // 如果是#VALUE!错误,返回"值错误",否则返回"其他错误"

9.1.8 CELL函数#

功能:返回单元格的信息

语法:=CELL(info_type, [reference])

参数:

  • info_type:必需,要返回的信息类型
  • reference:可选,要获取信息的单元格

示例:

=CELL("address", A1) // 返回A1的单元格地址
=CELL("format", A1) // 返回A1的格式
=CELL("type", A1) // 返回A1的数据类型
=CELL("width", A1) // 返回A1的列宽

9.1.9 INFO函数#

功能:返回当前环境的信息

语法:=INFO(type_text)

参数:

  • type_text:必需,要返回的信息类型

示例:

=INFO("directory") // 返回当前工作簿的目录
=INFO("numfile") // 返回当前打开的工作簿数量
=INFO("recalc") // 返回当前的重新计算模式
=INFO("release") // 返回Excel的版本号

10. 工程函数#

工程函数用于工程计算,如进制转换、复数运算等。

10.1 进制转换函数#

10.1.1 BIN2DEC函数#

功能:将二进制数转换为十进制数

语法:=BIN2DEC(number)

参数:

  • number:必需,二进制数

示例:

=BIN2DEC("1010") // 将二进制数1010转换为十进制数,结果为10
=BIN2DEC(A1) // 将A1中的二进制数转换为十进制数

10.1.2 DEC2BIN函数#

功能:将十进制数转换为二进制数

语法:=DEC2BIN(number, [places])

参数:

  • number:必需,十进制数
  • places:可选,要返回的位数

示例:

=DEC2BIN(10) // 将十进制数10转换为二进制数,结果为"1010"
=DEC2BIN(10, 8) // 将十进制数10转换为8位二进制数,结果为"00001010"

10.1.3 HEX2DEC函数#

功能:将十六进制数转换为十进制数

语法:=HEX2DEC(number)

参数:

  • number:必需,十六进制数

示例:

=HEX2DEC("A") // 将十六进制数A转换为十进制数,结果为10
=HEX2DEC("FF") // 将十六进制数FF转换为十进制数,结果为255

10.1.4 DEC2HEX函数#

功能:将十进制数转换为十六进制数

语法:=DEC2HEX(number, [places])

参数:

  • number:必需,十进制数
  • places:可选,要返回的位数

示例:

=DEC2HEX(10) // 将十进制数10转换为十六进制数,结果为"A"
=DEC2HEX(255, 4) // 将十进制数255转换为4位十六进制数,结果为"00FF"

10.1.5 OCT2DEC函数#

功能:将八进制数转换为十进制数

语法:=OCT2DEC(number)

参数:

  • number:必需,八进制数

示例:

=OCT2DEC("12") // 将八进制数12转换为十进制数,结果为10
=OCT2DEC("777") // 将八进制数777转换为十进制数,结果为511

10.1.6 DEC2OCT函数#

功能:将十进制数转换为八进制数

语法:=DEC2OCT(number, [places])

参数:

  • number:必需,十进制数
  • places:可选,要返回的位数

示例:

=DEC2OCT(10) // 将十进制数10转换为八进制数,结果为"12"
=DEC2OCT(511, 6) // 将十进制数511转换为6位八进制数,结果为"000777"

10.2 复数函数#

10.2.1 COMPLEX函数#

功能:创建复数

语法:=COMPLEX(real_num, i_num, [suffix])

参数:

  • real_num:必需,实部
  • i_num:必需,虚部
  • suffix:可选,虚部的后缀,“i”(默认)或”j”

示例:

=COMPLEX(3, 4) // 创建复数3+4i
=COMPLEX(2, 5, "j") // 创建复数2+5j

10.2.2 REIMAGINARY函数#

功能:返回复数的虚部

语法:=IMAGINARY(inumber)

参数:

  • inumber:必需,复数

示例:

=IMAGINARY(COMPLEX(3, 4)) // 返回复数3+4i的虚部,结果为4
=IMAGINARY(A1) // 返回A1中复数的虚部

10.2.3 IMREAL函数#

功能:返回复数的实部

语法:=IMREAL(inumber)

参数:

  • inumber:必需,复数

示例:

=IMREAL(COMPLEX(3, 4)) // 返回复数3+4i的实部,结果为3
=IMREAL(A1) // 返回A1中复数的实部

10.2.4 IMCONJUGATE函数#

功能:返回复数的共轭复数

语法:=IMCONJUGATE(inumber)

参数:

  • inumber:必需,复数

示例:

=IMCONJUGATE(COMPLEX(3, 4)) // 返回复数3+4i的共轭复数,结果为3-4i
=IMCONJUGATE(A1) // 返回A1中复数的共轭复数

10.2.5 IMSUM函数#

功能:计算复数的和

语法:=IMSUM(inumber1, [inumber2], ...)

参数:

  • inumber1:必需,第一个复数
  • inumber2:可选,其他复数

示例:

=IMSUM(COMPLEX(3, 4), COMPLEX(1, 2)) // 计算复数3+4i和1+2i的和,结果为4+6i
=IMSUM(A1, A2) // 计算A1和A2中复数的和

10.2.6 IMSUB函数#

功能:计算复数的差

语法:=IMSUB(inumber1, inumber2)

参数:

  • inumber1:必需,被减数复数
  • inumber2:必需,减数复数

示例:

=IMSUB(COMPLEX(3, 4), COMPLEX(1, 2)) // 计算复数3+4i和1+2i的差,结果为2+2i
=IMSUB(A1, A2) // 计算A1和A2中复数的差

10.2.7 IMPRODUCT函数#

功能:计算复数的乘积

语法:=IMPRODUCT(inumber1, [inumber2], ...)

参数:

  • inumber1:必需,第一个复数
  • inumber2:可选,其他复数

示例:

=IMPRODUCT(COMPLEX(3, 4), COMPLEX(1, 2)) // 计算复数3+4i和1+2i的乘积,结果为-5+10i
=IMPRODUCT(A1, A2) // 计算A1和A2中复数的乘积

10.2.8 IMDIV函数#

功能:计算复数的商

语法:=IMDIV(inumber1, inumber2)

参数:

  • inumber1:必需,被除数复数
  • inumber2:必需,除数复数

示例:

=IMDIV(COMPLEX(3, 4), COMPLEX(1, 2)) // 计算复数3+4i和1+2i的商,结果为2.2-0.4i
=IMDIV(A1, A2) // 计算A1和A2中复数的商

11. 数据库函数#

数据库函数用于数据库操作,如在数据库中查找满足条件的记录并计算。

11.1 基本数据库函数#

11.1.1 DSUM函数#

功能:计算数据库中满足条件的记录的字段和

语法:=DSUM(database, field, criteria)

参数:

  • database:必需,数据库区域,包含列标题
  • field:必需,要计算的字段,可以是字段名称或列号
  • criteria:必需,条件区域,包含列标题和条件

示例:

=DSUM(A1:D10, "销售额", F1:G2) // 计算A1:D10数据库中满足F1:G2条件的"销售额"和
=DSUM(A1:D10, 4, F1:G2) // 计算A1:D10数据库中满足F1:G2条件的第4列和

11.1.2 DAVERAGE函数#

功能:计算数据库中满足条件的记录的字段平均值

语法:=DAVERAGE(database, field, criteria)

参数:

  • database:必需,数据库区域,包含列标题
  • field:必需,要计算的字段,可以是字段名称或列号
  • criteria:必需,条件区域,包含列标题和条件

示例:

=DAVERAGE(A1:D10, "销售额", F1:G2) // 计算A1:D10数据库中满足F1:G2条件的"销售额"平均值
=DAVERAGE(A1:D10, 4, F1:G2) // 计算A1:D10数据库中满足F1:G2条件的第4列平均值

11.1.3 DCOUNT函数#

功能:计算数据库中满足条件的记录数(只计算数字字段)

语法:=DCOUNT(database, field, criteria)

参数:

  • database:必需,数据库区域,包含列标题
  • field:可选,要计算的字段,可以是字段名称或列号
  • criteria:必需,条件区域,包含列标题和条件

示例:

=DCOUNT(A1:D10, "销售额", F1:G2) // 计算A1:D10数据库中满足F1:G2条件的"销售额"记录数
=DCOUNT(A1:D10, "", F1:G2) // 计算A1:D10数据库中满足F1:G2条件的所有记录数

11.1.4 DCOUNTA函数#

功能:计算数据库中满足条件的记录数(计算所有非空字段)

语法:=DCOUNTA(database, field, criteria)

参数:

  • database:必需,数据库区域,包含列标题
  • field:可选,要计算的字段,可以是字段名称或列号
  • criteria:必需,条件区域,包含列标题和条件

示例:

=DCOUNTA(A1:D10, "产品", F1:G2) // 计算A1:D10数据库中满足F1:G2条件的"产品"记录数
=DCOUNTA(A1:D10, "", F1:G2) // 计算A1:D10数据库中满足F1:G2条件的所有记录数

11.1.5 DMAX函数#

功能:返回数据库中满足条件的记录的字段最大值

语法:=DMAX(database, field, criteria)

参数:

  • database:必需,数据库区域,包含列标题
  • field:必需,要计算的字段,可以是字段名称或列号
  • criteria:必需,条件区域,包含列标题和条件

示例:

=DMAX(A1:D10, "销售额", F1:G2) // 返回A1:D10数据库中满足F1:G2条件的"销售额"最大值
=DMAX(A1:D10, 4, F1:G2) // 返回A1:D10数据库中满足F1:G2条件的第4列最大值

11.1.6 DMIN函数#

功能:返回数据库中满足条件的记录的字段最小值

语法:=DMIN(database, field, criteria)

参数:

  • database:必需,数据库区域,包含列标题
  • field:必需,要计算的字段,可以是字段名称或列号
  • criteria:必需,条件区域,包含列标题和条件

示例:

=DMIN(A1:D10, "销售额", F1:G2) // 返回A1:D10数据库中满足F1:G2条件的"销售额"最小值
=DMIN(A1:D10, 4, F1:G2) // 返回A1:D10数据库中满足F1:G2条件的第4列最小值

11.1.7 DPRODUCT函数#

功能:计算数据库中满足条件的记录的字段乘积

语法:=DPRODUCT(database, field, criteria)

参数:

  • database:必需,数据库区域,包含列标题
  • field:必需,要计算的字段,可以是字段名称或列号
  • criteria:必需,条件区域,包含列标题和条件

示例:

=DPRODUCT(A1:D10, "数量", F1:G2) // 计算A1:D10数据库中满足F1:G2条件的"数量"乘积
=DPRODUCT(A1:D10, 3, F1:G2) // 计算A1:D10数据库中满足F1:G2条件的第3列乘积

11.1.8 DSTDEV函数#

功能:计算数据库中满足条件的记录的字段样本标准差

语法:=DSTDEV(database, field, criteria)

参数:

  • database:必需,数据库区域,包含列标题
  • field:必需,要计算的字段,可以是字段名称或列号
  • criteria:必需,条件区域,包含列标题和条件

示例:

=DSTDEV(A1:D10, "销售额", F1:G2) // 计算A1:D10数据库中满足F1:G2条件的"销售额"样本标准差
=DSTDEV(A1:D10, 4, F1:G2) // 计算A1:D10数据库中满足F1:G2条件的第4列样本标准差

11.1.9 DSTDEVP函数#

功能:计算数据库中满足条件的记录的字段总体标准差

语法:=DSTDEVP(database, field, criteria)

参数:

  • database:必需,数据库区域,包含列标题
  • field:必需,要计算的字段,可以是字段名称或列号
  • criteria:必需,条件区域,包含列标题和条件

示例:

=DSTDEVP(A1:D10, "销售额", F1:G2) // 计算A1:D10数据库中满足F1:G2条件的"销售额"总体标准差
=DSTDEVP(A1:D10, 4, F1:G2) // 计算A1:D10数据库中满足F1:G2条件的第4列总体标准差

11.1.10 DVAR函数#

功能:计算数据库中满足条件的记录的字段样本方差

语法:=DVAR(database, field, criteria)

参数:

  • database:必需,数据库区域,包含列标题
  • field:必需,要计算的字段,可以是字段名称或列号
  • criteria:必需,条件区域,包含列标题和条件

示例:

=DVAR(A1:D10, "销售额", F1:G2) // 计算A1:D10数据库中满足F1:G2条件的"销售额"样本方差
=DVAR(A1:D10, 4, F1:G2) // 计算A1:D10数据库中满足F1:G2条件的第4列样本方差

11.1.11 DVARP函数#

功能:计算数据库中满足条件的记录的字段总体方差

语法:=DVARP(database, field, criteria)

参数:

  • database:必需,数据库区域,包含列标题
  • field:必需,要计算的字段,可以是字段名称或列号
  • criteria:必需,条件区域,包含列标题和条件

示例:

=DVARP(A1:D10, "销售额", F1:G2) // 计算A1:D10数据库中满足F1:G2条件的"销售额"总体方差
=DVARP(A1:D10, 4, F1:G2) // 计算A1:D10数据库中满足F1:G2条件的第4列总体方差

12. 新增函数(Excel 2019+)#

Excel 2019及以后版本新增了一些函数,如动态数组函数、XLOOKUP函数等。

12.1 动态数组函数#

12.1.1 FILTER函数#

功能:根据条件筛选数组

语法:=FILTER(array, include, [if_empty])

参数:

  • array:必需,要筛选的数组
  • include:必需,条件数组,与array具有相同的行数或列数
  • if_empty:可选,没有匹配值时返回的值

示例:

=FILTER(A1:B10, A1:A10>60) // 筛选A1:A10中大于60的行
=FILTER(A1:B10, (A1:A10>60)*(B1:B10<90), "无匹配") // 筛选A1:A10中大于60且B1:B10中小于90的行,无匹配时返回"无匹配"

12.1.2 SORT函数#

功能:对数组进行排序

语法:=SORT(array, [sort_index], [sort_order], [by_col])

参数:

  • array:必需,要排序的数组
  • sort_index:可选,排序的列号或行号,默认为1
  • sort_order:可选,排序顺序,1(默认)为升序,-1为降序
  • by_col:可选,是否按列排序,FALSE(默认)为按行排序,TRUE为按列排序

示例:

=SORT(A1:B10) // 按第一列升序排序
=SORT(A1:B10, 2, -1) // 按第二列降序排序

12.1.3 SORTBY函数#

功能:根据其他数组对数组进行排序

语法:=SORTBY(array, by_array1, [sort_order1], [by_array2, sort_order2], ...)

参数:

  • array:必需,要排序的数组
  • by_array1:必需,排序依据的第一个数组
  • sort_order1:可选,第一个排序依据的排序顺序,1(默认)为升序,-1为降序
  • by_array2, sort_order2:可选,其他排序依据和顺序

示例:

=SORTBY(A1:B10, B1:B10) // 根据B列升序排序A:B列
=SORTBY(A1:B10, B1:B10, -1, A1:A10, 1) // 先根据B列降序排序,再根据A列升序排序

12.1.4 UNIQUE函数#

功能:返回数组中的唯一值

语法:=UNIQUE(array, [by_col], [exactly_once])

参数:

  • array:必需,要提取唯一值的数组
  • by_col:可选,是否按列提取唯一值,FALSE(默认)为按行,TRUE为按列
  • exactly_once:可选,是否只返回出现一次的值,FALSE(默认)为返回所有唯一值,TRUE为只返回出现一次的值

示例:

=UNIQUE(A1:A10) // 返回A1:A10中的唯一值
=UNIQUE(A1:B10) // 返回A1:B10中的唯一行
=UNIQUE(A1:A10, FALSE, TRUE) // 返回A1:A10中只出现一次的值

12.1.5 XLOOKUP函数#

功能:在数组中查找值并返回对应值

语法:=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])

参数:

  • lookup_value:必需,要查找的值
  • lookup_array:必需,要查找的数组
  • return_array:必需,要返回值的数组
  • if_not_found:可选,找不到值时返回的值
  • match_mode:可选,匹配模式,0为精确匹配,1为近似匹配(升序),-1为近似匹配(降序),2为通配符匹配
  • search_mode:可选,搜索模式,1为从第一个值开始搜索,-1为从最后一个值开始搜索,2为二进制搜索(升序),-2为二进制搜索(降序)

示例:

=XLOOKUP("苹果", A1:A10, B1:B10) // 在A1:A10中查找"苹果",返回对应B1:B10中的值
=XLOOKUP("不存在", A1:A10, B1:B10, "未找到") // 如果找不到"不存在",返回"未找到"
=XLOOKUP(C1, A1:A10, B1:B10, "未找到", 1) // 近似匹配C1的值

12.1.6 XMATCH函数#

功能:在数组中查找值并返回其位置

语法:=XMATCH(lookup_value, lookup_array, [match_mode], [search_mode])

参数:

  • lookup_value:必需,要查找的值
  • lookup_array:必需,要查找的数组
  • match_mode:可选,匹配模式,0为精确匹配,1为近似匹配(升序),-1为近似匹配(降序),2为通配符匹配
  • search_mode:可选,搜索模式,1为从第一个值开始搜索,-1为从最后一个值开始搜索,2为二进制搜索(升序),-2为二进制搜索(降序)

示例:

=XMATCH("苹果", A1:A10) // 在A1:A10中查找"苹果",返回其位置
=XMATCH(5, A1:A10, 1) // 在A1:A10中近似匹配5(升序),返回其位置
=XMATCH("*苹果*", A1:A10, 2) // 在A1:A10中使用通配符匹配包含"苹果"的值,返回其位置

12.1.7 LET函数#

功能:为计算结果命名,使公式更易读

语法:=LET(name1, value1, [name2, value2], ..., calculation)

参数:

  • name1:必需,第一个名称
  • value1:必需,第一个名称的值
  • name2, value2:可选,其他名称和值
  • calculation:必需,使用名称的计算

示例:

=LET(a, 10, b, 20, a+b) // 计算10+20,结果为30
=LET(total, SUM(A1:A10), avg, total/COUNT(A1:A10), "总和: "&total&", 平均值: "&avg) // 计算总和和平均值,并返回文本

12.1.8 LAMBDA函数#

功能:创建自定义函数

语法:=LAMBDA([parameter1, parameter2, ...], calculation)

参数:

  • parameter1, parameter2, …:可选,函数参数
  • calculation:必需,函数的计算

示例:

=LAMBDA(x, y, x+y)(10, 20) // 创建一个计算两数之和的函数,并传入参数10和20,结果为30
=LAMBDA(x, IF(x>60, "及格", "不及格"))(A1) // 创建一个判断是否及格的函数,并传入A1的值

12.6 其他新增函数#

12.6.1 MAP函数#

功能:对数组中的每个元素应用自定义函数

语法:=MAP(array1, [array2], ..., lambda)

参数:

  • array1:必需,要处理的第一个数组
  • array2:可选,要处理的其他数组
  • lambda:必需,要应用的LAMBDA函数

示例:

=MAP(A1:A10, LAMBDA(x, x*2)) // 将A1:A10中的每个值乘以2
=MAP(A1:A10, B1:B10, LAMBDA(x, y, x+y)) // 将A1:A10和B1:B10中的对应值相加

12.6.2 REDUCE函数#

功能:对数组中的元素应用自定义函数,累积计算结果

语法:=REDUCE(initial_value, array, lambda)

参数:

  • initial_value:必需,初始值
  • array:必需,要处理的数组
  • lambda:必需,要应用的LAMBDA函数

示例:

=REDUCE(0, A1:A10, LAMBDA(acc, x, acc+x)) // 计算A1:A10的和
=REDUCE(1, A1:A10, LAMBDA(acc, x, acc*x)) // 计算A1:A10的乘积

12.6.3 SCAN函数#

功能:对数组中的元素应用自定义函数,返回每个步骤的中间结果

语法:=SCAN(initial_value, array, lambda)

参数:

  • initial_value:必需,初始值
  • array:必需,要处理的数组
  • lambda:必需,要应用的LAMBDA函数

示例:

=SCAN(0, A1:A10, LAMBDA(acc, x, acc+x)) // 返回A1:A10的累积和
=SCAN(1, A1:A10, LAMBDA(acc, x, acc*x)) // 返回A1:A10的累积乘积

12.6.4 MAKEARRAY函数#

功能:创建指定大小的数组,使用自定义函数计算每个元素的值

语法:=MAKEARRAY(rows, cols, lambda)

参数:

  • rows:必需,数组的行数
  • cols:必需,数组的列数
  • lambda:必需,要应用的LAMBDA函数

示例:

=MAKEARRAY(5, 5, LAMBDA(r, c, r*c)) // 创建5x5的乘法表
=MAKEARRAY(3, 3, LAMBDA(r, c, IF(r=c, "X", "O"))) // 创建3x3的井字棋盘

12.6.5 BYROW函数#

功能:对数组的每一行应用自定义函数

语法:=BYROW(array, lambda)

参数:

  • array:必需,要处理的数组
  • lambda:必需,要应用的LAMBDA函数

示例:

=BYROW(A1:C10, LAMBDA(row, SUM(row))) // 计算A1:C10每一行的和
=BYROW(A1:C10, LAMBDA(row, AVERAGE(row))) // 计算A1:C10每一行的平均值

12.6.6 BYCOL函数#

功能:对数组的每一列应用自定义函数

语法:=BYCOL(array, lambda)

参数:

  • array:必需,要处理的数组
  • lambda:必需,要应用的LAMBDA函数

示例:

=BYCOL(A1:C10, LAMBDA(col, SUM(col))) // 计算A1:C10每一列的和
=BYCOL(A1:C10, LAMBDA(col, AVERAGE(col))) // 计算A1:C10每一列的平均值

13. 函数使用技巧与最佳实践#

13.1 函数嵌套技巧#

函数嵌套是Excel中非常强大的功能,通过嵌套不同的函数,可以实现复杂的计算和分析。

示例1:多条件判断

=IF(AND(A1>60, B1>60, C1>60), "全部及格", IF(OR(A1>60, B1>60, C1>60), "部分及格", "全部不及格"))

示例2:文本处理与查找

=VLOOKUP(LEFT(A1, 2), B1:C10, 2, FALSE) // 提取A1左侧2个字符并在B1:C10中查找

示例3:日期计算与条件判断

=IF(DATEDIF(A1, TODAY(), "D")>30, "超过30天", "未超过30天") // 判断A1日期与今天的差距是否超过30天

13.2 函数性能优化#

当处理大量数据时,函数的性能变得尤为重要。以下是一些函数性能优化的技巧:

  1. 避免使用volatile函数:如NOW()、TODAY()、RAND()等,这些函数会在每次工作表计算时重新计算

  2. 使用适当的查找函数:在处理大量数据时,XLOOKUP比VLOOKUP更高效

  3. 减少函数嵌套层级:过多的函数嵌套会降低计算速度

  4. 使用数组公式:对于批量计算,数组公式比逐个单元格计算更高效

  5. 使用命名范围:命名范围可以使公式更易读,同时提高计算速度

13.3 常见错误与解决方案#

在使用Excel函数时,经常会遇到一些错误。以下是一些常见错误及其解决方案:

1. #DIV/0! 错误

  • 原因:除数为零
  • 解决方案:使用IFERROR函数捕获错误,或确保除数不为零
=IFERROR(A1/B1, "除数不能为零")

2. #N/A 错误

  • 原因:查找函数未找到匹配值
  • 解决方案:使用IFNA函数捕获错误,或确保查找值存在
=IFNA(VLOOKUP(A1, B1:C10, 2, FALSE), "未找到")

3. #VALUE! 错误

  • 原因:函数参数类型错误
  • 解决方案:确保函数参数类型正确
=IF(ISNUMBER(A1), A1+1, "请输入数字")

4. #REF! 错误

  • 原因:引用了不存在的单元格
  • 解决方案:确保引用的单元格存在

5. #NAME? 错误

  • 原因:函数名拼写错误或引用了不存在的名称
  • 解决方案:检查函数名拼写,确保引用的名称存在

13.4 函数应用案例#

案例1:销售数据分析

=SUMIFS(C2:C100, A2:A100, "苹果", B2:B100, ">10") // 计算苹果销量大于10的销售额
=AVERAGEIFS(C2:C100, A2:A100, "苹果") // 计算苹果的平均销售额
=MAXIFS(C2:C100, A2:A100, "苹果") // 计算苹果的最高销售额

案例2:学生成绩分析

=IF(AVERAGE(B2:D2)>=90, "优秀", IF(AVERAGE(B2:D2)>=80, "良好", IF(AVERAGE(B2:D2)>=60, "及格", "不及格"))) // 根据平均分评定等级
=COUNTIF(B2:B100, ">=90") // 计算数学成绩90分以上的人数
=RANK.EQ(B2, B2:B100) // 计算数学成绩的排名

案例3:日期与时间计算

=WORKDAY(TODAY(), 10) // 计算10个工作日后的日期
=NETWORKDAYS(A2, B2) // 计算两个日期之间的工作日数
=TEXT(NOW(), "yyyy-mm-dd hh:mm:ss") // 格式化当前日期和时间

14. 总结#

Excel函数是Excel中最强大的功能之一,掌握这些函数可以大大提高你的工作效率。本教程详细介绍了Excel中的各种函数,包括:

  • 数学与三角函数:用于执行数学计算
  • 统计函数:用于分析数据
  • 逻辑函数:用于执行逻辑运算
  • 查找和引用函数:用于查找数据或引用单元格
  • 文本函数:用于处理文本
  • 日期和时间函数:用于处理日期和时间
  • 财务函数:用于财务计算
  • 信息函数:用于获取单元格信息
  • 工程函数:用于工程计算
  • 数据库函数:用于数据库操作
  • 新增函数:Excel 2019及以后版本新增的函数

每个函数都包含了详细的语法、参数说明和使用示例,帮助你快速掌握这些函数的使用方法。此外,本教程还提供了函数使用技巧、性能优化建议、常见错误解决方案和实际应用案例,帮助你更有效地使用Excel函数。

要成为Excel函数高手,建议你:

  1. 多实践:通过实际项目练习使用各种函数
  2. 记常用函数:记住最常用的函数及其用法
  3. 学习函数嵌套:掌握函数嵌套的技巧,解决复杂问题
  4. 参考官方文档:遇到问题时参考Excel官方文档
  5. 探索新函数:关注Excel的版本更新,学习新函数
  6. 理解函数原理:不仅要知道如何使用函数,还要理解函数的工作原理
  7. 结合实际需求:根据实际工作需求,灵活运用不同的函数

希望本教程对你有所帮助,祝你学习愉快!

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Excel函数完全指南:从基础到高级
https://cyris.cn/posts/excel-functions-complete-guide/
作者
洛穗
发布于
2026-02-25
许可协议
Unlicensed

部分信息可能已经过时