Код VBA для оценки Sumproduct в динамической таблице - PullRequest
0 голосов
/ 25 сентября 2019

Я использую форму ввода данных для хранения информации в таблице.Я пытаюсь получить набор значений, содержащихся в таблице, когда пользователь отправляет запись (из пользовательской формы).

Я попытался указать свой диапазон, например, G6: G1000, который работал, но я хочу, чтобы он захватывал только значения, содержащиеся в таблице.

Sheet1.Range("P7").Value = Evaluate("=SUMPRODUCT(range("G6", range("G5").End(xlDown), SUBTOTAL(109, OFFSET(H6, ROW(range("H6", range("H5").End(xlDown)-ROW(H6),)))")

Я получаю ошибку компиляции: ожидаемый разделитель списка или)

1 Ответ

1 голос
/ 25 сентября 2019

Вы хотите передать адрес диапазона в формулу.Формула является строкой, и нельзя передать объект диапазона в строку, поэтому мы передаем адрес.

Также мы хотим обеспечить правильный лист для всего, поэтому мы используем блок With:

With Sheet1      
    .Range("P7").Value = .Evaluate("=SUMPRODUCT(" & .Range("G6", .Range("G5").End(xlDown)).Address(0, 0) & ", SUBTOTAL(109, OFFSET(H6, ROW(" & .Range("H6", .Range("H5").End(xlDown)).Address(0, 0) & ")-ROW(H6),)))")
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...