Добавить пост
54 поста 811 подписчиков

Популярные теги в сообществе:

Офисное

Любишь Excel - люби и #ССЫЛКА!

Рабочие полезности 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. Если Вам было полезно, то рассчитываем на благодарность (автор формулы не останется неудел)!

Показать полностью 9

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

Извините, не мог пройти мимо! Меня прям конкретно задело какими же сложными формулами вы решаете эту задачу.

Раз уж это "Лига помощи Excel", выкладываю своё решение. Оно более динамичное, масштабируемое, с огромным потенциалом доработки. Сделано на PowerQuery + сводные таблицы.

Решение можно легко расширять до безграничности: прикрутить водителей с ФИО, статистику сколько кто проехал в месяц, и т.п.

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

Всем, кто читает этот пост, рекомендую изучать Эксель в такой последовательности: "умные" таблицы, сводные таблицы, условное форматирование, Power Query.

rick1177, если нужна доработка точно как у вас в примере (с полной сеткой дней), я доделаю.

Ссылка на файл.

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

График водителя на сводных таблицах и Power Query

Если вы профи в своем деле — покажите!

Если вы профи в своем деле — покажите! Косплей, Компьютерные игры, Литература, Самолет

Такую задачу поставил Little.Bit пикабушникам. И на его призыв откликнулись PILOTMISHA, MorGott и Lei Radna. Поэтому теперь вы знаете, как сделать игру, скрафтить косплей, написать историю и посадить самолет. А если еще не знаете, то смотрите и учитесь.

СМОТРЕТЬ, УЧИТЬСЯ

Начало работы с Excel

Наконец я нашел в себе силы и решил опубликовать первый пост. Все кто успешно использует Excel могут пропустить его, ибо он первый, и ориентирован на тех кто с Excel (Эксэ́ль) вообще не знаком и предпочитает писать на листочках и считать на калькуляторе. Разберу пример, который встретил на одном производстве.

Имеем небольшой склад где хранится все от батона до картона....

Начало работы с Excel Microsoft Excel, Начало, Обучение, Для чайников, Длиннопост

Здесь мы видим что 01.10.2010 на складе было некое перемещение материалов, которые кладовщик добросовестно отразил в отчете. Однако искушенный пользователь заметит некоторые ошибки введении отчетной деятельности. А именно:

- не все ячейки заполнены

-единицы измерения указаны в каждом случае

-материалы разных категорий находятся в одной группе

-единицы измерения разнятся

-неверно написана дата составления отчета

Другие ошибки не столько критичны, на них мы не будем заострять внимание.

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

Начало работы с Excel Microsoft Excel, Начало, Обучение, Для чайников, Длиннопост

Эти небольшие изменения уже экономят кучу времени на написании единиц измерения в каждой ячейки. Кроме этого, эти изменения позволяют нам применить функции Excel для автоматического расчета остатка. Для этого нужно выбрать  первую ячейку столбца "!Конечный остаток" (I4) и перейти на строку формул.Нажав на строку мы можем вводить данные в ячейку.

Начало работы с Excel Microsoft Excel, Начало, Обучение, Для чайников, Длиннопост

Но сейчас мы будем вводить не данные а формулу, которая сама будет рассчитывать конечный остаток, и нам не придется каждый раз считать и записывать его вручную. В данном случае мы обойдемся простой арифметикой, не используя функции. Все формулы в Excel начинаются с =, после того как вы нажали = выберите первую ячейку столбца "Начальный остаток" и адрес этой ячейки автоматически добавится в формулу, далее нажимаете + чтобы прибавить приход, и нажимаете на первую ячейку столбца "Приход". Следующем шагом будет вычитание расхода, для этого нажмите - и выберите первую ячейку столбца "Расход".  В итоге у вас должна получится вот такая формула

Начало работы с Excel Microsoft Excel, Начало, Обучение, Для чайников, Длиннопост

Если вы сделали все верно то нажав Enter вы получите конечный остаток, как видите ошибка допущенная при ручном расчете исключается, при использование формулы.

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

Начало работы с Excel Microsoft Excel, Начало, Обучение, Для чайников, Длиннопост
Начало работы с Excel Microsoft Excel, Начало, Обучение, Для чайников, Длиннопост

В итоге мы получили таблицу в которой нужно заполнить только приход и расход.

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

Показать полностью 5

Помощь по формулам и таблицам Excel

Обращайтесь!
Если что-то глобальное, в профиле контакты для связи.

Волшебный метод Match

В VBA Excel есть недодокументированный, но очень мощный и полезный метод Application.Match(). Есть метод-близнец WorksheetFunction.Match(). Работают они похожим образом, но возвращают разные результаты.

В VBA-коде лучше использовать именно Application.Match().

С помощью этого метода можно:

  • искать элементы (один или сразу несколько) в одномерных диапазонах и массивах;

  • сравнивать массивы и диапазоны на предмет наличия одинаковых элементов;

  • осуществлять точный и неточный поиск.

Скорость работы Application.Match() значительно выше, чем у циклов, перебирающих элементы массивов или, тем более, ячейки листов Excel.

Отдельно необходимо отметить, что метод этот довольно известный, но, как правило, не используемый на полную мощность. Так, многим неизвестно - и в официальной справке этого нет - что можно искать не одно значение, а массив значений. Также многие продолжают использовать неудобный вариант WorksheetFunction.Match() вместо удобного Application.Match().

С помощью Application.Match() можно, например, организовать, эффективный поиск множества подразделов на листе за одну операцию при обработке таблиц. Это позволяет сильно экономить по времени поиска и по количеству строчек кода. Также довольно просто можно применить этот метод для операций пересечения и сравнения множеств.

Синтаксис:

Application.Match(<что ищем>, <где ищем>, <как ищем>)

<Что ищем> может быть:

  • одно значение - переменная или константа, например «aaa», 123 или ValueToFind, причем различных типов - строка, число, дата, логическое.

    • текстовые значения могут содержать подстановочные знаки * (0+ любых символов),? (один любой символ). Их можно экранировать тильдой ~, если нужно найти именно * или ?

  • одномерный массив Array(«aaa», 123)

  • диапазон листа Excel (строка или столбец) Range("A1:A10"), Range("A1:F1")

<Где ищем> может быть:

  • одномерный массив, содержащий значения различных типов, например, Array(«aaa», 123)

  • диапазон листа Excel (строка или столбец) Range("A1:A10"), Range("A1:F1")

<Как ищем>:

  • 0 - точно. Массив <Где ищем> может быть неупорядоченным (неотсортированным)

  • -1 - поиск наименьшего значения. Массив <Где ищем> должен быть отсортирован по убыванию

  • 1 - поиск наибольшего значения. Массив <Где ищем> должен быть отсортирован по возрастанию

Application.Match() возвращает:

  • если <что ищем> – одно значение, то возвращается одно значение типа Double (индекс найденного значения в массиве, начиная с 1) или значение типа Error (если значение не найдено);

  • если <что ищем> – массив из N элементов, то возвращается массив, содержащий N значений типа Double (индекс найденного значения в массиве, начиная с 1) или значений типа Error (если значение не найдено).

Особенности:

  • если значение не найдено, возвращается значение ошибки #N/A [Error 2042] (метод WorksheetFunction.Match() в этом случае генерирует исключение)

  • поиск текста производится всегда регистронезависимо, т.е. прописные и строчные буквы А и а считаются одинаковыми, и не зависит от установки Option Compare { Binary | Text }

  • при успешном поиске Application.Match() возвращает для каждого искомого значения только первый индекс найденного элемента в <где ищем>. Т.е. если <что ищем> = 2,2 а в <где ищем> находится 2,1,2,2, то результатом будет массив 1,1 - обе двойки найдется в первом индексе.

  • Индексы нумеруются с 1 независимо от установки Option Base { 0 | 1 }.

Примеры применения Application.Match()

1. Ищем несколько текстов, в т.ч. по маске, в массиве:

Волшебный метод Match Microsoft Excel, Vba, Длиннопост, Проба пера

Данный код ищет строки «qqq» (три q или Q подряд) и «a?b» (строка из трех символов, начинающаяся на a или A, заканчивающаяся на b или B с любым символом посередине) в массиве arr, содержащем строки «AAA», «A5A», «Abb».

В результате работы кода в окне Immediate будет напечатано:

Error 2042

3

Этот результат означает, что строка "qqq" не найдена в массиве arr, а "a?b" соответствует третьему элементу "Abb".

2. Ищем значения из столбца A в столбце C:

Волшебный метод Match Microsoft Excel, Vba, Длиннопост, Проба пера

Этот код ищет значения из ячеек колонки A листа Excel в колонке C листа Excel. Результат выводится в цикле с предварительной проверкой, найден ли очередной элемент или нет. Эта проверка производится с помощью функции IsNumeric(), которая возвращает Истину в том случае, если аргумент - число. В том случае, если значение не найдено, в результирующем массиве будет находиться значение ошибки (Error), и IsNumeric() вернет Ложь. Также это можно проверить с помощью функции IsError(), которая возвращает Истину, если аргумент является значением ошибки.

Element 1 is found at index 9

Element 8888 not found (Error 2042)

Element 3 not found (Error 2042)

Element 4 not found (Error 2042)

Element 5 is found at index 4

Element 6 not found (Error 2042)

Element 7 is found at index 10

Element aaa is found at index 6

Element 9 not found (Error 2042)

Element 06.09.2022 is found at index 8

Показать полностью 2

Вопрос по работе функции Excel

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

Меряем мир в сосисках!

Пройдя этот тест, вы узнаете, сколько нужно сосисок, чтобы спуститься по ним на дно Марианской впадины. А еще сколько их можно съесть, пока длится самый долгий в мире поцелуй. Не пропустите!

НАЧАТЬ ВИКТОРИНУ

Нужна помощь с задачей

Задали нам в универе задачу. Я не то, чтобы тупенькая и эксель не очень хорошо знаю, но подобные задачи уже решала и всё было норм. А с этой какой-то затык.

Нужна помощь с задачей Microsoft Excel, Ошибка, Формула, Помощь, Учеба
Нужна помощь с задачей Microsoft Excel, Ошибка, Формула, Помощь, Учеба

Вот такое задание нужно сделать в экселе. Вроде бы ничего сложного. Выглядеть должно так:

Нужна помощь с задачей Microsoft Excel, Ошибка, Формула, Помощь, Учеба

Но когда я вводу всё формулы, у меня вылезает ошибка формулы.

Нужна помощь с задачей Microsoft Excel, Ошибка, Формула, Помощь, Учеба

Помогите, пожалуйста. Сила Пикабу, взываю к тебе!

Показать полностью 1
Отличная работа, все прочитано!