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

时间:2016-06-01 19:04:33

标签: excel vba excel-vba

在工作表A中是一个名称列表。我试图在工作表B,B列的表格中计算工作表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

1 个答案:

答案 0 :(得分:4)

我认为只使用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之后的内容。所以这相当于上面的公式......这有意义吗?