今天跟大家分享一个比较常用的一对多查询的数组公式,希望大家都能掌握。
F2:F20单元格中的公式为:
=IFERROR(INDEX(B:C,SMALL(IF(ISNUMBER(FIND($E$2,$B$1:$B$20)),ROW(B1:B20)),ROW(B1:B20)),2),"")
注意数组公式需按:Ctrl+shift+enter三键才能得出正确的结果。
公式1:
=FIND($E$2,$B$1:$B$20)
其结果为:
{#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;4;4;4;4;4;4;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!},即查找E2字符串在B1:B20字符中的起始位置。
公式2:
=ISNUMBER(FIND($E$2,$B$1:$B$20))
其结果为:
{FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE},即判断公式1的结果是否为数值,是数值就返回true,否则返回false
公式3:
=(IF(ISNUMBER(FIND($E$2,$B$1:$B$20)),ROW(B1:B20)))
其结果为:
{FALSE;FALSE;FALSE;FALSE;FALSE;6;7;8;9;10;11;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE},即判断公式2结果是否为真(true),为真(true)就返回所在单元格的行号
公式4:
=SMALL(IF(ISNUMBER(FIND($E$2,$B$1:$B$20)),ROW(B1:B20)),ROW(B1:B20))其结果为:
{6;7;8;9;10;11;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!;#NUM!},即将公式3的结果从小到大排序
公式5:
=IFERROR(INDEX(B:C,SMALL(IF(ISNUMBER(FIND($E$2,$B$1:$B$20)),ROW(B1:B20)),ROW(B1:B20)),2),""),即提取B:C区域中第6、7、8、9、10、11行,第2列的数据,并将错误值转换为空值
自动添加边框线的步骤为:
选中F2:F20单元格区域----开始-----条件格式----新建规则------为其设置如下图中的公式-----格式-----设置好边框线-----即可为显示的结果自动添加上边框