【问题标题】:Comparing column to specific value, returns the value of other column to another column将列与特定值进行比较,将另一列的值返回到另一列
【发布时间】:2016-09-02 06:17:51
【问题描述】:

标题可能令人困惑,所以这是场景:

如果 B 列(状态)处于非活动状态,我希望 C 列(新)获取 A 列(所有者)的值。但我希望它逐行打印,例如,由于 B 列第 3 行是“非活动”,我想让 owner2 在 C 列第 2 行打印,而且由于 B 列第 6 行是“非活动”,我想让 owner5 在 C 列第 3 行打印,

这是我的公式: =IFERROR(INDEX(A:A, MATCH("Inactive",B:B, 0)), "")

我在 C 列的每一行都打印了这个公式,但这并没有达到我的预期,因为如果 B 列第 3 行处于非活动状态,则此公式会在 C 列的多行中显示 owner2 值。

希望不用Excel-VB也能得到答案

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    只需放入 C2:

    =IFERROR(INDEX(A:A,SMALL(IF(B$1:B$6="Inactive",ROW($1:$6)),ROW()-1)),"")
    

    这是一个数组公式,必须符合ctrl+shift+enter

    然后简单地从 C2 复制下来。只需使用“评估公式”来查看它是如何工作的。但如果还有任何问题,尽管问。

    编辑

    要以非数组方式保留您的非数组公式,只需输入 C3(C2 将保留您的公式):

    =IF(C2="","",IFERROR(INDEX(INDEX(A:A,MATCH(C2,A:A,0)+1):A99999, MATCH("Inactive",INDEX(B:B,MATCH(C2,A:A,0)+1):B99999, 0)), ""))
    

    这是一种非数组方式,但有一个限制,即所有“所有者”都必须是唯一的。如果一个有 2 次,它可能会失败。但是如果它们都是唯一的,那么这个公式对于更大的表会更快;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多