powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Именованные диапазоны - 3. (Опять вопрос к Deggasad)
12 сообщений из 12, страница 1 из 1
Именованные диапазоны - 3. (Опять вопрос к Deggasad)
    #35001036
Цитата из прошлой темы: DeggasadСначала нашёл минимальную строку. Если всё, то 3. Если месяц то минимальная строка в которой встречается месяц
MinRow =ЕСЛИ(Лист1!$F$1="Все";3;МИН(ЕСЛИ((Лист1!$D$1:$D$4985=Лист1!$F$1);СТРОКА(Лист1!$D$1:$D$4985))))
Потом нашёл максимальную строку. Если все, то последняя заполненная строка. Если месяц то максимальная строка в которой встречается месяц
MaxRow =ЕСЛИ(Лист1!$F$1="Все";ПОИСКПОЗ("яяяяя";Лист1!$D$1:$D$5000);МАКС(ЕСЛИ((Лист1!$D$1:$D$5000=Лист1!$F$1);СТРОКА(Лист1!$D$1:$D$5000))))В том случае была одна группировка - по месяцам. А как это вычислить если исходная таблица содержит данные предназначенные для построений диаграмм на разных листах и содержит еще один уровень группировки(Код)? См.приложенный файл.
Меня хватило только на:
MinRow =ЕСЛИ(Текущий лист!$F$1="Все";ПОИСКПОЗ("Имя листа";table!$С:$С;0);???????)
-------------------------------------------------------------
Может откроешь тайну алгоритма построения подобных выражений? Ну туплю я! В твоем коде вроде все понятно, а чуть в сторону - кирдык!
...
Рейтинг: 0 / 0
Именованные диапазоны - 3. (Опять вопрос к Deggasad)
    #35001151
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НЕ понятно что должно получится и как использовать имя листа.

Да какая уж тут тайна, вот так же и долбишься пока не получится.
Может и не всегда стоит так усложнять, в один инструмент не стоит упираться, может посмотреть по сторонам.
Например, хорошая штука - сводная таблица. Можно сформировать отчёт, а потом уже из него с помощью функции ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ () вытягивать нужные данные для построения диаграмм.
...
Рейтинг: 0 / 0
Именованные диапазоны - 3. (Опять вопрос к Deggasad)
    #35001317
авторхорошая штука - сводная таблицанет уж, подсадил, понимаешь, на именованные диапазоны... авторНЕ понятно что должно получится и как использовать имя листаЗначит так, на нескольких листах (усл.имена "Лист2", "Лист3"...) создается по диаграмме. Данные всех диаграмм в одной таблице. В таблицу добавлено поле Код, содержащее имя листа. Данные отсортированы по Код и по Дате. Таким образом за один месяц таблица выглядит так: 30 строк для Лист2, 30 строк для Лист3 и т.д. Т.е. как бы блоки по 30 строк. А получиться должно, что MinRow и MaxRow должны обрабатывать не весь столбец Месяц, а только в пределах "блока". Имя листа ("Лист2",...) я использовал в выражении
Код: plaintext
ПОИСКПОЗ(Имя листа;table!$С:$С; 0 )
, типа: "найти в столбце С первое упоминание значения 'Имя листа'"
---------------------------------------------------------------------------------------------
Можно, конечно, формировать не одну исходную таблицу, а несколько, и не париться.....
...
Рейтинг: 0 / 0
Именованные диапазоны - 3. (Опять вопрос к Deggasad)
    #35001572
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот посмотри, в ту сторону идём али нет...
...
Рейтинг: 0 / 0
Именованные диапазоны - 3. (Опять вопрос к Deggasad)
    #35001797
Похоже...
Только, с учетом того, что ячейка table!$I$1 может содержать значение "Все", значения Min и Max д.б. другими. Для MinRow:
Код: plaintext
=ЕСЛИ(table!$I$ 1 ="Все";ПОИСКПОЗ(table!$J$ 1 ;table!$C:$C; 0 );МИН(ЕСЛИ(table!$C$ 2 :$C$ 4960 =table!$J$ 1 ;ЕСЛИ(table!$E$ 2 :$E$ 4960 =table!$I$ 1 ;СТРОКА(table!$C$ 2 :$C$ 4960 )))))
Для MaxRow:
Код: plaintext
=ЕСЛИ(table!$I$ 1 ="Все";ПОИСКПОЗ(table!$J$ 1 ;table!$C:$C; 1 );МАКС(ЕСЛИ(table!$C$ 2 :$C$ 4960 =table!$J$ 1 ;ЕСЛИ(table!$E$ 2 :$E$ 4960 =table!$I$ 1 ;СТРОКА(table!$C$ 2 :$C$ 4960 )))))
Правильно? (вроде работает)
...
Рейтинг: 0 / 0
Именованные диапазоны - 3. (Опять вопрос к Deggasad)
    #35001937
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если структура данных

лист1месяц1лист1месяц2лист2месяц1лист2месяц2
то вроде так должно быть

можно покороче

=МИН(ЕСЛИ(table!$C$2:$C$4960=table!$J$1;ЕСЛИ((table!$E$2:$E$4960=table!$I$1)+(I1="Все");СТРОКА(table!$C$2:$C$4960))))
=МАКС(ЕСЛИ(table!$C$2:$C$4960=table!$J$1;ЕСЛИ((table!$E$2:$E$4960=table!$I$1)+(I1="Все");СТРОКА(table!$C$2:$C$4960))))
...
Рейтинг: 0 / 0
Именованные диапазоны - 3. (Опять вопрос к Deggasad)
    #35003500
А вот вариант "покороче" не отрабатывает ситуацию I1="Все".
Добавил значения MinRowMy и MaxRowMy, результат - в приложенном файле.
...
Рейтинг: 0 / 0
Именованные диапазоны - 3. (Опять вопрос к Deggasad)
    #35003600
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень нужноА вот вариант "покороче" не отрабатывает ситуацию I1="Все".
Добавил значения MinRowMy и MaxRowMy, результат - в приложенном файле.
Там ошибки в формуле, причём очень глупые и сразу бросаются в глаза, как вы их не заметили, может не смотрели?

Исправил, смотрите
...
Рейтинг: 0 / 0
Именованные диапазоны - 3. (Опять вопрос к Deggasad)
    #35004920
Тьфу ты, это что ли: I1 без указания таблицы?
...
Рейтинг: 0 / 0
Именованные диапазоны - 3. (Опять вопрос к Deggasad)
    #35005265
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень нужноТьфу ты, это что ли: I1 без указания таблицы?
да, тут наверное я в заблуждение ввел частично.
...
Рейтинг: 0 / 0
Именованные диапазоны - 3. (Опять вопрос к Deggasad)
    #35005996
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коды в таблице отсортированы по алфавиту как в примере, то можно сильно упростить формулы:

MinRow =ПОИСКПОЗ($J$1;$C$2:$C$10;0)+СТРОКА($C$2)-1
MaxRow =ПОИСКПОЗ($J$1;$C$2:$C$10)+СТРОКА($C$2)-1


KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Именованные диапазоны - 3. (Опять вопрос к Deggasad)
    #35006009
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Коды в таблице отсортированы по алфавиту как в примере, то можно сильно упростить формулы:

MinRow =ПОИСКПОЗ($J$1;$C$2:$C$10;0)+СТРОКА($C$2)-1
MaxRow =ПОИСКПОЗ($J$1;$C$2:$C$10)+СТРОКА($C$2)-1


KL
[MVP - Microsoft Excel]

Упс, беру свои слова обратно :-)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Именованные диапазоны - 3. (Опять вопрос к Deggasad)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]