Excel 函数与公式 -- 内容搜索(十)
- 2026-11-06 12:45:37
Excel 函数与公式 -- 内容搜索(十)前文我们讨论了 MATCH,今天来看看 MATCH 的升级版——XMATCH。 XMATCH 函数 XMATCH 的一般格式: 
其中: 下面来看例子。 例1. XMATCH 用法示例 
图1 XMATCH 用法示例 我们可以用 XMATCH 对左侧的数据表进行各种查询。 E2 单元格的公式如 F2 所示,目的示于 G2。因为要找的 D2 单元格的内容位于 A2:A6 列向量的第二行,因此 XMATCH 返回 2。 E3 单元格的公式示于 F3,目的示于 G3。此时要对 A2:A6 作通配符搜索,因为没有指定 match_mode 参数,所以出错。 E4 的公式示于 F4,因为这时正确设置了 XMATCH 函数的 match_mode 参数,因此 XMATCH 正确地返回了匹配结果:XMATCH 返回第一个匹配的结果,因为 Apple 中含有 p,因此 XMATCH 返回 Apple 所在的单元格在 A2:A6 列向量中的位置 1。 E5 的公式示于 F5,作用示于 G5。XMATCH 返回 #VALUE! 错误说明:XMATCH 不支持在二分查找中进行通配符搜索。 例2. XMATCH 用法示例2 
图2 XMATCH 用法示例2 在这个例子中,数据表经过了排序,可以进行二分查找了。 E9 的公式示于 F9,G9 说明了公式用途。 E10 的公式示于 F10,G10 说明了公式用途。这个公式说明:XMATCH 在匹配时不区分大小写,这一点与 MATCH 相同。 E11 的公式示于 F11,G11 给出了公式说明。XMATCH 返回 5 说明:XMATCH 返回匹配单元格在列向量中的位置,而非匹配单元格在整个数据表中的位置。Pear 在整个数据表中位于 A13 单元格,但在 A9:A13 列向量中处于第 5 行,因此 XMATCH 返回 5。 E12 和 E13 说明:XMATCH 不仅支持对英文的通配符查询,也支持对中文的通配符查询。 E14 的公式示于 F14,说明在 G14。在这个公式中,XMATCH 的 search_mode 参数的值为 -1,指示 XMATCH 在列向量 A9:A13 中从结尾向开头反向搜索。如果正向搜索,将返回 Apple,反向搜索则返回 Grape。 相比 MATCH,XMATCH 在以下方面进行了功能增强: 同 MATCH 一样,XMATCH 也仅仅是返回内容所在单元格的行或列,因此,为了得到所要的结果,还得与 INDEX 结合起来共同作用才行。下面的例子展示了这一点。 例3. XMATCH 与 INDEX 共同作用,实现一个小型的数据表查询面板。 
图3 XMATCH 与 INDEX 相结合 右侧的查询面板是对左侧的数据表的产品进行查询,利用多个 INDEX/XMATCH 实现。 H2:=INDEX(A2:A24, XMATCH(H1, D2:D24)) H3:=INDEX(B2:B24, XMATCH(H1, D2:D24)) H5:=INDEX(C2:C24, XMATCH(H1, D2:D24)) H6:=INDEX(D2:D24, XMATCH(H1, D2:D24)) H8:=INDEX(W2:E24, XMATCH(H1, D2:D24)) 相关阅读 Excel 函数与公式 -- 内容搜索(九) Excel 函数与公式 -- 内容搜索(八) Excel 函数与公式 -- 内容搜索(七)

lookup_value:要查找的值。 lookup_array:搜索区域,数组或一组单元格组成的区域。 match_mode:匹配模式,可选参数。取值如下: 0 —— 精确匹配,默认值。 -1 —— 精确匹配,或小于查找值的最大者。 1 —— 精确匹配,或大于查找值的最小者。 2 —— 通配符匹配,*、?、~,意义如下: *:匹配多个任意字符。 ?:匹配 1 个任意字符。 ~:用于 *、? 前面,去除这两个字符的元字符含义,使其变为普通字符,譬如:~* 精确匹配文本中的 * 号,~? 精确匹配文本中的 ? 号。 search_mode:搜索模式,可选参数,取值如下: 1 —— 从开头到结尾顺序搜索,默认值。 -1 —— 从结尾到开头反向搜索。 2 —— 执行二分搜索,要求搜索区域以升序排序,否则会返回不正确的结果。 -2 —— 执行二分搜索,要求搜索区域以降序排序,否则会返回不正确的结果。


XMATCH 支持反向搜索。对于大型未排序数据表,如果要搜索的内容靠近末端,使用反向搜索要快得多。 XMATCH 支持二分查找。对于大型已排序数据表,使用二分查找,比逐项扫描,性能要高很多。

本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。