Excel VBA额外列搜索

Excel VBA额外列搜索,excel,vba,Excel,Vba,我需要在下面的代码中添加PW,即RDG1,PW,下水道工程,Pass。额外的栏将是D栏,干杯 With ThisWorkbook.Sheets(1) .Range("D5").Value = Counts("RDG1", "Sewer Works") .Range("E5").Value = Counts("RDG1", "Sewer Works", "PASS") .Range("F5").Value = Counts("RDG1", "Sewer Works", "F

我需要在下面的代码中添加PW,即RDG1,PW,下水道工程,Pass。额外的栏将是D栏,干杯

With ThisWorkbook.Sheets(1)
    .Range("D5").Value = Counts("RDG1", "Sewer Works")
    .Range("E5").Value = Counts("RDG1", "Sewer Works", "PASS")
    .Range("F5").Value = Counts("RDG1", "Sewer Works", "FAIL")

    'other counts here

End With



'Get row counts from sheet2
'  Optional 3rd parameter for PASS/FAIL
Function Counts(v1 As String, v2 As String, Optional v3 As String = "") As Long
    Dim rng1 As Range, rng2 As Range, rng3 As Range
    With ThisWorkbook.Sheets(2)
        Set rng1 = .Range("C7:C10000")
        Set rng2 = .Range("G7:G10000")
        Set rng3 = .Range("I7:I10000")
        If Len(v3) > 0 Then
            Counts = Application.CountIfs(rng1, v1, rng2, v2, rng3, v3)
        Else
            Counts = Application.CountIfs(rng3, v1, rng2, v2)
        End If
    End With
End Function

未经测试-你应该得到一般模式

With ThisWorkbook.Sheets(1)
    .Range("D5").Value = Counts("RDG1", "PW", "Sewer Works")
    .Range("E5").Value = Counts("RDG1", "PW", "Sewer Works", "PASS")
    .Range("F5").Value = Counts("RDG1", "PW", "Sewer Works", "FAIL")

    'other counts here

End With



'Get row counts from sheet2
'  Optional 4rd parameter for PASS/FAIL
Function Counts(v1 As String, v2 As String, v3 As String, Optional v4 As String = "") As Long
    Dim rng1 As Range, rng2 As Range, rng3 As Range, rng4 As Range
    With ThisWorkbook.Sheets(2)
        Set rng1 = .Range("C7:C10000")
        Set rng2 = .Range("D7:D10000")
        Set rng3 = .Range("G7:G10000")
        Set rng4 = .Range("I7:I10000")
        If Len(v4) > 0 Then
            Counts = Application.CountIfs(rng1, v1, rng2, v2, rng3, v3, rng4, v4)
        Else
            Counts = Application.CountIfs(rng1, v1, rng2, v2, rng3, v3)
        End If
    End With
End Function

未经测试-你应该得到一般模式

With ThisWorkbook.Sheets(1)
    .Range("D5").Value = Counts("RDG1", "PW", "Sewer Works")
    .Range("E5").Value = Counts("RDG1", "PW", "Sewer Works", "PASS")
    .Range("F5").Value = Counts("RDG1", "PW", "Sewer Works", "FAIL")

    'other counts here

End With



'Get row counts from sheet2
'  Optional 4rd parameter for PASS/FAIL
Function Counts(v1 As String, v2 As String, v3 As String, Optional v4 As String = "") As Long
    Dim rng1 As Range, rng2 As Range, rng3 As Range, rng4 As Range
    With ThisWorkbook.Sheets(2)
        Set rng1 = .Range("C7:C10000")
        Set rng2 = .Range("D7:D10000")
        Set rng3 = .Range("G7:G10000")
        Set rng4 = .Range("I7:I10000")
        If Len(v4) > 0 Then
            Counts = Application.CountIfs(rng1, v1, rng2, v2, rng3, v3, rng4, v4)
        Else
            Counts = Application.CountIfs(rng1, v1, rng2, v2, rng3, v3)
        End If
    End With
End Function

@布拉克斯。这段代码是给我搜索3列,但我想修改它搜索一个额外的列。我对编码知之甚少……显然:)@brax。这段代码是给我搜索3列,但我想修改它搜索一个额外的列。我对编码知之甚少…显然:)我得到了预期的结束子错误,所以我将函数放在顶部和第一个结束之后,但现在它得到了运行时错误9,下标超出了ThisWorkbook.Sheets的范围(2)。我的数据在第2页和第1页空白。任何建议,干杯,确定,我在我的个人使用它,我创建了一个工作簿,它工作。我需要更改什么才能使其在个人中正常工作。我将其更改为“带工作表(1)”,带工作表(2)”,它似乎正常工作……是否正确?如果这些是正确的工作表,那么它应该可以正常工作-如果您不指定一个,它将默认为活动工作簿。我收到了预期的结束子错误,因此我将函数放在顶部,并在第一个结束后,但现在它得到了运行时错误9,下标超出了ThisWorkbook.Sheets(2)的范围。我的数据在第2页和第1页空白。任何建议,干杯,确定,我在我的个人使用它,我创建了一个工作簿,它工作。我需要更改什么才能使其在个人中工作。我将其更改为“带工作表(1)”,带工作表(2)”,并且它似乎可以工作……是否正确?如果这些工作表是正确的,则应该可以-如果您不指定,它将默认为Active工作簿