在单元格中搜索多个文本

时间:2016-12-30 04:16:14

标签: excel vba excel-vba

我有一张6张Excel的Excel工作簿。表1是其他5张表的摘要。所以基本上我需要将第2页 - 表6中输入的数据自动化到表1中。

在每张纸上,我只需要获得符合特定标准的值的计数。

例如:

  1. 在Sheet2中,我只需要在" G"列有文字"是"和" H"列有文字" NA"和" K"列包含文字" Tablet"。

  2. 此计数应放在" AG9"下的表1中。细胞。我必须为许多专栏做同样的任务。

  3. 我已经尝试了以下代码,它在查找单个文本和单列更新时工作正常。但这对多个文本没有帮助。

    Sub WBR()
        Dim s As String
        Dim r As Range
        Dim wf As WorksheetFunction
        Dim xlSheet As Worksheet
        Set xlSheet = ActiveWorkbook.Worksheets("Latency") 'sets the worksheet
        Set wf = Application.WorksheetFunction
        Set r = xlSheet.Range("O:O")                       'sets the range to search
        s = "Pass"
        [AE4] = wf.CountIf(r, s)
        s = "Pass" & "Fail"
        [AE3] = wf.CountIf(r, s)
        s = "Fail"
        [AE5] = wf.CountIf(r, s)
    End Sub
    

2 个答案:

答案 0 :(得分:0)

请查看答案。此代码将在存在值的工作簿中工作

 Sub test1()

    Dim wb As Workbook
    Dim ws As Worksheet

    Dim count As Integer
    Set wb = ThisWorkbook
    Set ws1 = wb.Worksheets("Sheet1")
    Set ws2 = wb.Worksheets("Sheet2")
    Set ws3 = wb.Worksheets("Sheet3")
    Set ws4 = wb.Worksheets("Sheet4")
    Set ws5 = wb.Worksheets("Sheet5")
    Set ws6 = wb.Worksheets("Sheet6")


    With Application.WorksheetFunction
       count = .CountIf(ws2.Range("G:G"), "Yes") + _
               .CountIf(ws2.Range("H:H"), "NA") + _
               .CountIf(ws2.Range("K:K"), "Tablet")

    End With

    '"AG9" cell
    ws1.Range("AG9").Value = count


    End Sub

答案 1 :(得分:0)

您应该可以使用CountIfs功能执行您想要的操作:

Sub WBR()
    Dim s As String
    Dim r As Range
    Dim wf As WorksheetFunction
    Dim xlSheet As Worksheet
    Set xlSheet = ActiveWorkbook.Worksheets("Latency") 'sets the worksheet
    Set wf = Application.WorksheetFunction
    Set r = xlSheet.Range("O:O")                       'sets the range to search
    s = "Pass"
    [AE4] = wf.CountIf(r, s)
    s = "Pass" & "Fail"
    [AE3] = wf.CountIf(r, s)
    s = "Fail"
    [AE5] = wf.CountIf(r, s)
    With ActiveWorkbook.Worksheets("Sheet2")
        [AG9] = wf.CountIfs(.Range("G:G"), "Yes", _
                            .Range("H:H"), "NA", _
                            .Range("K:K"), "Tablet")
    End With
End Sub

我添加了一个With广告块,因为我不想一直打字ActiveWorkbook.Worksheets("Sheet2").,而且我不想创建三个Range对象。