EXCEL公式-如果其他三列之一的值相同,则返回true

时间:2018-09-06 18:17:59

标签: excel excel-formula formula

我有一个包含多个工作表的Excel数据库。这是一张包含常规数据的表格(例如电子邮件等),然后我还有另一张表格,其中包含订阅了新闻通讯的电子邮件地址(电子邮件在第一列中只是一行一行地显示)。在第一个“常规”工作表中,我有三列,每行都有电子邮件地址。我需要检查新闻稿工作表中的三列中是否有电子邮件-是否订阅了某人-如果是的话,我想将电子邮件放入其旁边的一列中,或者只写订阅的内容进入它。

我已经有一个公式:=IFERROR(VLOOKUP($L2, Newsletter!A:A, 1, FALSE),""),但这仅在电子邮件仅存储在一列中时有效。

这应该是数据库的样子-三列带有电子邮件,另一列newsletter-check-column(现在newsletter列不起作用)

我的新闻简报看起来很简单:

enter image description here

是否有相应的公式?还是必须为此制作VBA宏?

4 个答案:

答案 0 :(得分:0)

尝试

=IFERROR(VLOOKUP($L2, Newsletter!A:A, 1, FALSE), IFERROR(VLOOKUP($m2, Newsletter!A:A, 1, FALSE), IFERROR(VLOOKUP($n2, Newsletter!A:A, 1, FALSE), "not subscribed")))

答案 1 :(得分:0)

我已经解决了,感谢大家的帮助。

公式:interface IFish { swim: () => void; } interface ICat { meow: () => void; } type Pet = IFish | ICat; const pet: Pet = { meow: () => { // }, swim: () => { // } };

答案 2 :(得分:0)

您可以通过多种方法来执行此操作。我喜欢数组函数,所以我会这样:

在O列中,您可以沿

的行粘贴内容

{=SUM(IF(ISBLANK(Newsletter!A:A),0,IF($L2=Newsletter!A:A,1,IF($M2=Newsletter!A:A,1,IF($N2=Newsletter!A:A,1,0)))))}

注意:这是一个数组公式,这意味着您需要将其粘贴到单元格中,然后按ctrl+shift+enter,然后将该单元格复制到列表中。

第一个if语句将检查以确保“新闻”标签中电子邮件列表中的空白单元格与“数据库”标签中的空白单元格不匹配。接下来的三个if语句依次检查L,M和N列,以查看大列表中是否存在这些电子邮件。

根据列表的大小,将A的长度限制为Newsletter!$ A $ 1:$ A $ 100000之类的时间可能更快一些,或者您需要的时间也很长,因此您不必检查所有的百万美元以上Newsletter!A中存在的行:数据库选项卡中的每一行四次。

如果是一次性的东西,没什么大不了的,但是如果您不断更新列表,则运行vba脚本可能会更快。

答案 3 :(得分:0)

指向示例工作表的链接:Click Here

要获得比您提供的解决方案简单得多的解决方案,请尝试以下操作:

  1. 创建一个动态大小的命名范围:单击按钮 New ... ,为其命名(例如:电子邮件),并在公式中使用:=OFFSET(Sheet1!$F$2,0,0,COUNTA(Sheet1!$F:$F)-1,1)(请注意:我使用的公式与所附的屏幕截图相对应)
  2. 对于“新闻简报”列中的公式,请使用:=IF(OR(Emails=A2, Emails=B2,Emails=C2),TRUE,FALSE)。输入此公式作为数组公式(按 CTRL + SHIFT + ENTER ,它将{}放在公式周围,您就知道正确完成)。
  3. 将此公式向下拖动到列的高度。

此公式的工作方式是首先限制进行计算时必须不断引用的像元数(上面的步骤1)。

接下来,使用简单的OR语句,将每列与动态大小的列表进行匹配。如果任何个单元格匹配,它将返回TRUE

enter image description here