Excel 如果列部分包含字符串并且匹配同一行包含不同的值

Excel 如果列部分包含字符串并且匹配同一行包含不同的值

我需要一些帮助来计算 TRUE/FALSE 部分,我已经手动填写了它以显示我想要实现的结果。

本质上,我需要一个IF()语句,如果 Sheet 1 上的标题和 ItemName 匹配,则 Sheet 2 上的语句为 TRUE。

第 1 页 - 数据

学校 项目名
blabla sch1 网址:
blabla sch1 com.456.def
blabla sch2 com.xxx.abc
blabla sch2 com.456.def

第 2 页 - CALC

项目名 sch1 sch2 sch3
网址: 真的 错误的 错误的
com.xxx.abc 错误的 真的 错误的
com.456.def 真的 真的 错误的
网址: 真的 错误的 错误的

答案1

解决此问题的一种更通用的方法也是在学校模式可能略有不同的情况下适用的方法,即采用IF()SUMPRODUCT()类型方法。假设您的数据存储在工作表A1:B5的范围内,并且您在工作表的DATA范围内执行计算,则如下所示:A1:D5CALCs

首先,您可以使用 ; 返回唯一的 ItemNames =UNIQUE(DATA!$B$1:$B$5),因为目前您的输出中有两次“com.123.abc”。如果这是有意为之,您可以跳过此步骤并将 ItemNames 复制到工作表中CALCs。接下来,输入B1:D1唯一的学校。

B2您需要在单元格中输入以下公式,然后将其分别复制到其他单元格:

=IF(SUMPRODUCT(--(ISNUMBER(SEARCH(B$1,DATA!$A$2:$A$5)))*
(ISNUMBER(SEARCH($A2,DATA!$B$2:$B$5)))), TRUE, FALSE)

此函数使用SEARCH()andISNUMBER()函数检查 ItemName 和 SchoolName 是否分别在 ItemNames 和 SchoolNames 列表中找到。--使用双重否定运算符将结果 TRUE/FALSE 转换为 1 和 0,作为函数的输入SUMPRODUCT(),然后使用该输入将两个部分的结果合并。如果总和大于零,则返回 TRUE,否则返回 FALSE。

您提供的数据的输出如下所示:

项目名 sch1 sch2 sch3
网址: 真的 错误的 错误的
com.456.def 真的 真的 错误的
com.xxx.abc 错误的 真的 错误的

现在,我们来看看这种方法的好处以及它如何更加通用。假设您输入的学校数据不是那么清晰;这种差异可能表现为多种形式,例如,用点代替空格、没有空格、用连字符代替空格以及末尾有附加内容等。

学校 项目名
blabla sch1 网址:
blabla.sch1 com.456.def
blablasch2 com.xxx.abc
blabla-sch2asdf com.456.def

即使在这种情况下,结果也是相同的,并且看起来与之前的表格类似:

项目名 sch1 sch2 sch3
网址: 真的 错误的 错误的
com.456.def 真的 真的 错误的
com.xxx.abc 错误的 真的 错误的

答案2

只需将单元格值与一些难以从键盘输入的字符连接起来即可(例如,标签= CHAR(9)),而不是两个搜索列,您将获得一个。在一列中,MATCH()如果您通过相同的分隔符连接它们,通常将能够找到所需的值对。哦,是的,如果未找到值对,则将MATCH()返回#N/A错误。该ISNUMBER()函数将搜索结果转换为非常真的错误的你需要的。

由于 MATCH() 知道什么是“通配符”,因此公式非常简单:

{=ISNUMBER(MATCH("*"&B$1:D$1&CHAR(9)&$A2:$A5;DATA!$A$1:$A$5&CHAR(9)&DATA!$B$1:$B$5;0))}

我和@karl 的考虑是一样的——数据范围是DATA!$A$1:$B$5,计算是基于B$1:D$1和中的值A2:$A5

相关内容