28 KiB
思路讲解
案例一
已知BOM结构如下
A | B | C | D |
---|---|---|---|
母件编码 | 母件代号 | 状态 | 母件损耗率 |
101006002002 | 701435440201 | 审核 | 0 |
级别 | 子件编码 | 基本用量 | 基础数量 |
+ | 201006002002001 | 1 | 1 |
++ | 201006002002002 | 1 | 1 |
+++ | 401001001004 | 0.224 | 1 |
想要的结果如下
A | B |
---|---|
层级 | 编码 |
0 | 101006002002 |
0.1 | 201006002002001 |
0.1.1 | 201006002002002 |
0.1.1.1 | 401001001004 |
母件编码与子件级别共同在A列,要获取BOM的层级关系,可进行分步处理
-
将多余行删除,删除后结果如下
A B C D 101006002002 701435440201 审核 0 + 201006002002001 1 1 ++ 201006002002002 1 1 +++ 401001001004 0.224 1 -
首先获取母件的层级,使用 IF函数 判断当前单元格是否为母件,如果是母件就编号加一,如果不是母件就不增加编号
思路如下:
- 所有编码长度固定,且子件级别最大长度小于编码长度,那么只要单元格长度等于十二的就代表这是个母件
- 所有编码长度固定,但子件级别最大长度等于或大于编码长度,那么需要判断当前单元格是否为数字,若是数字则代表这是个母件
- 所有编码长度不固定,且编码仅以数字开头,中间掺杂字母,则判断当前单元格内容的第一个字符是否为数字,若是数字则代表这个是母件
- 所有编码长度不固定,开头内容不固定,仅可确保不是以加号开头,则判断当前单元格内容的第一个字符是否为加号,若不是加号则代表这个是母件
案例公式:=IF(ISNUMBER(VALUE('母件结构表-多阶'!A3)),A2+1,A2)
说明:这种方式仅能获取到当前BOM的编号
-
其次获取子件的层级,参考上一步的思路,在判断出其不是母件的情况下,根据子件级别输出当前的BOM层级编号
思路如下:
-
长度为1,直接输出当前的层级编号即可
-
长度为2及以上,层级编号不能盲目累加,需考虑如下情况,应判断前一层级的编号是否相同,若相同则代表子件处于相同层级下,可进行累加,若不相同,则需从一开始重新累加
层级 编码 101101001001 + 201101001001001 ++ 201101001001002 +++ 201101001001004 + 201101001001005 ++ 201101001001007
案例公式:
=IF(ISNUMBER(VALUE('母件结构表-多阶'!A3)),0,IF(A2<>A3,0,IF((LEN('母件结构表-多阶'!A3)=1),B2+1,B2)))
说明:每个层级需要单独计算
-
-
所有层级全部处理完成后,进行合并即可
案例公式:
=IF(K2<>0,A2&"."&B2&"."&C2&"."&D2&"."&E2&"."&F2&"."&G2&"."&H2&"."&I2&"."&J2&"."&K2,IF(J2<>0,A2&"."&B2&"."&C2&"."&D2&"."&E2&"."&F2&"."&G2&"."&H2&"."&I2&"."&J2,IF(I2<>0,A2&"."&B2&"."&C2&"."&D2&"."&E2&"."&F2&"."&G2&"."&H2&"."&I2,IF(H2<>0,A2&"."&B2&"."&C2&"."&D2&"."&E2&"."&F2&"."&G2&"."&H2,IF(G2<>0,A2&"."&B2&"."&C2&"."&D2&"."&E2&"."&F2&"."&G2,IF(F2<>0,A2&"."&B2&"."&C2&"."&D2&"."&E2&"."&F2,IF(E2<>0,A2&"."&B2&"."&C2&"."&D2&"."&E2,IF(D2<>0,A2&"."&B2&"."&C2&"."&D2,IF(C2<>0,A2&"."&B2&"."&C2,IF(B2<>0,A2&"."&B2,A2))))))))))
-
输出BOM导入清单
案例二
已知BOM结构如下
A | B |
---|---|
层级 | 编码 |
0 | 02.06.03.00003 |
.1 | 02.02.02.00082 |
..2 | 03.02.07.00059 |
..2 | 05.02.01.00008 |
0 | 02.06.03.00004 |
.1 | 02.02.02.00083 |
..2 | 03.02.07.00059 |
..2 | 05.02.01.00009 |
想要的结果如下
A | B |
---|---|
层级 | 编码 |
0 | 02.06.03.00003 |
0.1 | 02.02.02.00082 |
0.1.1 | 03.02.07.00059 |
0.1.2 | 05.02.01.00008 |
1 | 02.06.03.00004 |
1.1 | 02.02.02.00083 |
1.1.1 | 03.02.07.00059 |
1.1.2 | 05.02.01.00009 |
层级都在A列,要获取BOM的层级关系,可进行分步处理
-
首先获取母件的层级,使用 IF函数 判断当前单元格是否为母件,如果是母件就编号加一,如果不是母件就不增加编号
思路如下:
- 如果单元格内容的值等于0,说明是母件
- 如果单元格内容长度为1,说明是母件
案例公式:=IF(LEN(BOM多级展开!A5)=1,SUMPRODUCT((LEN(BOM多级展开!$A$2:A5)=1)*1)-1,A3)
-
其次获取子件的层级,思路与案例一的第三步大致相同,此处略
-
所有层级全部处理完成后,进行合并即可
-
输出BOM导入清单
常用函数
SUM 求和函数
SUM函数用于计算一系列数值的总和。基本语法如下:
=SUM(number1, [number2], ...)
参数说明
-
number1
:必需参数。第一个需要求和的项,可以是直接的数值、单元格引用或者包含数值的区域 -
[number2]
, ...:可选参数。后续需要求和的项,最多可以有 255 个参数
说明
-
SUM
函数可以接受多种类型的参数,包括数值、单元格引用、区域和逻辑值(TRUE 被转换为 1,FALSE 被转换为 0) -
当区域中有非数值数据时,这些数据会被忽略
-
SUM
函数能够自动扩展以适应拖拽填充柄时所选择的单元格范围 -
空单元格不会被计入总和中
案例
对10,20,30求和
=SUM(10,20,30)
对A1单元格到A10单元格求和
=SUM(A1:A10)
对A1单元格到A10单元格、C1单元格到C10单元格求和
=SUM(A1:A10,C1:C10)
混合使用
=SUM(10, A1, B1:B10)
SUMIF 单条件筛选求和
SUMIF函数用于根据指定条件对数值进行求和。基本语法如下:
=SUMIF(range, criteria, [sum_range])
参数说明
-
range
:必需参数。用于设置条件的单元格范围 -
criteria
:必需参数。定义哪些单元格将被加总的标准。它可以是数字、表达式、单元格引用或文本形式 -
[sum_range]
:可选参数。实际求和的单元格范围。如果省略此参数,则range
将同时作为sum_range
使用
说明
-
SUMIF
函数支持使用通配符 (*
和?
) 来匹配文本。其中*
表示任意数量的字符,?
表示单个字符 -
如果
sum_range
参数省略,SUMIF
函数会将range
参数中的单元格视为sum_range
,即对符合criteria
的单元格自身进行求和 -
如果
range
中没有单元格满足criteria
,则返回 0 -
如果
criteria
包含特殊字符(如=
、>
、<
等),需要将它们放在双引号内。例如,=SUMIF(A1:A10, "<=100")
-
如果
criteria
是文字或逻辑值(例如 TRUE 或 FALSE),也需要放在双引号内 -
如果
criteria
是一个单元格引用,则不需要双引号
案例
A B C 产品 销售额 数量 Apple 50 100 Banana 30 50 Apple 40 75 Orange 60 80 计算Apple产品的销售总额
=SUMIF(A2:A5, "Apple", B2:B5)
计算所有产品数量超过 50 的销售额总和
=SUMIF(C2:C5, ">50", B2:B5)
SUMIFS 多条件筛选求和
SUMIFS函数用于根据多个条件对一组数值进行求和。基本语法如下:
=SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
参数说明
-
sum_range
:必需参数。实际求和的单元格范围 -
criteria_range1
:必需参数。用于设置第一个条件的单元格范围 -
criteria1
:必需参数。定义哪些单元格将被加总的第一个标准。它可以是数字、表达式、单元格引用或文本形式 -
[criteria_range2, criteria2]
, ...:可选参数。用于设置更多条件的额外单元格范围和对应的条件
说明
-
SUMIFS
函数支持使用通配符 (*
和?
) 来匹配文本。其中*
表示任意数量的字符,?
表示单个字符 -
所有的条件都必须同时满足才能对相应的单元格进行求和
-
如果
sum_range
和任一criteria_range
的大小不一致,SUMIFS
函数将返回错误 -
如果
criteria
包含特殊字符(如=
、>
、<
等),需要将它们放在双引号内。例如,=SUMIFS(C1:C10, B1:B10, "<=100")
-
如果
criteria
是文字或逻辑值(例如 TRUE 或 FALSE),也需要放在双引号内 -
如果
criteria
是一个单元格引用,则不需要双引号
案例
计算 C1 到 C10 区域内的数值总和,前提条件是在 A1 到 A10 区域内单元格内容为 "Fruit",且在 B1 到 B10 区域内单元格的值大于 20
=SUMIFS(C1:C10, A1:A10, "Fruit", B1:B10, ">20")
计算 C1 到 C10 区域内的数值总和,前提条件是在 A1 到 A10 区域内单元格内容与D1单元格相同,且在 B1 到 B10 区域内单元格的值大于 20
=SUMIFS(C1:C10, A1:A10, D1, B1:B10, E1)
计算 C1 到 C10 区域内的数值总和,前提条件是在 A1 到 A10 区域内单元格内容含 "apple" 文本,且在 B1 到 B10 区域内单元格的值大于 20
=SUMIFS(C1:C10, A1:A10, "apple", B1:B10, ">20")
A B C D 产品 销售额 数量 地区 Apple 50 100 North Banana 30 50 South Apple 40 75 North Orange 60 80 East 计算所有 "Apple" 产品且地区为 "North" 的销售额总和
=SUMIFS(B2:B5, A2:A5, "Apple", D2:D5, "North")
计算所有产品数量超过 50 且地区为 "North" 的销售额总和
=SUMIFS(B2:B5, C2:C5, ">50", D2:D5, "North")
LEN 统计字符串长度
LEN函数用于计算文本字符串中的字符数。基本语法:
=LEN(text)
参数说明
text
:必需参数。要计算长度的文本字符串。可以是直接输入的文本字符串、单元格引用或其他函数返回的文本结果
说明
-
LEN
函数可以接受任何文本字符串作为参数 -
LEN
函数会计算文本字符串中的所有字符,包括空格和特殊字符 -
如果提供的参数不是文本类型,
LEN
函数会尝试将其转换为文本再计算长度 -
如果
text
参数为空字符串(""),LEN
函数将返回 0 -
如果
text
参数包含数字格式的日期或时间,LEN
函数将返回这些日期或时间的文本表示形式的长度 -
如果
text
参数是一个单元格引用,并且该单元格包含数字而非文本,则LEN
函数将返回该数字的文本表示形式的长度
案例
计算Hello World的长度(特殊字符、空格也会被记录在内)
=LEN("Hello World")
计算单元格中文本的长度
=LEN(A1)
LEFT 从左侧提取指定数量的字符
LEFT函数用于从文本字符串的左侧提取指定数量的字符。基本语法:
=LEFT(text, [num_chars])
参数说明
-
text
:必需参数。包含要提取字符的原始文本字符串 -
[num_chars]
:可选参数。要从文本左侧提取的字符数量。默认值为 1
说明
-
LEFT
函数可以从文本字符串的左侧提取指定数量的字符 -
如果
[num_chars]
参数省略,默认提取 1 个字符 -
如果
[num_chars]
参数为负数,LEFT
函数将返回错误 -
如果
[num_chars]
参数大于文本字符串的实际长度,LEFT
函数将返回整个文本字符串 -
如果
text
参数为空字符串(""),LEFT
函数将返回空字符串 -
如果
[num_chars]
参数为 0,LEFT
函数也将返回空字符串 -
如果
[num_chars]
参数大于text
的长度,LEFT
函数将返回整个文本字符串
案例
提取单个字符
=LEFT("Hello World")
提取多个字符
=LEFT("Hello World", 5)
提取单元格中的字符
=LEFT(A1, 3)
提取单元格中全部字符
=LEFT(A1)
RIGHT 从右侧提取指定数量的字符
RIGHT函数用于从文本字符串的右侧提取指定数量的字符。基本语法:
=RIGHT(text, [num_chars])
参数说明
-
text
:必须参数,包含要提取字符的文本字符串 -
[num_chars]
:可选参数,指定从文本字符串末尾开始要提取的字符数。如果省略,则默认为1
说明
-
RIGHT
函数可以从文本字符串的右侧提取指定数量的字符 -
如果
[num_chars]
参数省略,默认提取 1 个字符 -
如果
[num_chars]
参数为负数,RIGHT
函数将返回错误 -
如果
[num_chars]
参数大于文本字符串的实际长度,RIGHT
函数将返回整个文本字符串 -
如果
text
参数为空字符串(""),RIGHT
函数将返回空字符串 -
如果
[num_chars]
参数为 0,RIGHT
函数也将返回空字符串 -
如果
[num_chars]
参数大于text
的长度,RIGHT
函数将返回整个文本字符串
案例
提取单个字符
=RIGHT("Hello World")
提取多个字符
=RIGHT("Hello World", 5)
提取单元格中的字符
=RIGHT(A1, 3)
提取单元格中全部字符
=RIGHT(A1)
MID 从指定位置提取指定数量的字符
MID函数用于从文本字符串中的指定位置开始提取指定数量的字符。基本语法:
=MID(text, start_num, num_chars)
参数说明
-
text
:必需参数。包含要提取字符的原始文本字符串 -
start_num
:必需参数。要开始提取字符的位置(索引)。索引从 1 开始 -
num_chars
:必需参数。要提取的字符数量
说明
-
MID
函数可以从文本字符串的任意位置开始提取指定数量的字符 -
如果
start_num
参数大于文本字符串的实际长度,MID
函数将返回空字符串 -
如果
start_num
参数为负数,MID
函数将返回错误 -
如果
num_chars
参数为负数,MID
函数将返回错误 -
如果
num_chars
参数大于从start_num
开始到文本字符串结尾的字符数量,MID
函数将返回从start_num
开始到文本字符串结尾的所有字符 -
如果
text
参数为空字符串(""),MID
函数将返回空字符串 -
如果
start_num
参数为 0,MID
函数将返回空字符串 -
如果
num_chars
参数为 0,MID
函数也将返回空字符串 -
如果
start_num
参数加上num_chars
超出了text
的长度,MID
函数将返回从start_num
开始到文本字符串结尾的所有字符
案例
提取指定位置单个字符(从第一个字符开始提取一个字符)
=MID("Hello World", 1, 1)
提取指定位置的多个字符(从第七个字符开始提取五个字符)
=MID("Hello World", 7, 5)
提取单元格中的文本(从第三个字符开始提取三个字符)
=MID(A1, 3, 3)
提取单元格中的全部剩余文本
=MID(A1, 7, LEN(A1)-6)
TRIM 去空格
TRIM函数用于删除文本字符串首尾的空格,并将内部连续的空格压缩为单个空格。基本语法:
=TRIM(text)
参数说明
text
:必需参数。要清理空格的原始文本字符串
说明
-
TRIM
函数可以接受任何文本字符串作为参数 -
TRIM
函数会删除文本字符串首尾的空格,并将内部连续的空格压缩为单个空格 -
如果提供的参数本身不包含多余的空格,
TRIM
函数将返回原样 -
如果
text
参数为空字符串(""),TRIM
函数将返回空字符串 -
TRIM
函数不会改变文本字符串中的其他字符,只处理空格 -
TRIM
函数不会删除文本字符串中的非空格字符
案例
清理直接输入的文本 → 结果将是 "Hello World"
=TRIM(" Hello World ")
清理单元格中的文本 → 如果 A1 单元格包含 " Hello World ",结果将是 "Hello World"
=TRIM(A1)
清理包含特殊字符的文本 → 结果将是 "Hello World!"
=TRIM(" Hello World! ")
MAX 取得最大值
MAX函数用于找出一组数值中的最大值。基本语法:
=MAX(number1, [number2], ...)
参数说明
-
number1
: 必需参数。第一个数值或数值范围 -
[number2], ...
: 可选参数。其他数值或数值范围
说明
-
MAX
函数可以接受任何数值或数值范围作为参数 -
MAX
函数可以接受多个参数,返回所有参数中的最大值 -
如果提供的参数中包含文本或逻辑值
TRUE
和FALSE
,这些值将被忽略 -
如果所有参数都是空单元格或文本,
MAX
函数将返回错误值#DIV/0!
-
如果提供的参数中包含逻辑值
TRUE
和FALSE
,这些值将被忽略,除非它们直接作为参数输入 -
MAX
函数可以处理多个参数,包括单元格引用、常量和数组
案例
找出输入值中的最大值
=MAX(10, 20, 30, 40)
找出单元格中的最大值
=MAX(A1:A10)
找出多个范围内的最大值
=MAX(A1:A10, B1:B10)
MAXIFS 在特定条件下找出最大值
MAXIFS函数用于找出一组数值中的最大值,同时满足一个或多个条件。参数说明:
=MAXIFS(max_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
参数说明
-
max_range
: 必需参数。包含要找出最大值的数值范围 -
criteria_range1
: 必需参数。第一个条件范围,用于应用criteria1
-
criteria1
: 必需参数。应用于criteria_range1
的条件 -
[criteria_range2, criteria2], ...
: 可选参数。额外的条件范围及其对应的条件
说明
-
MAXIFS
函数可以接受多个条件范围及其对应的条件 -
MAXIFS
函数可以处理复杂的条件,包括文本、数字和逻辑表达式 -
如果提供的条件范围中没有符合所有条件的值,
MAXIFS
函数将返回错误值#DIV/0!
-
如果所有参数都是空单元格或文本,
MAXIFS
函数将返回错误值#DIV/0!
-
如果提供的条件范围中没有符合所有条件的值,
MAXIFS
函数将返回错误值#DIV/0!
-
MAXIFS
函数可以处理多个参数,包括单元格引用、常量和数组
案例
找出A1:A10单元格中对应于B1:B10单元格,小于10的最大值
=MAXIFS(A1:A10, B1:B10, "<10")
找出 A1:A10 中对应于 B1:B10 大于 10 且 C1:C10 小于 20 的最大值
=MAXIFS(A1:A10, B1:B10, ">10", C1:C10, "<20")
A B C 10 5 20 20 10 15 30 15 10 40 20 5 30 25 Text 找出 A 列中满足 B 列大于 10 且 C 列小于 20 的最大值( "Text" 不会被考虑为数值,所以
MAXIFS
函数将忽略它)=MAXIFS(A1:A4, B1:B4, ">10", C1:C4, "<20")
找出 A 列中满足 B 列大于 10 的最大值
=MAXIFS(A1:A4, B1:B4, ">10")
MIN 取得最小值
MIN函数用于找出一组数值中的最小值。基本语法:
=MIN(number1, [number2], ...)
参数说明
-
number1
: 必需参数。第一个数值或数值范围 -
[number2], ...
: 可选参数。其他数值或数值范围
说明
-
MIN
函数可以接受任何数值或数值范围作为参数 -
MIN
函数可以接受多个参数,返回所有参数中的最小值 -
如果提供的参数中包含文本或逻辑值
TRUE
和FALSE
,这些值将被忽略 -
如果所有参数都是空单元格或文本,
MIN
函数将返回错误值#DIV/0!
-
如果提供的参数中包含逻辑值
TRUE
和FALSE
,这些值将被忽略,除非它们直接作为参数输入 -
MIN
函数可以处理多个参数,包括单元格引用、常量和数组
案例
找出输入值中的最小值
=MIN(10, 20, 30, 40)
找出单元格中的最小值
=MIN(A1:A10)
找出多个范围内的最小值
=MIN(A1:A10, B1:B10)
MINIFS 在特定条件下找出最小值
MINIFS函数用于找出一组数值中的最小值,同时满足一个或多个条件。基础语法:
=MINIFS(min_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)
参数说明
-
min_range
: 必需参数。包含要找出最小值的数值范围 -
criteria_range1
: 必需参数。第一个条件范围,用于应用criteria1
-
criteria1
: 必需参数。应用于criteria_range1
的条件 -
[criteria_range2, criteria2], ...
: 可选参数。额外的条件范围及其对应的条件
说明
-
MINIFS
函数可以接受多个条件范围及其对应的条件 -
MINIFS
函数可以处理复杂的条件,包括文本、数字和逻辑表达式 -
如果提供的条件范围中没有符合所有条件的值,
MINIFS
函数将返回错误值#DIV/0!
-
如果所有参数都是空单元格或文本,
MINIFS
函数将返回错误值#DIV/0!
-
如果提供的条件范围中没有符合所有条件的值,
MINIFS
函数将返回错误值#DIV/0!
-
MINIFS
函数可以处理多个参数,包括单元格引用、常量和数组
案例
找出A1:A10单元格中对应于B1:B10单元格,大于10的最小值
=MINIFS(A1:A10, B1:B10, ">10")
找出 A1:A10 中对应于 B1:B10 大于 10 且 C1:C10 小于 20 的最小值
=MINIFS(A1:A10, B1:B10, ">10", C1:C10, "<20")
A B C 10 5 20 20 10 15 30 15 10 40 20 5 30 25 Text 找出 A 列中满足 B 列大于 10 且 C 列小于 20 的最小值( "Text" 不会被考虑为数值,所以
MINIFS
函数将忽略它)=MINIFS(A1:A4, B1:B4, ">10", C1:C4, "<20")
找出 A 列中满足 B 列大于 10 的最小值
=MINIFS(A1:A4, B1:B4, ">10")
ISNUMBER 判断一个值是否为数字
ISNUMBER函数用于检查一个值是否为数字。基本语法:
=ISNUMBER(value)
参数说明
value
: 必需参数。要测试的值或单元格引用
说明
-
ISNUMBER
函数可以接受任何类型的值作为参数 -
ISNUMBER
函数返回 TRUE 如果参数是数字,否则返回 FALSE -
ISNUMBER
函数可以用于验证公式或函数的结果是否为预期的数字类型 -
ISNUMBER
函数会返回 FALSE 如果value
参数是文本字符串,即使该文本看起来像数字(例如 "123") -
ISNUMBER
函数会返回 FALSE 如果value
参数是错误值,例如#N/A
或#DIV/0!
-
ISNUMBER
函数可以用于数组公式中,以测试数组中所有元素是否为数字
案例
测试直接输入的值
=ISNUMBER(123)
测试单元格中的数值
=ISNUMBER(A1)
测试公式结果
=ISNUMBER(SUM(A1:A5))
ISBLANK 判断单元格是否为空
ISBLANK函数用于判断单元格是否为空。基本语法:
=ISBLANK(reference)
参数说明
reference
: 必需参数。要测试的单元格或单元格区域
说明
-
ISBLANK
函数仅接受单元格引用作为参数 -
ISBLANK
函数返回 TRUE 如果单元格完全为空,即没有任何数据或公式 -
ISBLANK
函数返回 FALSE 如果单元格包含任何类型的数据,包括公式、错误值或空白字符串 "" -
ISBLANK
函数不会检查单元格格式或注释 -
如果单元格包含公式但公式结果为空,
ISBLANK
函数仍会返回 FALSE,因为它识别到单元格中有公式存在 -
ISBLANK
函数可以用于条件格式、数据有效性检查、以及动态数组公式中,以测试和处理空单元格
案例
测试单个单元格是否为空
=ISBLANK(A1)
测试一片区域的单元格是否为空
=ISBLANK(A1:B5)
VLOOKUP 垂直查找引用函数
VLOOKUP函数用于在表格或范围的第一列查找特定值,并返回同一行中指定列的值。通常在需要根据一个关键值查找并返回相关联的数据时使用。基本语法:
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
参数说明
-
lookup_value
: 必需参数。要查找的值。它可以是一个值或对包含查找值的单元格的引用 -
table_array
: 必需参数。包含数据的表格或范围。lookup_value
应该在table_array
的第一列中 -
col_index_num
: 必需参数。table_array
中包含返回值的列号。列号为 1 表示返回table_array
的第一列的值,2 表示第二列的值,依此类推 -
[range_lookup]
: 可选参数。一个逻辑值,指明函数应执行精确匹配还是近似匹配。如果为 TRUE 或省略,则执行近似匹配;如果为 FALSE,则执行精确匹配
说明
-
VLOOKUP
函数只能在table_array
的第一列中进行查找 -
当执行近似查找时,
table_array
的第一列必须排序,否则结果可能不准确 -
如果找不到
lookup_value
,VLOOKUP
函数将返回错误值#N/A
-
确保
lookup_value
在table_array
的第一列中 -
如果
range_lookup
参数为 FALSE 或省略,且lookup_value
不存在于table_array
中,VLOOKUP
将返回错误值#N/A
-
当执行近似查找时,如果
lookup_value
小于table_array
第一列中的最小值,VLOOKUP
也将返回错误值#N/A
案例
A B Product Price Apple $2.50 Banana $0.75 Cherry $3.00 查找 "Banana" 的价格
=VLOOKUP("Banana", A2:B4, 2, FALSE)
查找整个表格中产品的价格
=VLOOKUP(A2:A4, A2:B4, 2, FALSE)
查找一个不存在的产品的价格(结果是
#N/A
)=VLOOKUP("Orange", A2:B4, 2, FALSE)
XLOOKUP 查找引用函数
XLOOKUP函数用于在表格或范围中查找特定值,并返回与之相关联的另一个值。通常在需要查找数据并返回相关联的信息时使用,特别是在需要更灵活和强大查找选项的情况下。基本语法:
=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
参数说明
-
lookup_value
: 必需参数。要查找的值 -
lookup_array
: 必需参数。包含查找值的范围或数组 -
return_array
: 必需参数。与lookup_array
关联的范围或数组,从中返回查找结果 -
[if_not_found]
: 可选参数。如果没有找到匹配项,此参数定义了返回的值。如果省略,默认返回#N/A
错误 -
[match_mode]
: 可选参数。定义了匹配模式-
0 或省略:精确匹配
-
-1:查找最大的等于或小于
lookup_value
的值(近似匹配) -
1:查找最小的等于或大于
lookup_value
的值(近似匹配)
-
-
[search_mode]
: 可选参数。定义了查找的方向-
1 或省略:从左到右(或从上到下)
-
-1:从右到左(或从下到上)
-
2:二分查找,要求
lookup_array
排序 -
-2:二分查找,从后向前,要求
lookup_array
排序。
-
说明
-
XLOOKUP
函数可以执行精确匹配和近似匹配 -
它可以处理多种查找方向,包括从左到右、从右到左、从上到下和从下到上
-
它允许定义未找到匹配项时的返回值
-
XLOOKUP
函数在查找未找到的情况下返回的错误可以自定义,而不必总是返回#N/A
-
确保
lookup_array
正确排序,特别是当你使用近似匹配和二分查找模式时 -
如果
lookup_array
和return_array
长度不一致,XLOOKUP
函数可能会返回错误结果
案例
A B Apple $2.50 Banana $0.75 Cherry $3.00 查找 "Banana" 的价格
=XLOOKUP("Banana", A2:A4, B2:B4)
找一个不存在的产品的价格,并返回默认值
=XLOOKUP("Orange", A2:A4, B2:B4, "Product not found")
近似查找,返回最接近但不大于查找值的项
=XLOOKUP(15, A2:A10, B2:B10, NA(), -1)