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

(VBA) Countif can't look in other sheet and bring answer back to original sheet

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

就一栏而已,试了很多方法还是不知道解决办法

这是 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

所以我想要从sheet"data"到sheet"table"的数量,但是我做错了什么?

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

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

Sub count_cookies()

  lastRow = Worksheets("data").Cells(Rows.Count, 1).End(xlUp).Row
  Worksheets("table").Cells(6, 2) = WorksheetFunction.CountIf(Range(Sheets("data").Cells(2, "a"), Sheets("data").Cells(lastRow, "a")), "* cookies *")

End Sub

你可以试试这个:

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