VB函数返回数组

时间:2016-06-29 08:35:29

标签: excel-vba vba excel

以下是我的VB代码。我想在电子表格中统计关于“彼得”的所有不同记录而不重复。 当我运行代码时,总是出现“运行时错误'13':类型不匹配”。我无法调试。我的代码出了什么问题?

Private Sub CheckBox5_Click()

Dim myarray As Variant

myarray = WorksheetFunction.If(Range("C7:C266") = "Peter", 1 / (WorksheetFunction.CountIfs(Range("C7:C266"), "Peter", Range("F7:F266"), Range("F7:F266"))), 0)

If CheckBox5.Value = True Then
TextBox6.Value = WorksheetFunction.Sum(myarray) + 1
End If

If CheckBox5.Value = False Then
TextBox6.Value = ""
End If

End Sub

2 个答案:

答案 0 :(得分:0)

您获得的错误是调用IF函数的方式的结果。第一项必须是逻辑结果,但不能调用多单元格范围的value(即范围(“C7:C266”))。为了解决这个问题,我认为你需要循环遍历每个单元格并相应地对它们进行操作,尽管可能有一个更聪明的解决方案使用IF以外的其他我不知道的内容

答案 1 :(得分:0)

你可以这样做:

Sub findPeter()

Dim ws As Worksheet
Dim peterCount As Long
Set ws = Worksheets("nameofyoursheet")

With ws
    For i = 7 To 266
        If .Cells(i, 3) = "Peter" Then
            peterCount = peterCount + 1
        End If
    Next
End With

If CheckBox5.Value = True Then
    TextBox6.Value = peterCount + 1
End If

If CheckBox5.Value = False Then
    TextBox6.Value = ""
End If

End Sub

peterCount是值Peter的所有出现的总和。