Дамы и господа, здравствуйте! Помогите пожалуйста, нужно сделать формулу по которой будет выводиться кворум общего собрания на определенную дату. Фильтрами это решается, но хочется автоматизации. Нужно при выборе на листе "Кворум" даты собрания из списка, выводить рядом список лиц из столбца "Полное наименование", имеющих право на участие в собрании на дату его проведения из массива данных на листе "Даты включения и исключения". Формируется таким образом: например выбираем из дату собрания 12.03.2020, в нем имеют право участвовать все, кто включен в реестр до этой даты по столбцу "дата включения в реестр" И одновременно не был исключен до указанной даты ни Правлением по столбцу "Дата протокола Правления об исключении" ни общим собранием по столбцу "Дата прекращения членства собранием". Вроде задачка простая, а как выдачу вывести не понимаю с привязкой к выбору даты собрания. Заранее спасибо!!
Дамы и господа, здравствуйте! Помогите пожалуйста, нужно сделать формулу по которой будет выводиться кворум общего собрания на определенную дату. Фильтрами это решается, но хочется автоматизации. Нужно при выборе на листе "Кворум" даты собрания из списка, выводить рядом список лиц из столбца "Полное наименование", имеющих право на участие в собрании на дату его проведения из массива данных на листе "Даты включения и исключения". Формируется таким образом: например выбираем из дату собрания 12.03.2020, в нем имеют право участвовать все, кто включен в реестр до этой даты по столбцу "дата включения в реестр" И одновременно не был исключен до указанной даты ни Правлением по столбцу "Дата протокола Правления об исключении" ни общим собранием по столбцу "Дата прекращения членства собранием". Вроде задачка простая, а как выдачу вывести не понимаю с привязкой к выбору даты собрания. Заранее спасибо!!zver005
i691198, Выводить список нужно в столбец С листа "Кворум" после выбора параметра (даты) в столбце "Выберите дату ОС" из наименований, выбранных в столбце "Полное наименование" с листа Даты включения и исключения, Мне нужна формула, не макрос, в макросы я не умею совсем, а с формулой разберусь. Спасибо!
i691198, Выводить список нужно в столбец С листа "Кворум" после выбора параметра (даты) в столбце "Выберите дату ОС" из наименований, выбранных в столбце "Полное наименование" с листа Даты включения и исключения, Мне нужна формула, не макрос, в макросы я не умею совсем, а с формулой разберусь. Спасибо!zver005
Егор
Сообщение отредактировал zver005 - Суббота, 20.05.2023, 23:28
i691198, Спасибо большое! Немного не бьются выводимые данные (( в целом синтаксис я почти понял, попробую докрутить.
Если можно пара пояснений по формуле:
Код
=ЕСЛИОШИБКА(ИНДЕКС('Даты включения и исключения'!$B$2:$B$212;НАИМЕНЬШИЙ(ЕСЛИ(('Даты включения и исключения'!$D$2:$D$212<$D$1)*('Даты включения и исключения'!$D$2:$D$212<>"")*(('Даты включения и исключения'!$E$2:$E$212="")*('Даты включения и исключения'!$F$2:$F$212=""))+('Даты включения и исключения'!$E$2:$E$212>$D$1)+('Даты включения и исключения'!$F$2:$F$212>$D$1);СТРОКА($E$1:$E$211));СТРОКА(F1)));"")
Правильно ли я понял: ИНДЕКС('Даты включения и исключения'!$B$2:$B$212 - эта часть задает массив из которого возвращаются данные ЕСЛИ(('Даты включения и исключения'!$D$2:$D$212<$D$1) - эта часть определяет выборку чтобы вступил в члены до собрания, т.е. меньше заданной даты ('Даты включения и исключения'!$D$2:$D$212<>"")*(('Даты включения и исключения'!$E$2:$E$212="")*('Даты включения и исключения'!$F$2:$F$212="")) - это убирает пустые ячейки??
не понимаю еще значение операторов * и + - это вместо "и" и "или"? и зачем оператор НАИМЕНЬШИЙ ? Можно ли это сделать через применение внутри ЕСЛИ "И" "ИЛИ"? Спасибо еще раз!
i691198, Спасибо большое! Немного не бьются выводимые данные (( в целом синтаксис я почти понял, попробую докрутить.
Если можно пара пояснений по формуле:
Код
=ЕСЛИОШИБКА(ИНДЕКС('Даты включения и исключения'!$B$2:$B$212;НАИМЕНЬШИЙ(ЕСЛИ(('Даты включения и исключения'!$D$2:$D$212<$D$1)*('Даты включения и исключения'!$D$2:$D$212<>"")*(('Даты включения и исключения'!$E$2:$E$212="")*('Даты включения и исключения'!$F$2:$F$212=""))+('Даты включения и исключения'!$E$2:$E$212>$D$1)+('Даты включения и исключения'!$F$2:$F$212>$D$1);СТРОКА($E$1:$E$211));СТРОКА(F1)));"")
Правильно ли я понял: ИНДЕКС('Даты включения и исключения'!$B$2:$B$212 - эта часть задает массив из которого возвращаются данные ЕСЛИ(('Даты включения и исключения'!$D$2:$D$212<$D$1) - эта часть определяет выборку чтобы вступил в члены до собрания, т.е. меньше заданной даты ('Даты включения и исключения'!$D$2:$D$212<>"")*(('Даты включения и исключения'!$E$2:$E$212="")*('Даты включения и исключения'!$F$2:$F$212="")) - это убирает пустые ячейки??
не понимаю еще значение операторов * и + - это вместо "и" и "или"? и зачем оператор НАИМЕНЬШИЙ ? Можно ли это сделать через применение внутри ЕСЛИ "И" "ИЛИ"? Спасибо еще раз!zver005
Егор
Сообщение отредактировал zver005 - Понедельник, 22.05.2023, 15:19
zver005, Обратите внимание, что это формула массива и есть некоторые отличия от немассивных формул. Начиная с "ЕСЛИ(" и до ");СТРОКА($E$1:$E$211)" все это одно логическое выражение. В формулах массива не работают условные операторы И и ИЛИ, вместо них используются математические символы * и +, синтаксис немного другой, например вместо выражения И(A>B; C<D) нужно записать (A>B)*(C<D), каждое отдельное логическое условие заключается в скобки. И еще обратите внимание, что в логических условиях сравниваются значения диапазона и одной ячейки. В результате получается массив, состоящий из значений "ИСТИНА" и "ЛОЖЬ". В качестве результата функции ЕСЛИ, соответствующего значению ИСТИНА, также указан массив СТРОКА($E$1:$E$211) (по сути это массив, состоящий из последовательных чисел от 1 до 211). Работает это так - производится построчная проверка условий и формируется массив, в строках где условие выполняется элементу массива присваивается номер этой строки, а если не выполняется то присваивается значение "ЛОЖЬ". (Что то типа такого -ЛОЖЬ; 2; 3; ЛОЖЬ; 5; 6; ЛОЖЬ и т .д). Затем этот массив обрабатывается функцией НАИМЕНЬШИЙ, вторым аргументом которой является функция "СТРОКА(F1)", т.е. при протягивании формулы будут последовательно выведены из массива $B$2:$B$212 только те значения, в строках которых выполняются логические условия. И последнее - размер всех диапазонов должен быть одинаковый.
zver005, Обратите внимание, что это формула массива и есть некоторые отличия от немассивных формул. Начиная с "ЕСЛИ(" и до ");СТРОКА($E$1:$E$211)" все это одно логическое выражение. В формулах массива не работают условные операторы И и ИЛИ, вместо них используются математические символы * и +, синтаксис немного другой, например вместо выражения И(A>B; C<D) нужно записать (A>B)*(C<D), каждое отдельное логическое условие заключается в скобки. И еще обратите внимание, что в логических условиях сравниваются значения диапазона и одной ячейки. В результате получается массив, состоящий из значений "ИСТИНА" и "ЛОЖЬ". В качестве результата функции ЕСЛИ, соответствующего значению ИСТИНА, также указан массив СТРОКА($E$1:$E$211) (по сути это массив, состоящий из последовательных чисел от 1 до 211). Работает это так - производится построчная проверка условий и формируется массив, в строках где условие выполняется элементу массива присваивается номер этой строки, а если не выполняется то присваивается значение "ЛОЖЬ". (Что то типа такого -ЛОЖЬ; 2; 3; ЛОЖЬ; 5; 6; ЛОЖЬ и т .д). Затем этот массив обрабатывается функцией НАИМЕНЬШИЙ, вторым аргументом которой является функция "СТРОКА(F1)", т.е. при протягивании формулы будут последовательно выведены из массива $B$2:$B$212 только те значения, в строках которых выполняются логические условия. И последнее - размер всех диапазонов должен быть одинаковый.i691198