Return 符合条件的行中最右边的值

Return rightmost value in a row with conditions

我有一个可变长度的值列表(列可能会输出到 ValueN,这个 sheet 会随着时间的推移而扩展)。例如:

Subject  Value1  Value2  Value3  Value4
Sub1     Pass    Fail    Fail
Sub2     Pass    NA
Sub3     Fail    Fail    Fail    Fail
Sub4     NA      NA      NA      NA
Sub5     NA      PASS    NA

我需要创建一个新列来报告最右边的通过或失败,并且仅在所有列均为 NA 时才报告 NA(没有行将所有列都留空),例如:

Subject  Value1  Value2  Value3  Value4  New Column
Sub1     Pass    Fail    Fail            Fail
Sub2     Pass    NA                      Pass
Sub3     Fail    Fail    Fail    Fail    Fail
Sub4     NA      NA      NA      NA      NA
Sub5     NA      Pass    NA              Pass

我不久前发现另一个 post 可以帮助我获得最右边的值 (Excel formula to get last entry in a row),但我不知道如何将逻辑修改为仅 return NA 如果行中的所有值都是 NA。

这是我用来获取最右边值的公式:

=LOOKUP(2,1/(B2:E2<>""),B2:E2)

我尝试了几种变体,但如果所有值都正确为 NA,则无法将逻辑仅设为 return NA。

有人能帮忙吗?

编辑:我已经完成了丢失嵌套 IF 语句的任务,但这并没有解决当我们添加更多列时必须修改整个 sheet 的问题。如果存在这样的解决方案,我正在寻找一个可靠的解决方案。

此修改应该有效:

=IF(COUNTIF(B2:E2,"NA")=COUNTA(B2:E2),"NA",LOOKUP(2,1/((B2:E2<>"")*(B2:E2<>"NA")),B2:E2))

使用AGGREGATE¹ function to throw an error on blank cells and NA values while ignoring errors. The IFERROR function可以在返回无效值时覆盖NA值。

在 G2 中,

=IFERROR(INDEX(B2:E2, AGGREGATE(14, 6, COLUMN(A:D)/(SIGN(LEN(B2:E2))*(B2:E2<>"NA")), 1)), "NA")

根据需要填写。


¹ AGGREGATE function 是在 Excel 2010 中引入的。它在早期版本中不可用。