我有两列。前 A 列汤姆; Hema 和 B 栏的 Tom。所以在 C 列中我需要一个公式,如果 B 中没有 Hema,它应该显示 hema 的名字

问题描述 投票:0回答:2

我有 2 列。前 A 列汤姆; Hema(在同一单元格中)和 B 列 Tom。因此,在 C 列中,我需要一个公式,如果 B 中不存在 Hema,则它应该在 C 列中显示 hema 的名称。在 A 列中可以有多个名称和分号作为区分符。需要将 A 列与 B 列匹配,如果 A 中存在的名称在 B 中不存在,则在 C 中给出名称。名称可以是多个

我需要一个公式或任何其他可能的方法

excel excel-formula
2个回答
0
投票

这是实现所需输出的一种方法:


• 单元格中使用的公式 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()
    函数返回以分号分隔的单个单元格值。


0
投票

做一些假设: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"))

希望有帮助。我想有人可以想出一个更短的版本。

© www.soinside.com 2019 - 2024. All rights reserved.