Google Sheets:如何根据单元格值返回对应命名区域名称?
在Google Sheets中查找指定值所在的命名区域名称
可以实现这个需求,下面是可直接使用且支持嵌入其他公式的方案:
核心公式
假设要查找的值位于单元格A1,使用以下公式返回对应的命名区域名称:
=TEXTJOIN(", ", TRUE, FILTER(NAMEDRANGES()[Name], BYROW(NAMEDRANGES()[RefersTo], LAMBDA(r, NOT(ISERROR(XMATCH(A1, INDIRECT(r))))))))
公式拆解
NAMEDRANGES():返回当前表格所有命名区域的数据集,包含Name(区域名称)和RefersTo(区域引用地址)两个字段。BYROW(..., LAMBDA(r, NOT(ISERROR(XMATCH(A1, INDIRECT(r)))))):遍历每个命名区域的引用地址,通过INDIRECT解析为实际单元格范围,再用XMATCH检查目标值是否存在,返回布尔值数组标记匹配结果。FILTER(NAMEDRANGES()[Name], ...):筛选出所有包含目标值的命名区域名称。TEXTJOIN(", ", TRUE, ...):若多个区域包含目标值,用逗号分隔返回结果;仅单个匹配时直接返回名称。
嵌入其他公式的用法
如果目标值不是来自固定单元格,而是其他公式的计算结果,直接替换A1为对应公式即可。例如,查找B2+C2计算结果所在的命名区域:
=TEXTJOIN(", ", TRUE, FILTER(NAMEDRANGES()[Name], BYROW(NAMEDRANGES()[RefersTo], LAMBDA(r, NOT(ISERROR(XMATCH(B2+C2, INDIRECT(r))))))))
补充说明
- 若目标值未在任何命名区域中找到,公式会返回空值,可添加
IFERROR处理提示信息:=IFERROR(TEXTJOIN(", ", TRUE, FILTER(NAMEDRANGES()[Name], BYROW(NAMEDRANGES()[RefersTo], LAMBDA(r, NOT(ISERROR(XMATCH(A1, INDIRECT(r)))))))), "未找到匹配的命名区域") - 确保所有命名区域的引用地址格式有效,
INDIRECT才能正确解析范围。
内容的提问来源于stack exchange,提问作者user15250594
相关产品推荐
相关产品推荐

