使用countif与三列的VBA宏

时间:2017-04-19 11:54:34

标签: excel vba excel-vba countif

我有一个包含三列的Excel。

Column A:               Column B:    Column C:    
shirts (long, short)    color        age

现在我需要找出10岁时有多少件长绿衬衫。当然我现在如何手动过滤但我想自动完成。实际上我有一个更复杂的Excel文件,大约有8万行,我需要找到更多的数字。上面给出的例子的解决方案将为我完成工作。我会将它改编为我的实际文件。我找到了一些可能的解决方案,但我认为一个简单的countIf函数将是最简单的,或者当涉及超过80k行时它是否足够高效?我也很难构建一个使用两个额外列的countIf函数。我开始这样做了。如果B的值为"绿色"则计算长衬衫。并且C列的值是" 10"。基本上我想知道这是否是一个合适的解决方案以及该功能的外观。

2 个答案:

答案 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]) } }