У меня большая проблема с моим скриптом VBA, я хочу создать скрипт VBA, который позволит суммировать некоторые ячейки на листе и отображать их на другом листе в соответствии с некоторыми критериями.
Но функция SumIfs возвращает нулевое значение.

Это мой сценарий:

If Worksheets("Test").Range("B2").Text = Worksheets("Nomen").Range("K3").Text Then
    Worksheets("Test").Range("C23").Value = Application.WorksheetFunction.SumIfs(Worksheets("DETAILS").Range("H2:H174"), Worksheets("DETAILS").Range("B2:B174"), Worksheets("Nomen").Range("K3"), Worksheets("DETAILS").Range("J2:J174"), Worksheets("Test").Range("C2")
End If

Picture1

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

-1
Ihab Benamer 25 Фев 2018 в 23:42

1 ответ

Лучший ответ

Вы пытаетесь суммировать текст, следовательно, ноль.

Я ввел переменные, чтобы упростить отладку.

Sub test()
Dim wb As Workbook
Set wb = ThisWorkbook

Dim sumRange As Range
Set sumRange = wb.Worksheets("DETAILS").Range("H2:H174")

Dim critRange1 As Range
Set critRange1 = Worksheets("DETAILS").Range("B2:B174")

Dim crit1 As Variant
crit1 = Worksheets("Nomen").Range("K3")

Dim critRange2 As Range
Set critRange2 = Worksheets("DETAILS").Range("J2:J174")

Dim crit2 As Variant
crit2 = Worksheets("Test").Range("C2")

 MsgBox Application.WorksheetFunction.SumIfs(sumRange, critRange1, crit1, critRange2, crit2)


End Sub

Если я заполню каждый диапазон 1, а также попытаюсь сопоставить по одному, я верну 174. Если я заполняю sumRange буквой «A», так же, как вы использовали текст, я получаю 0. т.е. если я заменяю все единицы на A.

0
QHarr 26 Фев 2018 в 00:13