(VBA)Countif无法查看其他工作表并将答案带回原始工作表

时间:2017-01-11 15:57:07

标签: excel vba countif

我有一个excel文件,其结尾范围未知(每次更改),我想知道特定单词在该数据表中返回的行数。

这只是一栏,我尝试了很多不同的方法,但我仍然不知道它的解决方案。

这是VBA代码:

Sub count_cookies()

lastrow = Worksheets("table").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("table").Cells(6, 2) = WorksheetFunction.CountIf(Range("data!A2:A" & lastrow), "* cookies *")
End Sub

所以我希望从表格中计算出金额"数据"表"表",但我做错了什么?

编辑:我有一个问题,我已经过滤了数据,但是countif仍然统计所有数据,我怎样才能只计算过滤后的数据?这有不同的公式吗?

2 个答案:

答案 0 :(得分:1)

看起来您应该从数据表中获取最后一行,因为那是您想要计数的工作表。此外,您应在定义范围时指定工作表。我更喜欢使用" Cells"语法。

>     microbenchmark(jaap1 = do.call(rbind, lapply(split(a, row(a)), sort, decreasing = TRUE)),
+                    apom = t(apply(a, 1, sort, decreasing = TRUE)),
+                    jaap2 = for(i in 1:nrow(a)) a[i,] <- a[i,][order(a[i,], decreasing = TRUE)],
+                    jaap3 = for(i in 1:nrow(a)) a[i,] <- sort(a[i,], decreasing = TRUE), 
+                    alpha = t(apply(a, 1, function(x) order(x, decreasing = T))),
+                    times = 1000L)
Unit: microseconds
  expr     min       lq     mean   median       uq      max neval
 jaap1 318.193 364.6125 404.3224 389.5845 417.6405 1422.087  1000
  apom 276.764 340.2740 389.1302 364.9650 398.3680 2854.710  1000
 jaap2 121.332 158.4845 189.5616 182.2070 202.2390 1170.602  1000
 jaap3 247.387 309.2445 351.6959 332.2710 365.3640 1361.720  1000
 alpha 139.244 178.7460 209.6122 202.8580 226.7585 1092.301  1000

答案 1 :(得分:0)

你可以试试这个:

With Worksheets("table")
    With .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
        .Cells(6, 2).Value = WorksheetFunction.CountIf(Worksheets("data").Range(.Address), "* cookies *")
    End With
End With