Здравствуйте форумчане и гости форума. Не получается протянуть формулу на весь год. Проблема в субботних и воскресных днях (выделил голубым цветом). Думаю в файле всё будет понятно. Сделал на 2 недели. Может, кто подскажет, как сделать это побыстрее?
Здравствуйте форумчане и гости форума. Не получается протянуть формулу на весь год. Проблема в субботних и воскресных днях (выделил голубым цветом). Думаю в файле всё будет понятно. Сделал на 2 недели. Может, кто подскажет, как сделать это побыстрее?DrMini
DrMini, День добрый. ответ от ИИ. Он мог накосячить со скобками и прочим)) В вашем файле проблема с отображением смен для выходных дней (суббота и воскресенье). Сейчас формула не учитывает автоматически, что в эти дни должна быть только дневная смена (07:00-16:00), а не ночная (16:00-07:00).
Исправленная формула (для Excel):
```excel
Код
=ЕСЛИ(ИЛИ(ДЕНЬНЕД(A$1-(ДЕНЬНЕД(A$1;2)-1)+(СТРОКА(A1)-1);2)=6;ДЕНЬНЕД(A$1-(ДЕНЬНЕД(A$1;2)-1)+(СТРОКА(A1)-1);2)=7); ТЕКСТ(A$1-(ДЕНЬНЕД(A$1;2)-1)+(СТРОКА(A1)-1);"ДДД ДД.ММ.ГГГГ") & " г. с 07:00 до 16:00" & ТЕКСТ(A$1-(ДЕНЬНЕД(A$1;2)-1)+(СТРОКА(A1)-1);" ДД.ММ.ГГГГ") & " г."; ТЕКСТ(A$1-(ДЕНЬНЕД(A$1;2)-1)+(СТРОКА(A1)-1);"ДДД ДД.ММ.ГГГГ") & " г. с 16:00 до 07:00" & ТЕКСТ(A$1-(ДЕНЬНЕД(A$1;2)-1)+СТРОКА(A2)-1;" ДД.ММ.ГГГГ") & " г.") )
```
Как это работает? 1. Проверка на выходные: - `ДЕНЬНЕД(дата;2)=6` → Суббота - `ДЕНЬНЕД(дата;2)=7` → Воскресенье - Если день выходной, показывает **дневную смену (07:00-16:00)**. - Если рабочий день — **ночную смену (16:00-07:00 следующего дня).
2. Формат даты: - `"ДДД ДД.ММ.ГГГГ"` → Например, **ПН 30.12.2024**. - Добавляется время смены и год.
**Как применить?** 1. Вставьте формулу в **ячейку A2**. 2. Протяните вниз на **365 строк** (на весь год). 3. Формула автоматически подстроится под выходные.
Ещё вариант
Код
=ТЕКСТ(A$1+СТРОКА(A1)-ДЕНЬНЕД(A$1;2);"ДДД ДД.ММ.ГГГГ")&" г. с "&ЕСЛИ(ДЕНЬНЕД(A$1+СТРОКА(A1)-ДЕНЬНЕД(A$1;2);2)>5;"07:00 до 16:00"&ТЕКСТ(A$1+СТРОКА(A1)-ДЕНЬНЕД(A$1;2);" ДД.ММ.ГГГГ");"16:00 до 07:00"&ТЕКСТ(A$1+СТРОКА(A2)-ДЕНЬНЕД(A$1;2);" ДД.ММ.ГГГГ"))&" г."
DrMini, День добрый. ответ от ИИ. Он мог накосячить со скобками и прочим)) В вашем файле проблема с отображением смен для выходных дней (суббота и воскресенье). Сейчас формула не учитывает автоматически, что в эти дни должна быть только дневная смена (07:00-16:00), а не ночная (16:00-07:00).
Исправленная формула (для Excel):
```excel
Код
=ЕСЛИ(ИЛИ(ДЕНЬНЕД(A$1-(ДЕНЬНЕД(A$1;2)-1)+(СТРОКА(A1)-1);2)=6;ДЕНЬНЕД(A$1-(ДЕНЬНЕД(A$1;2)-1)+(СТРОКА(A1)-1);2)=7); ТЕКСТ(A$1-(ДЕНЬНЕД(A$1;2)-1)+(СТРОКА(A1)-1);"ДДД ДД.ММ.ГГГГ") & " г. с 07:00 до 16:00" & ТЕКСТ(A$1-(ДЕНЬНЕД(A$1;2)-1)+(СТРОКА(A1)-1);" ДД.ММ.ГГГГ") & " г."; ТЕКСТ(A$1-(ДЕНЬНЕД(A$1;2)-1)+(СТРОКА(A1)-1);"ДДД ДД.ММ.ГГГГ") & " г. с 16:00 до 07:00" & ТЕКСТ(A$1-(ДЕНЬНЕД(A$1;2)-1)+СТРОКА(A2)-1;" ДД.ММ.ГГГГ") & " г.") )
```
Как это работает? 1. Проверка на выходные: - `ДЕНЬНЕД(дата;2)=6` → Суббота - `ДЕНЬНЕД(дата;2)=7` → Воскресенье - Если день выходной, показывает **дневную смену (07:00-16:00)**. - Если рабочий день — **ночную смену (16:00-07:00 следующего дня).
2. Формат даты: - `"ДДД ДД.ММ.ГГГГ"` → Например, **ПН 30.12.2024**. - Добавляется время смены и год.
**Как применить?** 1. Вставьте формулу в **ячейку A2**. 2. Протяните вниз на **365 строк** (на весь год). 3. Формула автоматически подстроится под выходные.
Ещё вариант
Код
=ТЕКСТ(A$1+СТРОКА(A1)-ДЕНЬНЕД(A$1;2);"ДДД ДД.ММ.ГГГГ")&" г. с "&ЕСЛИ(ДЕНЬНЕД(A$1+СТРОКА(A1)-ДЕНЬНЕД(A$1;2);2)>5;"07:00 до 16:00"&ТЕКСТ(A$1+СТРОКА(A1)-ДЕНЬНЕД(A$1;2);" ДД.ММ.ГГГГ");"16:00 до 07:00"&ТЕКСТ(A$1+СТРОКА(A2)-ДЕНЬНЕД(A$1;2);" ДД.ММ.ГГГГ"))&" г."
Для меня RGB это аббревиатура английских слов Red, Green, Blue — красный, зелёный, синий. Что это означает в Excel — не понимаю. Ещё раз большое спасибо.
Спасибо прохожий2019. Всё считает правильно. А я уже думал за неделю добью в ручную.
Для меня RGB это аббревиатура английских слов Red, Green, Blue — красный, зелёный, синий. Что это означает в Excel — не понимаю. Ещё раз большое спасибо.DrMini
ну это нейросетка такая... аналоговая - Ruled sheet, Gray Substance и Blue pen - я ей как-то с детства пользуюсь и вообще рекомендую... )))[/offtop]прохожий2019
прохожий2019, да, добрался до компа.. увидел))) макросный вариант прикладываю, с формулами.. наверно.. оптимальный с доп столбцом как у Вас....
прохожий2019, да, добрался до компа.. увидел))) макросный вариант прикладываю, с формулами.. наверно.. оптимальный с доп столбцом как у Вас....cmivadwot
прохожий2019, у меня с LET и LAMBDA не зашло.заругался))).. надо чет ковырять, включать, забил. Важно! Для работы формулы должны быть включены функции: LET (ЛИСТ) LAMBDA (ЛЯМБДА) Dynamic Arrays (динамические массивы)
посмотрел ваш файл-формулу и она поломалась))))
прохожий2019, у меня с LET и LAMBDA не зашло.заругался))).. надо чет ковырять, включать, забил. Важно! Для работы формулы должны быть включены функции: LET (ЛИСТ) LAMBDA (ЛЯМБДА) Dynamic Arrays (динамические массивы)
посмотрел ваш файл-формулу и она поломалась))))cmivadwot
нет, это макросы включать надо; а вот встроенные функции - они либо встроены, либо нет - просто версия, которая заявлена у вас в профиле не соответствует той, на которой "поломалась"
нет, это макросы включать надо; а вот встроенные функции - они либо встроены, либо нет - просто версия, которая заявлена у вас в профиле не соответствует той, на которой "поломалась"
пы.сы. динамические массивы - НЕ функцияпрохожий2019
написал вчера древнюю формулу, не успел прикрепить, раб.день закончился, ну не выкидывать же)
Код
=ТЕКСТ(ЦЕЛОЕ((СТРОКА(A1)-1)/9)*7+ВЫБОР(ОСТАТ(СТРОКА(A1)-1;9)+1;0;1;2;3;4;5;5;6;6)+$A$1;"ДДД ДД.ММ.ГГГГ")&ЕСЛИ(ЕОШ(ПОИСК(ОСТАТ(СТРОКА(A1)-1;9);57));" г. с 16:00 до 07:00";" г. с 07:00 до 16:00")&ТЕКСТ(ЦЕЛОЕ((СТРОКА(A1)-1)/9)*7+ВЫБОР(ОСТАТ(СТРОКА(A1)-1;9)+1;0;1;2;3;4;5;5;6;6)+$A$1+ЕОШ(ПОИСК(ОСТАТ(СТРОКА(A1)-1;9);57));" ДД.ММ.ГГГГ")&" г."
написал вчера древнюю формулу, не успел прикрепить, раб.день закончился, ну не выкидывать же)
Код
=ТЕКСТ(ЦЕЛОЕ((СТРОКА(A1)-1)/9)*7+ВЫБОР(ОСТАТ(СТРОКА(A1)-1;9)+1;0;1;2;3;4;5;5;6;6)+$A$1;"ДДД ДД.ММ.ГГГГ")&ЕСЛИ(ЕОШ(ПОИСК(ОСТАТ(СТРОКА(A1)-1;9);57));" г. с 16:00 до 07:00";" г. с 07:00 до 16:00")&ТЕКСТ(ЦЕЛОЕ((СТРОКА(A1)-1)/9)*7+ВЫБОР(ОСТАТ(СТРОКА(A1)-1;9)+1;0;1;2;3;4;5;5;6;6)+$A$1+ЕОШ(ПОИСК(ОСТАТ(СТРОКА(A1)-1;9);57));" ДД.ММ.ГГГГ")&" г."
прохожий2019, а точно ли.... Еесли вы хотите использовать функции **LET** и **LAMBDA** в Microsoft 365 (Office 365), их нужно включить, так как они относятся к **новым функциям Excel**.
### **Как проверить и включить новые функции?** 1. **Убедитесь, что у вас актуальная версия Microsoft 365** - Эти функции доступны только в последних версиях Excel (подписка Microsoft 365). - Откройте Excel → **Файл** → **Учетная запись** → **Параметры обновления** → **Обновить сейчас**.
2. **Проверьте, включены ли новые функции** - Перейдите в: **Файл** → **Параметры** → **Формулы** - В разделе **"Работа с формулами"** убедитесь, что стоит галочка: ✅ **"Включить новые функции для вычислений"**
3. **Если функции всё равно не работают** - Возможно, ваш Excel не поддерживает их (например, если у вас старая версия). - Проверьте синтаксис: - `=LET(имя, значение, выражение)` - `=LAMBDA([параметры], вычисление)`
прохожий2019, а точно ли.... Еесли вы хотите использовать функции **LET** и **LAMBDA** в Microsoft 365 (Office 365), их нужно включить, так как они относятся к **новым функциям Excel**.
### **Как проверить и включить новые функции?** 1. **Убедитесь, что у вас актуальная версия Microsoft 365** - Эти функции доступны только в последних версиях Excel (подписка Microsoft 365). - Откройте Excel → **Файл** → **Учетная запись** → **Параметры обновления** → **Обновить сейчас**.
2. **Проверьте, включены ли новые функции** - Перейдите в: **Файл** → **Параметры** → **Формулы** - В разделе **"Работа с формулами"** убедитесь, что стоит галочка: ✅ **"Включить новые функции для вычислений"**
3. **Если функции всё равно не работают** - Возможно, ваш Excel не поддерживает их (например, если у вас старая версия). - Проверьте синтаксис: - `=LET(имя, значение, выражение)` - `=LAMBDA([параметры], вычисление)`cmivadwot