我有一个可变长度值的列表(列出去可能会转到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
我需要创建一个报告最右边通过或失败的新列,并且只报告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 formula to get last entry in a row),但我不知道如何修改逻辑只返回行中的所有值是NA。
这是我用来获得最右边值的公式:
=LOOKUP(2,1/(B2:E2<>""),B2:E2)
我已尝试了多种变体,但如果所有值都是正确的NA,则无法获得仅返回NA的逻辑。
有人可以帮忙吗?
编辑:我已经完成了丢失嵌套IF语句的任务,但是这并没有解决在添加更多列时必须修改整个工作表的问题。如果存在这样的解决方案,我正在寻找一个强大的解决方案。
答案 0 :(得分:3)
使用AGGREGATE¹ function在空白单元格和 NA 值上抛出错误,同时忽略错误。当{n}有效时,IFERROR function可以覆盖NA值。
在G2 as,
=IFERROR(INDEX(B2:E2, AGGREGATE(14, 6, COLUMN(A:D)/(SIGN(LEN(B2:E2))*(B2:E2<>"NA")), 1)), "NA")
根据需要填写。
¹ Excel 2010引入了AGGREGATE function。早期版本不提供。
答案 1 :(得分:1)
此修改应该有效:
=IF(COUNTIF(B2:E2,"NA")=COUNTA(B2:E2),"NA",LOOKUP(2,1/((B2:E2<>"")*(B2:E2<>"NA")),B2:E2))