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://sakumonet.top/posts/excel-functions-complete-guide/
作者
SakuMonet
发布于
2026-02-25
许可协议
Unlicensed

部分信息可能已经过时