预订数据中特定房间/子单元组合查找公式求助
解决方案:无需拆分数据的查找公式
针对合并子单元字段的查找需求,不需要拆分2000+条记录,直接用Excel函数就能实现快速查找。以下分两种场景给出具体公式:
场景1:Excel 365/2021(支持动态数组函数)
假设数据结构为:
Sheet1中A列是合并的「房间/子单元」字段(示例:{6045} {B},{6045} {AB})- B列是对应的RES编号字段(示例:
RES1234,RES5678)
要查找{6045} {B}所在行中,对应{6045} {AB}的RES编号,使用公式:
=LET( 目标子单元, "{6045} {B}", 匹配子单元, "{6045} {AB}", 筛选行, FILTER(Sheet1!$A:$B, ISNUMBER(SEARCH(目标子单元, Sheet1!$A:$A))), 子单元列表, TEXTSPLIT(INDEX(筛选行, 1, 1), ","), RES列表, TEXTSPLIT(INDEX(筛选行, 1, 2), ","), INDEX(RES列表, MATCH(匹配子单元, 子单元列表, 0)) )
公式逻辑:
LET定义变量,简化公式结构;FILTER筛选出包含目标子单元的行(默认唯一匹配,多匹配场景可调整筛选条件);TEXTSPLIT将合并的子单元、RES字段拆分为独立列表;INDEX+MATCH定位目标子单元对应的RES编号。
场景2:旧版Excel(不支持动态数组)
若无法使用动态数组函数,使用以下数组公式(输入后按Ctrl+Shift+Enter触发):
=TRIM(MID(SUBSTITUTE(INDEX(Sheet1!$B:$B, MATCH(TRUE, ISNUMBER(SEARCH("{6045} {B}", Sheet1!$A:$A)), 0)), ",", REPT(" ", 100)), (MATCH("{6045} {AB}", SUBSTITUTE(INDEX(Sheet1!$A:$A, MATCH(TRUE, ISNUMBER(SEARCH("{6045} {B}", Sheet1!$A:$A)), 0)), ",", REPT(" ", 100)), 0)-1)*100+1, 100))
公式逻辑:
- 通过
MATCH+SEARCH定位包含目标子单元的行; SUBSTITUTE+REPT将逗号分隔内容替换为固定长度空格,方便用MID提取对应位置的RES;TRIM去除多余空格,得到最终RES编号。
内容的提问来源于stack exchange,提问作者John Anderson
相关产品推荐
相关产品推荐

