Диапазон сумм с суммированием для критериев из InputBox - PullRequest
0 голосов
/ 08 мая 2020

Я хотел бы суммировать диапазон строк в столбце для входного значения критерия из InputBox для значений, которые равны или меньше входного значения. в таблицах Excel это тривиально, например, = СУММЕСЛИ (A2: A20; "<= 200"; C2: C20). Я определил что-то подобное в vba, но возвращаемое значение равно 0, я предполагаю, что функция СУММЕСЛИ в vba не распознает значение из InputBox как целое число, а как строку. Я ищу простое решение, если это возможно, ниже синтаксис, который я определяю в vba. </p>

Dim A, B, AB As Variant
Dim criteriaRng As Range
Dim sumRng As Range


A = Application.InputBox("Enter the amount of A per year", "A", "A/year", Type:=1)
Worksheets("Sheet").Range("M12").Value = A
B = Application.InputBox("Enter the amount of years B", "B", "Years", Type:=1)
Worksheets("Sheet").Range("N12").Value = B
AB = Worksheets("Sheet").Cells(12, 13) * Worksheets("Sheet").Cells(12, 14)
Worksheets("Sheet").Range("O12").Value = AB

Set criteriaRng = Worksheets("Sheet2").Range("A2:A20")
Set sumRng = Worksheets("Sheet2").Range("C2:C20")

Worksheets("Sheet").Range("P12").Value = WorksheetFunction.SumIf(criteriaRng, "<= AB", sumRng)

End Sub```


1 Ответ

0 голосов
/ 08 мая 2020

В настоящее время вы использовали свою переменную в строке, поэтому VBA не распознает переменную. Уберите, AB переменную все вместе и вместо этого используйте:

Worksheets("Sheet").Range("O12").Value = A*B

&

Worksheets("Sheet").Range("P12").Value = WorksheetFunction.SumIf(criteriaRng, "<=" & A*B, sumRng)

Сноска: Dim A, B, AB As Variant все три переменные будут затемнены как Variant. Однако вы возвращаете Type:=1 данные (numeri c), поэтому измените на Double или Long. Также конструкция, которую вы сейчас используете, должна быть Dim A as Long, B as Long, AB As Long, чтобы первые две не превратились снова в Variant.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...