在列或返回单元格地址中查找第一个更改的值

时间:2019-03-28 13:30:54

标签: excel excel-formula

我有一个具有工作人员实时状态的excel工作表,它根据他在系统上的状态从空闲状态变为忙碌状态,反之亦然,我正在尝试获取最后状态下状态栏中第一个更改的单元格。

例如,在下面,它应该是“ Avail”(又名C12),因为它是当前状态的第一行。因此,由于相同的原因,它应该忽略空闲状态,因为在那之后还有另一个状态,而繁忙状态。闲着并转到Avail中的第一行。

到目前为止我所拥有的。

=LOOKUP(2,1/('Real-Time-Status'!B:B=B2),'Real-Time-Status''!D:D)

但是它为我提供了状态栏中的最后一个值。在下面的示例中是C5,而不是C12。

Name        ID     Status        Timestamp
John Doe    1111    Idle    24/03/2019 15:27:15
John Doe    1111    Idle    24/03/2019 15:27:49
John Doe    1111    Idle    24/03/2019 15:28:23
John Doe    1111    Idle    24/03/2019 15:28:59
John Doe    1111    Busy    24/03/2019 15:29:34
John Doe    1111    Busy    24/03/2019 15:30:11
John Doe    1111    Busy    24/03/2019 15:30:47
John Doe    1111    Busy    24/03/2019 15:31:25
John Doe    1111    Idle    24/03/2019 15:32:20
John Doe    1111    Idle    24/03/2019 15:33:00
John Doe    1111    Idle    24/03/2019 15:34:05
John Doe    1111    Avail   24/03/2019 15:35:25
John Doe    1111    Avail   24/03/2019 15:36:25
John Doe    1111    Avail   24/03/2019 15:37:25

1 个答案:

答案 0 :(得分:1)

这是一种返回列D值的方法:

enter image description here

我使用的公式翻译为:

{=INDEX(D1:D15,MAX(--((C1:C15<>LOOKUP(2,1/(C:C<>""),C:C))*ROW(C1:C15)))+1)}

请注意,这是一个数组公式,应通过 Ctrl Shift Enter

输入

如果您的数据实际上包含更多人,它可能看起来像这样:

enter image description here

该示例中使用的公式转换为:

{=INDEX(D1:D15,MAX(--(C1:C15<>INDEX(C1:C15,MAX(--(A1:A15=F2)*(ROW(A1:A15)))))*(A1:A15=F2)*ROW(C1:C15))+1)}

它也是一个数组公式。并且您可能要考虑对范围使用绝对单元格引用。