Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вывести только рабочие дни за месяц + вывод данных списка - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Google Docs » Вывести только рабочие дни за месяц + вывод данных списка (Формулы/Formulas)
Вывести только рабочие дни за месяц + вывод данных списка
CrystalRage Дата: Среда, 01.02.2023, 17:34 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Добрый вечер!

Первый вопрос:
Подскажите, каким образом можно убрать все выходные дни из строки, в которой отображены все дни месяца

Второй вопрос:
(допустим) есть 3 столбца с данными, как можно по выбору из выпадающего списка отобразить под ним все данные?

Пример на скрине https://prnt.sc/qyEVauvp_dCf
 
Ответить
СообщениеДобрый вечер!

Первый вопрос:
Подскажите, каким образом можно убрать все выходные дни из строки, в которой отображены все дни месяца

Второй вопрос:
(допустим) есть 3 столбца с данными, как можно по выбору из выпадающего списка отобразить под ним все данные?

Пример на скрине https://prnt.sc/qyEVauvp_dCf

Автор - CrystalRage
Дата добавления - 01.02.2023 в 17:34
Gustav Дата: Среда, 01.02.2023, 23:21 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2697
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Пойдём с конца
Пример на скрине

Нет примера, ссылка не работает, во всяком случае, у меня не открылась от слова "совсем".

Второй вопрос

В условиях информационного голода (ни живого примера, ни картинки даже) всё, что могу сказать: скорее всего, можно сделать с помощью функции FILTER.

Первый вопрос:
Подскажите, каким образом можно убрать все выходные дни из строки, в которой отображены все дни месяца

А вот здесь, наверное, подскажу и без примера - опять-таки с помощью функции FILTER.

Первым делом предлагаю оформить месячный календарь в строке (последовательность чисел одного месяца) в виде именованной функции (по меню "Данные \ Именованные функции"):
[vba]
Код
Название функции: ZMONTH_DAY_SEQUENCE
Плейсхолдеры аргумента: year; month
Определение формулы: =SEQUENCE(1; DAY(DATE(year;month+1;)); DATE(year;month;1))
[/vba]
Тогда формула генерации последовательности чисел месяца в строке без суббот и воскресений на примере февраля 2023 (формула вводится в одну ячейку, соответствующую 1-му числу месяца):
[vba]
Код
=FILTER(ZMONTH_DAY_SEQUENCE(2023;2); WEEKDAY(ZMONTH_DAY_SEQUENCE(2023;2); 2) < 6)
[/vba]
После расчета дней месяца (вправо от ячейки ввода) нужно будет ячейкам, в которые поместилась последовательность, назначить формат даты.

Если помимо суббот и воскресений захочется исключить из последовательности еще и праздничные дни (не совпадающие с сб и вс), то сначала нужно будет в свободном месте рабочего листа заготовить диапазон таких праздничных дней и присвоить ему имя "Праздники_2023" (по меню "Данные \ Настроить именованные диапазоны"):


После этого, используя новое имя диапазона, можно придать формуле следующий вид:
[vba]
Код
=FILTER(ZMONTH_DAY_SEQUENCE(2023;2); WORKDAY.INTL(ZMONTH_DAY_SEQUENCE(2023;2)-1; 1; 1; Праздники_2023) = ZMONTH_DAY_SEQUENCE(2023;2))
[/vba]
Как вы сможете увидеть, вторая формула исключит из последовательности дополнительно 23 и 24 февраля 2023.
К сообщению приложен файл: 5768054.png (3.2 Kb)


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Среда, 01.02.2023, 23:22
 
Ответить
СообщениеПойдём с конца
Пример на скрине

Нет примера, ссылка не работает, во всяком случае, у меня не открылась от слова "совсем".

Второй вопрос

В условиях информационного голода (ни живого примера, ни картинки даже) всё, что могу сказать: скорее всего, можно сделать с помощью функции FILTER.

Первый вопрос:
Подскажите, каким образом можно убрать все выходные дни из строки, в которой отображены все дни месяца

А вот здесь, наверное, подскажу и без примера - опять-таки с помощью функции FILTER.

Первым делом предлагаю оформить месячный календарь в строке (последовательность чисел одного месяца) в виде именованной функции (по меню "Данные \ Именованные функции"):
[vba]
Код
Название функции: ZMONTH_DAY_SEQUENCE
Плейсхолдеры аргумента: year; month
Определение формулы: =SEQUENCE(1; DAY(DATE(year;month+1;)); DATE(year;month;1))
[/vba]
Тогда формула генерации последовательности чисел месяца в строке без суббот и воскресений на примере февраля 2023 (формула вводится в одну ячейку, соответствующую 1-му числу месяца):
[vba]
Код
=FILTER(ZMONTH_DAY_SEQUENCE(2023;2); WEEKDAY(ZMONTH_DAY_SEQUENCE(2023;2); 2) < 6)
[/vba]
После расчета дней месяца (вправо от ячейки ввода) нужно будет ячейкам, в которые поместилась последовательность, назначить формат даты.

Если помимо суббот и воскресений захочется исключить из последовательности еще и праздничные дни (не совпадающие с сб и вс), то сначала нужно будет в свободном месте рабочего листа заготовить диапазон таких праздничных дней и присвоить ему имя "Праздники_2023" (по меню "Данные \ Настроить именованные диапазоны"):


После этого, используя новое имя диапазона, можно придать формуле следующий вид:
[vba]
Код
=FILTER(ZMONTH_DAY_SEQUENCE(2023;2); WORKDAY.INTL(ZMONTH_DAY_SEQUENCE(2023;2)-1; 1; 1; Праздники_2023) = ZMONTH_DAY_SEQUENCE(2023;2))
[/vba]
Как вы сможете увидеть, вторая формула исключит из последовательности дополнительно 23 и 24 февраля 2023.

Автор - Gustav
Дата добавления - 01.02.2023 в 23:21
CrystalRage Дата: Четверг, 02.02.2023, 14:25 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Извиняюсь за ссылку. Прикрепил скрин.
Со списками сделал так (не с примера):
=arrayformula(
IF(E1="Группа 1";A2:A7;
IF(E1="Группа 2";B2:B7;
IF(E1="Группа 3";C2:C7;
))))
Это, вроде как, хорошо работает с 1 выпадающим списком.
Попробовал вложить еще по IF внутрь, с проверкой другой ячейки (где из списка школа) - работают только первые 2 условия, а остальные выводят False.
Как правильно сделать, если появляется 2ой выпадающий список? (второй скрин, школа-здание-класс: в 1 списке выбираем школу, во 2 списке выбираем здание и под этим списком выводим все классы этого здания) + должна быть возможность на ячейки повесить ссылки на другие листы
К сообщению приложен файл: 8329996.png (58.9 Kb) · 2603908.png (49.1 Kb)


Сообщение отредактировал CrystalRage - Четверг, 02.02.2023, 18:55
 
Ответить
СообщениеИзвиняюсь за ссылку. Прикрепил скрин.
Со списками сделал так (не с примера):
=arrayformula(
IF(E1="Группа 1";A2:A7;
IF(E1="Группа 2";B2:B7;
IF(E1="Группа 3";C2:C7;
))))
Это, вроде как, хорошо работает с 1 выпадающим списком.
Попробовал вложить еще по IF внутрь, с проверкой другой ячейки (где из списка школа) - работают только первые 2 условия, а остальные выводят False.
Как правильно сделать, если появляется 2ой выпадающий список? (второй скрин, школа-здание-класс: в 1 списке выбираем школу, во 2 списке выбираем здание и под этим списком выводим все классы этого здания) + должна быть возможность на ячейки повесить ссылки на другие листы

Автор - CrystalRage
Дата добавления - 02.02.2023 в 14:25
Gustav Дата: Пятница, 03.02.2023, 17:20 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2697
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Не очень понимаю, что Вам в конце концов надо с этими списками. Живой пример не даёте, а по фотографиям у нас здесь обычно не лечат (если только вопрос и ответ не столь очевидны, как Ваш первый вопрос, когда иллюстрации не требуются). Задайте себе простой вопрос: как человек, даже если он знает и готов ответить, будет отвечать на Ваш вопрос? Описательными словесами? Тоже фотографиями? Или всё же лучше получить живую таблицу с настроенным новым функционалом? А если живая таблица лучше, то дайте ее отвечающему(-щим) как исходный материал для пробы и отладки. Не самому же ему набивать значения в ячейки с Ваших картинок!

Теперь по сути. У меня есть пример с зависимыми списками здесь:
https://docs.google.com/spreads....sharing
(id таблицы 1uFmAC9VFNEwF7dPWz5WRgCLQvSlEFzXQ8jy9yHXkSZQ )

Посмотрите, вдруг подойдёт.
К сообщению приложен файл: 8020899.png (142.6 Kb)


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеНе очень понимаю, что Вам в конце концов надо с этими списками. Живой пример не даёте, а по фотографиям у нас здесь обычно не лечат (если только вопрос и ответ не столь очевидны, как Ваш первый вопрос, когда иллюстрации не требуются). Задайте себе простой вопрос: как человек, даже если он знает и готов ответить, будет отвечать на Ваш вопрос? Описательными словесами? Тоже фотографиями? Или всё же лучше получить живую таблицу с настроенным новым функционалом? А если живая таблица лучше, то дайте ее отвечающему(-щим) как исходный материал для пробы и отладки. Не самому же ему набивать значения в ячейки с Ваших картинок!

Теперь по сути. У меня есть пример с зависимыми списками здесь:
https://docs.google.com/spreads....sharing
(id таблицы 1uFmAC9VFNEwF7dPWz5WRgCLQvSlEFzXQ8jy9yHXkSZQ )

Посмотрите, вдруг подойдёт.

Автор - Gustav
Дата добавления - 03.02.2023 в 17:20
Gustav Дата: Суббота, 04.02.2023, 21:54 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2697
Репутация: 1123 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Опытный программист таблиц Google Max Makhrov подсказал более изящную формулу для генерации трудовых будней месяца. С учётом его рекомендаций предыдущие формулы для первого вопроса (см. сообщение №2) можно переписать соответственно так:

[vba]
Код
=LAMBDA(day; FILTER(day; WEEKDAY(day;2) < 6))
(LAMBDA(year; month; SEQUENCE(1; DAY(DATE(year;month+1;)); DATE(year;month;1)))
(2023;2))
[/vba]и
[vba]
Код
=LAMBDA(day; FILTER(day; WORKDAY.INTL(day-1;1;1;Праздники_2023) = day))
(LAMBDA(year; month; SEQUENCE(1; DAY(DATE(year;month+1;)); DATE(year;month;1)))
(2023;2))
[/vba]
Фишка здесь в том, что последовательность дней месяца генерируется только один раз и присваивается переменной, которая далее используется в других вычислениях. В результате вся формула ограничивается одной ячейкой, без необходимости создания и использования именованной функции.

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

[p.s.]А с нашей второй формулой можно пойти ещё дальше и попробовать внедрить годовой (2023) справочник праздников прямо в формулу:[/p.s.]
[vba]
Код
=LAMBDA(holidays; day; FILTER(day; WORKDAY.INTL(day-1;1;1;holidays) = day))
(SPLIT(SUBSTITUTE("2.1_3.1_4.1_5.1_6.1_23.2_24.2_8.3_1.5_8.5_9.5_12.6_6.11_";"_";".23_");"_");
LAMBDA(year; month; SEQUENCE(1;DAY(DATE(year;month+1;)); DATE(year;month;1)))
(2023;2))
[/vba]


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Суббота, 04.02.2023, 22:34
 
Ответить
СообщениеОпытный программист таблиц Google Max Makhrov подсказал более изящную формулу для генерации трудовых будней месяца. С учётом его рекомендаций предыдущие формулы для первого вопроса (см. сообщение №2) можно переписать соответственно так:

[vba]
Код
=LAMBDA(day; FILTER(day; WEEKDAY(day;2) < 6))
(LAMBDA(year; month; SEQUENCE(1; DAY(DATE(year;month+1;)); DATE(year;month;1)))
(2023;2))
[/vba]и
[vba]
Код
=LAMBDA(day; FILTER(day; WORKDAY.INTL(day-1;1;1;Праздники_2023) = day))
(LAMBDA(year; month; SEQUENCE(1; DAY(DATE(year;month+1;)); DATE(year;month;1)))
(2023;2))
[/vba]
Фишка здесь в том, что последовательность дней месяца генерируется только один раз и присваивается переменной, которая далее используется в других вычислениях. В результате вся формула ограничивается одной ячейкой, без необходимости создания и использования именованной функции.

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

[p.s.]А с нашей второй формулой можно пойти ещё дальше и попробовать внедрить годовой (2023) справочник праздников прямо в формулу:[/p.s.]
[vba]
Код
=LAMBDA(holidays; day; FILTER(day; WORKDAY.INTL(day-1;1;1;holidays) = day))
(SPLIT(SUBSTITUTE("2.1_3.1_4.1_5.1_6.1_23.2_24.2_8.3_1.5_8.5_9.5_12.6_6.11_";"_";".23_");"_");
LAMBDA(year; month; SEQUENCE(1;DAY(DATE(year;month+1;)); DATE(year;month;1)))
(2023;2))
[/vba]

Автор - Gustav
Дата добавления - 04.02.2023 в 21:54
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Google Docs » Вывести только рабочие дни за месяц + вывод данных списка (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!