Рабочие полезности Excel с моей работы (Полезность 1)

Вчера пришёл Генеральный и говорит: "Нужно создать простой и понятный инструмент для составления графика работы водителя на предприятии".

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

Итак, решаем поэтапно задачу.

1. Сначала нужен общий вид этой визуализации.

Был придуман и разработан такой вид:

Рабочие полезности Excel с моей работы (Полезность 1) Microsoft Excel, Полезное, Фишки, Длиннопост, Скриншот

Пример отображения

2. Определяем настройки графика, которые нам нужны для отображения.

Вот такой набор настроек предлагается:
(Дополнительная ценность заключается в том, что можно выбрать интервал отображения - выпадающий список, месяц отображения - выпадающий список, указать год, время начала рабочего дня и его окончания. Графическое отображение графика изменится)

Рабочие полезности Excel с моей работы (Полезность 1) Microsoft Excel, Полезное, Фишки, Длиннопост, Скриншот

Настройки календаря для отображения информации

Из прикольного:

  • от изменения месяца меняется количество отображаемых дней;

  • от установленного интервала меняется отображение шапки таблицы;

  • от изменения времени начала и окончания рабочего дня также изменяется отображение;

  • всё оформлено в удобном виде с использованием выпадающих списков;

  • "заливка" календаря сформирована условным форматированием;

Т.е. заполняя постоянно таблицу с событиями в любой месяц можно получить отображение.

3. Оформляем таблицу для занесения информации.

У неё очень просто и понятный вид:

Рабочие полезности Excel с моей работы (Полезность 1) Microsoft Excel, Полезное, Фишки, Длиннопост, Скриншот

Таблица занесения информации о событиях

Умная таблица, которая легко продляется вниз.

4. "Всхлапываем" обе таблицы.

Тут я сразу должен сказать, что помогли ребята с известного форума.

Формулу, конечно, я переработал и получил такой её вид:

=ЕСЛИ(И($J3<>"";K$2<>"");--(ЕСЛИ(ИЛИ($J3="";K$1="");"";СУММПРОИЗВ(($J3=Таблица2[[Дата]:[Дата]])*((--ЛЕВСИМВ(K$1;5)>=Таблица2[[Время окончания]:[Время окончания]])+(--ПРАВСИМВ(K$1;5)<=Таблица2[[Время начала]:[Время начала]])=0)))>0);"")

Надо разобрать формулу, чтобы понять, что сделали ребята и как получили нужный результат. А что за результат? В календаре в задействованную дату и время выставляется 1 и на этой основе выстраивается условное форматирование.

Давайте разбирать поэтапно:

1. --ЛЕВСИМВ(K$1;5) - получает из строки "09:00 - 09:15" начальное_время в формате числовом (0,375) (если не значете, что это за число, то это 1/24/60*(9*60);

2. --ПРАВСИМВ(K$1;5) - - получает из строки "09:00 - 09:15" конечное_время в формате числовом (0,385416667) (если не значете, что это за число, то это 1/24/60*(9*60+15), где 15 - заданный временной интервал для отображения таблицы;

3. Соответственно, конструкция вида --ЛЕВСИМВ(K$1;5)>=Таблица2[[Время окончания]:[Время окончания]] возьмёт массив времени окончания и каждое значение сравнит с временем начала. Результатом такого действа для времени 09: 00 станет массив такого вида:

Рабочие полезности Excel с моей работы (Полезность 1) Microsoft Excel, Полезное, Фишки, Длиннопост, Скриншот

Что проверяется с помощью данного куска? Есть ли среди времени окончания такое, которое меньше для начала проверяемого интервала. Если нет, то формула выдаёт ЛОЖЬ

4. Аналогичным образом для начального времени операция вида --ПРАВСИМВ(K$1;5)<=Таблица2[[Время начала]:[Время начала]] выдаст результат:

Рабочие полезности Excel с моей работы (Полезность 1) Microsoft Excel, Полезное, Фишки, Длиннопост, Скриншот

Вид массива для времени окончания

5. Таким образом, операция вида (--ЛЕВСИМВ(K$1;5)>=Таблица2[[Время окончания]:[Время окончания]])+(--ПРАВСИМВ(K$1;5)<=Таблица2[[Время начала]:[Время начала]]) позволит получить массив такого вида:

Рабочие полезности Excel с моей работы (Полезность 1) Microsoft Excel, Полезное, Фишки, Длиннопост, Скриншот

Результат сложения массивов

6. Дальнее сравнение с 0 операции (--ЛЕВСИМВ(K$1;5)>=Таблица2[[Время окончания]:[Время окончания]])+(--ПРАВСИМВ(K$1;5)<=Таблица2[[Время начала]:[Время начала]])=0 приведёт к образованию массива вида:

Рабочие полезности Excel с моей работы (Полезность 1) Microsoft Excel, Полезное, Фишки, Длиннопост, Скриншот

Результат сравнения массива на шаге 5 с 0

Графическая интерпретация такова:

Рабочие полезности Excel с моей работы (Полезность 1) Microsoft Excel, Полезное, Фишки, Длиннопост, Скриншот

Графическая интерпретация выражения

7. Поскольку в столбце "↓↓ ДНИ ↓↓" на рисунке "Пример отображения" на самом деле находятся даты, то операция вида ($J3=Таблица2[[Дата]:[Дата]]) выдаст массив подходящих дат для даты 01.09.2023 такого вида:

Рабочие полезности Excel с моей работы (Полезность 1) Microsoft Excel, Полезное, Фишки, Длиннопост, Скриншот

Пример массива подходящих дат

8. После перемножения результата проверки даты с результатов проверки времени, если получат ИСТИНА, то всё, мы говорим, что это время задействовано.

9. СУММПРОИЗВ необходимо, чтобы проверить везде и по всем сочетаниям событий и проверяемой даты. Сравнение с ">0" просто приведёт к постановке исключительно "1" в ячейку, т.е. не будет учитываться количество раз, если пересечение есть несколько раз.

Решение гениально и просто. Приложение полностью рабочее!

Вот готовый файл!

P.S. Если Вам было полезно, то рассчитываем на благодарность (автор формулы не останется неудел)!

Лига помощи Excel

54 поста814 подписчиков

Добавить пост
39
Автор поста оценил этот комментарий
Хер с ними с формулами, вы как ячейки наискосок загнули?)
раскрыть ветку (1)
24
Автор поста оценил этот комментарий

Формат ячеек, вроде вторая вкладка, справа поворотный механизм))

1
Автор поста оценил этот комментарий
Позанудствую, но 1/24/60*(9*60) можно записать проще: 1/24*(9)
раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Все так, но это алгоритмически... так проще думать
8
Автор поста оценил этот комментарий
Спасибо. А то я уже беспокоился о нарушении трудовых прав.
раскрыть ветку (1)
4
Автор поста оценил этот комментарий

Нет-нет )) Просто проверялось как работает приложение в разных комбинациях )

показать ответы
11
Автор поста оценил этот комментарий
Почему рабочий день с 9 до 19?
раскрыть ветку (1)
4
Автор поста оценил этот комментарий

Ну это просто цифра, можете изменить под вас

показать ответы
10
Автор поста оценил этот комментарий

Я не понял, а в чем проблема просто ручками заполнять такую таблицу в экселе, нафига столько танцев с бубном и каких-то формул?

раскрыть ветку (1)
8
Автор поста оценил этот комментарий

Ну можно и яму каменным скребком рыть... ту дело каждого )

показать ответы
1
Автор поста оценил этот комментарий
Я бы посоветовал смотреть в сторону vba, всё таки. Я сам не гуру в этом, но гугление примеров и их адаптация (с гуглением синтаксиса) решает вопрос.

Из последнего: есть таблица с перечнем устройств с их ip адресами в экселе.
Задача - пропинговать и отметить результат в отдельном столбце.
Решение:
1.Экспорт столбца с адресами в csv файл.
2.Запуск пакетного файла с командой ping который берет данные из файла п.1 с сохранением файла в другой csv в виде IP - 'результат пинга'
3. Импорт данных из файла п.2 в крайний пустой столбец.

Повесил три действия на отдельные кнопки. Всё норм.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Если бы у Вас был офис 365, я бы вообще посоветовал использовать встроенный в него питон.

А вообще есть прям решение описанное на Excel:

Пингуем из Excel

показать ответы
Автор поста оценил этот комментарий
Да, про это решение я тоже знаю. Но есть там один минус. Книга зависает на время пинга. И если список на несколько сотен адресов, то ждать долго. В моем случае - я могу спокойно дополнять лист, править другие столбцы и т.д.
Кстати, спасибо за ссылку, весьма много полезного в комментах
раскрыть ветку (1)
Автор поста оценил этот комментарий
Ну зависает, поскольку идёт через основной процесс. Чтобы не висло, тут надо параллельно выполнять
1
Автор поста оценил этот комментарий

Обычно, сообщают водителю. Задачу. Лучше по вотсапу. А это - пример того, как даже такого рабочего человека как водитель - могут загрузить бумажной работой

раскрыть ветку (1)
Автор поста оценил этот комментарий
Чушь) Его не загружаются, а ведут график и за него. Не переворачивайте
показать ответы
5
Автор поста оценил этот комментарий

Извините, а можно водитель ничего не будет заполнять, а просто будет получать задания и делать свою работу...

раскрыть ветку (1)
Автор поста оценил этот комментарий
Да, секретарь заполнит за него... просто надо сообщить
показать ответы
Автор поста оценил этот комментарий
А как вам в личку написать?! Есть вопрос на который вы возможно сможете мне ответить или направить.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

@Rick1177 в телеге
Но ответить могу не сразу

показать ответы
3
Автор поста оценил этот комментарий

А ничему не учатся. Ставится защита - потом кто итоге понимает что делать, делается новая таблица, времянка. Она становится постоянной. Нельзя недооценивать предсказуемость тупизны


А так да, интересное решение. Опишите как править динамически количество ячеек в таблице от месяца

раскрыть ветку (1)
Автор поста оценил этот комментарий
Задай вопрос ещё раз? Какое динамическое количество ?
3
Автор поста оценил этот комментарий

Так в чём полезность таблицы?

Я правда не понимаю.

Ведь всё равно её приходится заполнять руками.

Зачем эта куча формул?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
В визуализации, которая упрощает ориентирование
показать ответы
Автор поста оценил этот комментарий
В формуле ЕСЛИ, чтобы не выводило ЛОЖЬ и ИСТИНА, можно задать "пиздит", "не пиздит".
А так - если на vba крутить - буковок было бы меньше, чем в формулах. Я так думаю. ..
раскрыть ветку (1)
Автор поста оценил этот комментарий

ЛОЖЬ и ИСТИНА разрешаю математические операции

показать ответы
1
Автор поста оценил этот комментарий
Правильно ниже сказано. Люди. Кто нибудь поправит табличку и все, приплыли.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ну ты начинаешь... здесь же можно и защиту поставить и прочее. Вот чего ты до мелочей дои*ался?

показать ответы
12
Автор поста оценил этот комментарий

Не вижу связи с ямой. Таблица из трех колонок элементарно заполняется ручками в реальном времени, а городить какие-то формулы и танцы с бубном, чтобы потом все равно заполнять ее ручками это бред какой-то. Да еще потом "дайте деняг"

раскрыть ветку (1)
6
Автор поста оценил этот комментарий

Таблица заполняет и получается визуальное отображение для удобного графического восприятия. Если эту информацию донести не удаётся, то я тогда не знаю. Таблицу можно и заполнять руками, но возможны пересечения и прочее. Я даже не знаю как объяснить полезность.

Да еще потом "дайте деняг" - тоже не вижу ничего ужасного. Люди поработали. Если кому-то решение нравится и полезно, то будем благодарны за материальную поддержку. Если не полезно - просто проходите мимо.

Ты, видимо, хейтер, который всем не доволен и не видит ни в чём полезности и ненавидит тех, кто за свою работу хочет вознаграждения. Ну видимо, нам с тобой не по пути ))

показать ответы
6
Автор поста оценил этот комментарий

"Таблица заполняет и получается визуальное отображение для удобного восприятия."

Таблица сама себя заполняет? А водитель ей информацию голосом передает? И ее отображение чем-то отличается от отображения таблицы, просто заполненной "по старинке"?


А насчет попрошайничества в инете - да, я хейтер

раскрыть ветку (1)
5
Автор поста оценил этот комментарий

Ну всё, нам не по пти, уходи )