我有 2 列。前 A 列汤姆; Hema(在同一单元格中)和 B 列 Tom。因此,在 C 列中,我需要一个公式,如果 B 中不存在 Hema,则它应该在 C 列中显示 hema 的名称。在 A 列中可以有多个名称和分号作为区分符。需要将 A 列与 B 列匹配,如果 A 中存在的名称在 B 中不存在,则在 C 中给出名称。名称可以是多个
我需要一个公式或任何其他可能的方法
这是实现所需输出的一种方法:
• 单元格中使用的公式 C1
=MAP(A1:A2,B1:B2,LAMBDA(x,y,
LET(z, TEXTSPLIT(x,"; "),
TEXTJOIN("; ",1,FILTER(z,ISERR(SEARCH(z,"; "&y&"; ")),"")))))
MAP()
函数映射数组中的每个值,并传递自定义 LAMBDA()
计算以获得所需的输出。LET()
函数使用TEXTSPLIT()
函数创建变量,该变量将被使用两次,方便阅读步骤,并通过避免重复冗余代码来减少工作量。TEXTSPLIT()
函数使用分隔符按列拆分列A
值,该分隔符在SEARCH()
函数中进一步用作列B
值中的[find_text]参数。
TRUE
函数转换为 ISERR()
,这是因为这些 TRUE
是我们需要的必需输出。FILTER()
内以返回 TRUE
值,最后使用 TEXTJOIN()
函数返回以分号分隔的单个单元格值。做一些假设:A 列中最多有 2 个名称,分号始终是分隔符。
=IFERROR( IF(TEXTBEFORE(XLOOKUP(B1,A1,A1,"",1),";",,,,"")= B1 , TEKSTAFTER(A1,";",,,,"") , TEKSTAFTER(A1,";",,,,"") , IF(TRIM(TEXTAFTER(XLOOKUP(B1,A1,A1,"",1),";",,,,""))=B1;TEXTAFTER(A1,";",,,,""),"No Match"))
希望有帮助。我想有人可以想出一个更短的版本。