我正在尝试建立一个忽略错误的排名公式。
我尝试过:
library(data.table)
setDT(df)
setkey(df,start,end)
df[,row_id:=1:nrow(df)]
temp <- foverlaps(df,df)
temp[, `:=`(c("start","end"),list(min(start,i.start),max(end,i.end))),by=row_id]
temp[, `:=`(c("start","end"),list(min(start,i.start),max(end,i.end))),by=i.row_id]
temp2 <- temp[, list(group2=.GRP, row_id=unique(c(row_id,i.row_id))),by=.(start,end)][,.(row_id,group2)]
setkey(df,row_id)
setkey(temp2,row_id)
temp2[df]
我也尝试过:
=Rank(BN4,(if(iserror(BQ4:BQ31),"",BQ4:BQ31)))
公式是否有问题?有没有更好的办法?参见下图,等级公式出现在Col BN中。谢谢!
] 1
答案 0 :(得分:1)
答案 1 :(得分:0)
我认为这是怎么回事:在您的第二个公式中,您的Sumproduct仍然计算有错误。尽管您的公式的第一部分告诉Excel在计算ERROR的等级时返回空白,但错误仍会输入到您实际计算等级的第二部分,因此Excel即使计算出的等级也会吐出Error。普通号码
上面卢卡斯提供的公式可能是最简单的方法。如果必须使用sumproduct,则应在sumproduct中包含一些内容,以告诉excel如果在计算某些乘积时遇到错误,则使用空白值。
例如,如果您尝试执行A1:A4和B1:4的总和,但两个范围都存在一些错误,则可以使用:
=SUMPRODUCT(IF(ISNA(A1:A4),0,A1:A4),IF(ISNA(B1:B4),0,B1:B4))