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

在这里输入图像说明

标题可能会令人困惑,所以这里的情况是:

如果列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得到答案

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