Как определить переменную позицию и длину диапазона Excel? - PullRequest
0 голосов
/ 21 февраля 2019

[изображение] [1]

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

=SUMPRODUCT((C:C="EUR")*(F:F<10)*E:E/$H$3*F:F)

Однако я хочу заменить полные диапазоны столбцов только теми строками, между которыми в столбце D. находятся «Заголовок 2» и «Заголовок 3».C: C будет заменен на C10: C11;F: F будет заменено на F10: F11 и т. Д. Положение как «Заголовок 2», так и «Заголовок 3» может изменяться (поэтому положение и длина диапазона являются динамическими), поэтому диапазон не может быть жестко закодирован.Как я могу изменить формулу, чтобы применить только логику SUMPRODUCT к строкам между этими заголовками?

Надеюсь, это имеет смысл, благодарю за любую помощь!

РЕДАКТИРОВАТЬ: Если кто-то ищет такие вещи, мне удалось получить правильный вывод, используя следующую формулу:

=SUMPRODUCT((INDEX(C:C, MATCH("Heading 2",D:D,0)):INDEX(C:C, MATCH("Heading 3",D:D,0))="EUR")*(INDEX(F:F, MATCH("Heading 2",D:D,0)):INDEX(F:F, MATCH("Heading 3",D:D,0))<10)*INDEX(E:E, MATCH("Heading 2",D:D,0)):INDEX(E:E, MATCH("Heading 3",D:D,0))/$H$3*INDEX(F:F, MATCH("Heading 2",D:D,0)):INDEX(F:F, MATCH("Heading 3",D:D,0)))

1 Ответ

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

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

'last row with a number or date in a column
=match(1e99, F:F)
'last row with text in a column
=match("zzz", C:C)

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

Весь столбец C от строки 2 до строки в столбце C, которая соответствует последней строке с номером в столбце F.

C2:INDEX(C:C, MATCH(1e99, F:F))

Столбец F является одним из критериев, а также одним из факторов в полученной сумме, поэтому ни одна строка, кроме последнего числа в столбце F, не подходит для любого столбца.Используйте строку, содержащую последнее число в столбце F, в качестве последней строки для всех столбцов.Это обеспечивает учет всех действительных данных, а также гарантирует, что все диапазоны имеют одинаковый «размер» (т. Е. Одинаковое количество строк).Использование одного метода для столбца C и другого для столбца F может сделать формулу недействительной из-за непропорциональных диапазонов.

=SUMPRODUCT((C2:INDEX(C:C, MATCH(1e99, F:F))="EUR")*(F2:INDEX(F:F, MATCH(1e99, F:F))<10)*E2:INDEX(E:E, MATCH(1e99, F:F))/$H$3*F2:INDEX(F:F, MATCH(1e99, F:F)))

Формула теперь действительно динамическая.Как только новый номер будет введен в новую строку в столбце F, все остальные диапазоны будут соответственно расширены.

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