对单元格引用使用通配符。 我错过了什么?

在工作表A中是一个名字列表。 我试图在表B中B列的表A中计算表A上的不同名称。名称不是确切的,我将引用单元格,而不是写在名称中。 下面的几乎工作,但我认为我没有正确使用wildcqard。 如果可以的话请帮忙。 提前致谢。

Sub Countif_Crr_Cnt_Until_LastRow() Dim LastRow As Long Dim wb1 As Workbook Set wb1 = Workbooks("macro all client v.01.xlsm") LastRow = wb1.Sheets("A").Range("A:A").Find("Overall - Total", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row For i = 21 To LastRow Cells(i, 10) = Application.CountIfs(wb1.Sheets("B").Range("B:B"), "*" & Cells(i, 3) & "*") Next End Sub 

我相信这个问题是你使用Cells()时的非限定引用。 VBA需要知道使用多个工作表时,您希望使用哪个工作表。 我假设Cells(i,10)Cells(i,3)要在表格“A”上。 如果不是,只需更改表单名称:

wb1.Sheets("A").Cells(i, 10) = Application.CountIfs(wb1.Sheets("B").Range("B:B"), "*" & wb1.Sheets("A").Cells(i, 3) & "*")

正如你所看到的那样,阅读起来有点复杂。 另一种方法是使用With

 With wb1.Sheets("A") .Cells(i,10) = Application.CountIfs(wb1.Sheets("B").Range("B:B"), "*" & .Cells(i,3) & "*") End With 

所以,无论你在哪看到一个简单的.Cells()没有任何东西. ,它将使用以下With 。 所以这是上面公式的等价物……这有道理吗?