Excel函数完全指南:从基础到高级
欢迎来到Excel函数完全指南!Excel函数是Excel中最强大的功能之一,它们可以帮助你执行各种计算、分析数据、处理文本等操作。本教程将详细介绍Excel中的各种函数,从基础到高级,每个函数都配有详细的使用示例,帮助你全面掌握Excel函数的使用技巧。
1. Excel函数基础
1.1 函数的基本语法
Excel函数的基本语法如下:
=函数名(参数1, 参数2, ...)- 函数名:函数的名称,如SUM、AVERAGE等
- 参数:函数的输入值,可以是常量、单元格引用、表达式等
- 参数分隔符:不同参数之间用逗号分隔
- 括号:函数名后面必须跟括号,参数放在括号内
1.2 函数的分类
Excel函数可以分为以下几大类:
- 数学与三角函数:用于执行数学计算
- 统计函数:用于分析数据
- 逻辑函数:用于执行逻辑运算
- 查找和引用函数:用于查找数据或引用单元格
- 文本函数:用于处理文本
- 日期和时间函数:用于处理日期和时间
- 财务函数:用于财务计算
- 信息函数:用于获取单元格信息
- 工程函数:用于工程计算
- 数据库函数:用于数据库操作
- 兼容性函数:用于兼容旧版本Excel
1.3 输入函数的方法
手动输入:
- 选择要输入函数的单元格
- 输入等号(=)
- 输入函数名
- 输入左括号(
- 输入参数
- 输入右括号)
- 按Enter键确认
使用函数向导:
- 选择要输入函数的单元格
- 点击”公式”选项卡
- 点击”插入函数”
- 在”插入函数”对话框中选择函数类别
- 选择函数
- 点击”确定”
- 在”函数参数”对话框中输入参数
- 点击”确定”
使用函数库:
- 选择要输入函数的单元格
- 点击”公式”选项卡
- 在”函数库”组中选择函数类别
- 选择函数
- 在”函数参数”对话框中输入参数
- 点击”确定”
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的最大值,结果为52.1.8 MIN函数
功能:求最小值
语法:=MIN(number1, [number2], ...)
参数:
- number1:必需,要比较的第一个数值
- number2:可选,要比较的其他数值
示例:
=MIN(A1:A10) // 求A1到A10的最小值=MIN(1, 2, 3, 4, 5) // 求1、2、3、4、5的最小值,结果为12.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) // 四舍五入到十位,结果为02.1.12 ROUNDUP函数
功能:向上舍入
语法:=ROUNDUP(number, num_digits)
参数:
- number:必需,要向上舍入的数值
- num_digits:必需,要保留的小数位数
示例:
=ROUNDUP(3.14159, 2) // 向上舍入到2位小数,结果为3.15=ROUNDUP(3.14159, 0) // 向上舍入到整数,结果为42.1.13 ROUNDDOWN函数
功能:向下舍入
语法:=ROUNDDOWN(number, num_digits)
参数:
- number:必需,要向下舍入的数值
- num_digits:必需,要保留的小数位数
示例:
=ROUNDDOWN(3.14159, 2) // 向下舍入到2位小数,结果为3.14=ROUNDDOWN(3.999, 0) // 向下舍入到整数,结果为32.2 三角函数
2.2.1 SIN函数
功能:求正弦值
语法:=SIN(number)
参数:
- number:必需,角度(弧度)
示例:
=SIN(PI()) // 求π的正弦值,结果为0=SIN(RADIANS(30)) // 求30度的正弦值,结果为0.52.2.2 COS函数
功能:求余弦值
语法:=COS(number)
参数:
- number:必需,角度(弧度)
示例:
=COS(0) // 求0弧度的余弦值,结果为1=COS(RADIANS(60)) // 求60度的余弦值,结果为0.52.2.3 TAN函数
功能:求正切值
语法:=TAN(number)
参数:
- number:必需,角度(弧度)
示例:
=TAN(0) // 求0弧度的正切值,结果为0=TAN(RADIANS(45)) // 求45度的正切值,结果为12.2.4 ASIN函数
功能:求反正弦值
语法:=ASIN(number)
参数:
- number:必需,正弦值,范围在-1到1之间
示例:
=ASIN(0.5) // 求0.5的反正弦值(弧度)=DEGREES(ASIN(0.5)) // 求0.5的反正弦值(度数),结果为302.2.5 ACOS函数
功能:求反余弦值
语法:=ACOS(number)
参数:
- number:必需,余弦值,范围在-1到1之间
示例:
=ACOS(0.5) // 求0.5的反余弦值(弧度)=DEGREES(ACOS(0.5)) // 求0.5的反余弦值(度数),结果为602.2.6 ATAN函数
功能:求反正切值
语法:=ATAN(number)
参数:
- number:必需,正切值
示例:
=ATAN(1) // 求1的反正切值(弧度)=DEGREES(ATAN(1)) // 求1的反正切值(度数),结果为452.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) // 计算数字的个数,结果为13.1.2 COUNTA函数
功能:计算非空单元格个数
语法:=COUNTA(value1, [value2], ...)
参数:
- value1:必需,要计数的第一个项、单元格引用或区域
- value2:可选,要计数的其他项、单元格引用或区域
示例:
=COUNTA(A1:A10) // 计算A1到A10中非空单元格个数=COUNTA(1, "文本", TRUE, "") // 计算非空值的个数,结果为33.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的平均值,结果为33.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.53.1.8 MODE函数
功能:计算众数(出现频率最高的数值)
语法:=MODE(number1, [number2], ...)
参数:
- number1:必需,要计算众数的第一个数值
- number2:可选,要计算众数的其他数值
示例:
=MODE(A1:A10) // 计算A1到A10的众数=MODE(1, 2, 2, 3, 4) // 计算众数,结果为23.1.9 MODE.SNGL函数
功能:计算众数(出现频率最高的数值)
语法:=MODE.SNGL(number1, [number2], ...)
参数:
- number1:必需,要计算众数的第一个数值
- number2:可选,要计算众数的其他数值
示例:
=MODE.SNGL(A1:A10) // 计算A1到A10的众数=MODE.SNGL(1, 2, 2, 3, 4) // 计算众数,结果为23.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和33.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为空白,返回"空白",否则返回A14.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,否则返回FALSE4.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,否则返回FALSE4.1.4 NOT函数
功能:对条件的结果取反
语法:=NOT(logical)
参数:
- logical:必需,要取反的条件
示例:
=NOT(A1>60) // 如果A1不大于60,返回TRUE,否则返回FALSE=NOT(TRUE) // 返回FALSE=NOT(FALSE) // 返回TRUE4.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) // 返回FALSE4.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区域的行数,结果为105.3.6 COLUMNS函数
功能:返回引用的列数
语法:=COLUMNS(array)
参数:
- array:必需,要返回列数的数组或引用
示例:
=COLUMNS(A1:A10) // 返回A1:A10区域的列数,结果为1=COLUMNS(A1:J10) // 返回A1:J10区域的列数,结果为106. 文本函数
文本函数用于处理文本,如连接文本、提取文本、转换文本大小写等。
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"的位置,结果为86.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"的位置,结果为86.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") // 计算日差,结果为22447.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-317.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)) // 结果为18. 财务函数
财务函数用于财务计算,如计算贷款还款额、投资收益等。
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转换为十进制数,结果为25510.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转换为十进制数,结果为51110.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+5j10.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 函数性能优化
当处理大量数据时,函数的性能变得尤为重要。以下是一些函数性能优化的技巧:
-
避免使用volatile函数:如NOW()、TODAY()、RAND()等,这些函数会在每次工作表计算时重新计算
-
使用适当的查找函数:在处理大量数据时,XLOOKUP比VLOOKUP更高效
-
减少函数嵌套层级:过多的函数嵌套会降低计算速度
-
使用数组公式:对于批量计算,数组公式比逐个单元格计算更高效
-
使用命名范围:命名范围可以使公式更易读,同时提高计算速度
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函数高手,建议你:
- 多实践:通过实际项目练习使用各种函数
- 记常用函数:记住最常用的函数及其用法
- 学习函数嵌套:掌握函数嵌套的技巧,解决复杂问题
- 参考官方文档:遇到问题时参考Excel官方文档
- 探索新函数:关注Excel的版本更新,学习新函数
- 理解函数原理:不仅要知道如何使用函数,还要理解函数的工作原理
- 结合实际需求:根据实际工作需求,灵活运用不同的函数
希望本教程对你有所帮助,祝你学习愉快!
部分信息可能已经过时









