如果单元格包含范围中的项目并且满足范围中其他列中的条件,则返回值

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

我希望在我的鸟类研究中得到进一步的帮助。 每个人都非常有帮助,我正在采纳你们所有的建议,这确实帮助我解决了 6500 多个案例!

这是我的新困境:我想检查一个单元格(每种情况的诊断),看看它是否包含一系列项目(所有诊断)中的任何字符串,并且还标记为“Y”作为限定符(震惊,在此例如)对于范围内的该项目。

我已经尝试将

=IF(SUMPRODUCT(--ISNUMBER(SEARCH($B,D2:D4)))>0,"Y","N")
放入 $C 中,这已经让我成功了一半,但我需要第二个限定符,但我似乎无法自己完成。

在此示例中,B 列是搜索列,D 列是范围,E 列是范围的限定符,C 列是所需的输出。我更愿意这样做而无需将数据转换为表格。

案例 每种情况的诊断 期望的输出 所有诊断(范围) 冲击(范围)
1 肺部休克;缺氧 震惊
2 震惊 肺部休克
3 肺部休克 缺氧 N
4 N
5 缺氧 N
excel-formula
2个回答
0
投票

这是您可以尝试的一种方法:

enter image description here


=IF(OR(IFERROR(SEARCH($D$2:$D$4,TEXTSPLIT(B2,"; ")),0)*($E$2:$E$4="Y")),"Y","N")

或者,如果您想返回整个数组,那么:

=MAP(B2:B6,LAMBDA(x,IF(OR(IFERROR(SEARCH(D2:D4,TEXTSPLIT(x,"; ")),0)*(E2:E4="Y")),"Y","N")))

可以使用

TEXT()
函数返回
Y
N
以及自定义格式,如上一个查询:

=TEXT(N(OR(IFERROR(SEARCH($D$2:$D$4,TEXTSPLIT(B2,"; ")),0)*($E$2:$E$4="Y"))),"[=1]\Y;\N")

此外,如果适用,可以利用 MS365 Office Insiders 中提供的新功能,

TRIMRANGE()
或其特性。

=LET(
     _Search, DROP(B.:.B,1),
     _Range, DROP(D.:.E,1),
     MAP(_Search,LAMBDA(x,
     IF(OR(IFERROR(SEARCH(TAKE(_Range,,1),TEXTSPLIT(x,"; ")),0)*
          (DROP(_Range,,1)="Y")),"Y","N"))))


0
投票
  • 使用
    XMATCH
  • 对“所有诊断”进行排序以便更快地查找
  • ;
    '
    拆分每个诊断条目并查找
  • 至少有一个匹配如果
    SUM(--ISNUMBER(XMATCH(TRIM(TEXTSPLIT(d_e, {",",";"})), all_diag
    > 0

输入

C2
(并调整范围以匹配您的数据):

=LET(
    all_diag, SORT(TOCOL(TRIM(D2:D100), 1)),
    diag_for_each, B2:B100, qualified, E2:E100 = "Y",
    includes_diag, MAP(diag_for_each, LAMBDA(d_e,
            IF(ISBLANK(d_e), 0,
                SUM(--ISNUMBER(XMATCH(TRIM(TEXTSPLIT(d_e, {",",";"})), all_diag, , 2)))))),
    IFS(ISBLANK(diag_for_each), "", includes_diag * qualified, "Y", TRUE, "N")
)

Result

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