【问题标题】:EXCEL formulas - return true if the same value in one of three other columnsEXCEL 公式 - 如果其他三列之一中的值相同,则返回 true
【发布时间】:2018-09-06 18:17:58
【问题描述】:

我有一个包含多张工作表的 Excel 数据库。有一张包含一般数据(如电子邮件等)的表格,然后我有另一张表格,其中包含订阅时事通讯的电子邮件地址(电子邮件在第一列中逐行排列)。在第一个“常规”表中,我有三个单独的列,每行都有电子邮件地址。我需要检查时事通讯表中的这三列中是否有电子邮件 - 一个人是否订阅了时事通讯 - 如果是这样,我想将电子邮件放在它旁边的列中,或者只是写订阅进入它。

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

这是数据库应该的样子 - 三列包含电子邮件和另一个时事通讯检查列(现在时事通讯列不工作了):

我的通讯单看起来很简单:

是否有这个公式或者我必须为此制作一个 VBA 宏?

【问题讨论】:

  • 您可以发布示例数据吗?这将使每个人都更容易了解事情是如何设置的

标签: excel excel-formula formula


【解决方案1】:

试试,

=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")))

【讨论】:

    【解决方案2】:

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

    公式:=IF(OR(NOT(ISNA(VLOOKUP($L4, Newsletter!A:A, 1, FALSE))),NOT(ISNA(VLOOKUP($M4, Newsletter!A:A, 1, FALSE))),NOT(ISNA(VLOOKUP($N4, Newsletter!A:A, 1, FALSE)))),"YES","NO")

    【讨论】:

      【解决方案3】:

      您可以通过多种方式做到这一点。我喜欢数组函数,所以我会这样做:

      在 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 脚本可能会更快。

      【讨论】:

        【解决方案4】:

        示例工作表的链接: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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-12-23
          • 1970-01-01
          • 1970-01-01
          • 2018-12-26
          • 2018-10-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多