我有一个包含三列的Excel。
Column A: Column B: Column C:
shirts (long, short) color age
现在我需要找出10岁时有多少件长绿衬衫。当然我现在如何手动过滤但我想自动完成。实际上我有一个更复杂的Excel文件,大约有8万行,我需要找到更多的数字。上面给出的例子的解决方案将为我完成工作。我会将它改编为我的实际文件。我找到了一些可能的解决方案,但我认为一个简单的countIf函数将是最简单的,或者当涉及超过80k行时它是否足够高效?我也很难构建一个使用两个额外列的countIf函数。我开始这样做了。如果B的值为"绿色"则计算长衬衫。并且C列的值是" 10"。基本上我想知道这是否是一个合适的解决方案以及该功能的外观。
答案 0 :(得分:0)
由于您的Count
有3个条件,因此您需要使用CountIfs
功能(而不是CountIf
)。
以下代码将完成您提供的3列的工作,以及帖子中的示例:
Dim CountIfsRes As Long
CountIfsRes = WorksheetFunction.CountIfs(Range("A:A"), "=long", Range("B:B"), "=green", Range("C:C"), "=10")
MsgBox CountIfsRes
答案 1 :(得分:0)
如果你想知道有多少件绿色衬衫,上面的答案是有效的。
如果您想要在汇总表中填充多个条件,则可以调整此公式,并将公式插入表中。
mydata <- test3333
uniqueIds = as.character(mydata[duplicated(as.character(mydata$parent_mol_chembl_id)),1])#unique(as.character(mydata$parent_mol_chembl_id))
for(i in 1:length(uniqueIds))
{
print(uniqueIds[i])
testIds = uniqueIds[i]
index = which(testIds==mydata[,1])
tmp=mydata[index,]
countX = apply(tmp,2,function(x) length(unique(x[!is.na(x)])))
length(which(countX!=1))
table(countX)
indexDiff=which(countX>1)
if(length(indexDiff)==1)
{
t=as.matrix(tmp[,indexDiff])
colnames(t)=colnames(tmp)[indexDiff]
print(t)
}else{
print(tmp[,indexDiff])
}
}