我试图创建一个sumifs公式,该公式对标题包含指定字符串的单元格求和(例如," EC"),但我希望它返回" NA&# 34;如果任何一个单元格包含NA(缺少数据),则出现错误。
我的数据框架有点像这样:
ID | EC1 | INH2 | EC3
A | 100 | 200 | 100
B | 200 | 100 | NA
C | 200 | NA | 100
理想的总数看起来像这样:
ID | ECtot | INHtot
A | 200 | 200
B | NA | 100
C | 300 | NA
公式1我尝试过:
=sumif([#headers][df], "*STRING*", [@df])
Actual: =SUMIF(Table1[[#Headers],[1.EC.N]:[75.TM.I]],"*EC*",Table1[@[1.EC.N]:[75.TM.I]])
结果:这对包含字符串的所有列求和,就像NA = 0一样;如果包含该字符串的任何列也包含NA,我需要它返回错误或NA。
示例结果:
ID | ECtot | INHtot
A | 200 | 200
B | 200 | 100
C | 300 | NA
公式2:
=if(countblank([@df})=0, sumif([#headers][df], "*STRING*", [@df]))
Actual: =IF(COUNTBLANK(Table1[@[1.EC.N]:[75.TM.I]])=0, SUMIFS(Table1[@[1.EC.N]:[75.TM.I]],Table1[[#Headers],[1.EC.N]:[75.TM.I]],"*Inh*"))
结果:如果整行中的任何单元格包含NA,则返回FALSE,而不仅仅是包含字符串的单元格,否则返回正确的总和。
示例结果:
ID | ECtot | INHtot
A | 200 | 200
B | NA | NA
C | NA | NA
任何人都有任何想法如何巩固这两个问题?否则,我必须手动对这些进行求和,但这涉及人为错误(75列)。
如果有人知道,也可以使用涉及R的解决方案。
谢谢!
答案 0 :(得分:0)
回答了我自己的问题。简单的解决方案,使用公式#1,并使所有NA的-9999(因为在这种情况下值不能为负)。然后用NA替换所有负数。