Формула SumProduct Ошибка 13 Несоответствие типов - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь получить сумму по нескольким критериям:

  • «Получить» (столбец A)
  • «Да» (столбец C)
  • СуммаКолонка K

Как видно из изображения ниже, мне удается получить ответ с помощью SumProduct в Excel.Когда я пытаюсь получить тот же ответ с SumProduct, используя VBA, я получаю сообщение об ошибке 13 Несоответствие типов.

Изображение:

enter image description here

Любой совет?

Код:

Option Explicit

Sub test()

    Dim Criteria1 As String, Criteria2 As String
    Dim Lastrow As Long, Result As Double
    Dim rng1 As Range, rng2 As Range, rng3 As Range

    With ThisWorkbook.Worksheets("Sheet1")

        Lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row

        Set rng1 = .Range("A3:A" & Lastrow)
        Set rng2 = .Range("C3:C" & Lastrow)
        Set rng3 = .Range("K3:K" & Lastrow)

        Criteria1 = "Get"
        Criteria2 = "Yes"

        Result = Application.Evaluate("SumProduct(--(rng1 = Criteria1),--(rng2 = Criteria2),--rng3))")

    End With

End Sub

1 Ответ

0 голосов
/ 26 февраля 2019

Три вещи

  1. rng1, rng2, rng3, Criteria1 and Criteria2 являются переменными.Когда вы помещаете их в двойные кавычки, они становятся строкой.
  2. Вы объявили result как Double.Объявите это как Variant.Это вызывает ошибку несоответствия.
  3. Формула, которую вы на самом деле пытаетесь использовать: =SUMPRODUCT(--($A$1:$A$3 = "Get"),--($C$1:$C$3 = "Yes"),--$K$1:$K$3).Критерии должны быть заключены в двойные кавычки.

Это то, что вы пытаетесь?( не проверено )

    Result = Application.Evaluate("SumProduct(--(" & _
                                   rng1.Address & _
                                   " = """ & _
                                   Criteria1 & _
                                   """),--(" & _
                                   rng2.Address & _
                                   " = """ & _
                                   Criteria2 & _
                                   """),--" & _
                                   rng3.Address & _
                                   ")")
...