(VBA)Countif不能在其他工作表中查找并将答案带回原始工作表

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

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

这是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仍然计数所有的数据,我怎么能只计算过滤的数据? 这有不同的公式吗?

看起来你应该从数据表中得到最后一行,因为这是你想要的数据表。 另外,您应该在定义范围时指定图纸。 我更喜欢使用“单元格”语法。

 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