以下是对在 Excel 中一对多查询方法的详细解析:
一、整体公式及操作步骤
在 Excel 中进行一对多查询可以使用公式=INDEX(A:A,SMALL(IF($A$2:$A$18=$G$2,ROW($2:$18),4^8),ROW(A1)))&""
,这是一个数组公式,需要按三键结束,然后向右、向下填充。
二、公式解析
IF($A$2:$A$18=$G$2,ROW($2:$18),4^8)
部分:- 作用是返回符合查询条件数据的行号数组。如果条件满足(即$AA区域中的值等于查询条件所在单元格G$2 的值),则返回 ROW ($2:$18) 的行号;否则返回 4 的 8 次方(65536),这个非常大的行可以看作是一个空行。
- 例如,返回的结果可能是
{2;65536;65536;65536;65536;65536;65536;65536;10;65536;12;65536;65536;65536;65536;17;65536}
。
SMALL(IF($A$2:$A$18=$G$2,ROW($2:$18),4^8),ROW(A1))
部分:- 由于前面分析得知 IF 部分返回的是满足条件行号的数组,那么通过 SMALL 函数就可以从小到大提取出满足条件的行号。
ROW(A1))
部分作为 SMALL 函数的第二参数,将公式向下填充的时候就会依次提取最小值、次小值、第三小的值等。
INDEX 函数部分
:INDEX(数据区域,行号,列号)
,INDEX 函数的第一个参数是返回数据的区域(这里是 A:A,表示 A 列),第二个参数是返回数据的行号(已经通过 SMALL 函数获取),第三个参数是返回数据的列(如果只有一列,可以为空)。
&""
部分:- 在公式的末尾连接上一个空字符,作用是消除在公式中空白处出现的 0 值。
评论 (0)