将列与特定值进行比较,将其他列的值返回到另一列

时间:2016-09-02 06:17:52

标签: excel excel-formula

enter image description here

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

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

这是我的公式: = IFERROR(指数(A:A,MATCH(“无效”,B:B,0)),“”)

我在C列的每一行都打印了这个公式,但这并不是我打算做的,因为如果B列第3行是非活动的,则此公式会在C列的多行中显示owner2值。

我希望不用Excel-VB就可以得到答案

1 个答案:

答案 0 :(得分:2)

刚刚加入C2:

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

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

然后只需从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次,可能会失败。但如果它们都是唯一的,那么这个公式对于更大的表来说会快得多;)