按条件返回最右边的值

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

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 

我需要创build一个报告最右边通过或失败的新列,如果所有列都是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 

我发现另一篇文章从一段时间回来,帮助我得到最右边的值( Excel公式获得最后一个入口行 ),但我不知道如何修改逻辑,只返回NA,如果行中的所有值NA。

这是我用来获得最正确价值的公式:

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

我已经尝试了几个变化,但不能得到逻辑,只有返回NA,如果所有的值是正确的NA。

谁能帮忙?

编辑:我已经完成了嵌套的IF语句丢失的任务,但是这不能解决我们添加更多的列时不得不修改整个工作表的问题。 我正在寻找一个强大的解决scheme,如果这样的解决scheme存在。

使用AGGREGATE¹函数在空白单元和NA值上抛出一个错误,同时忽略错误。 IFERRORfunction可以覆盖NA值,如果不能返回有效的。

在G2中,

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

根据需要填写。

sign_len


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

这个修改应该工作:

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