Всем привет!
Хотел бы поделиться своим небольшим опытом работы в Excel при создании и наполнении базы данных оборудования и обработке большого количества данных разного формата. Данная статья поможет ускорить работу в Excel начинающим специалистам.
Очень часто сталкиваешься со следующей задачей. Есть таблица с искомыми данными. Необходимо эти данные добавить в другую таблицу в соответствии с уникальными ключами (в моем случае это ID из ПО Bimeister, SAP и т. д.). Для такой задачи используются функции ВПР, ИНДЕКС + ПОИСКПОЗ, и относительно новая функция ПРОСМОТРX. Работа этих функций, на мой взгляд, хорошо описана на сайте «Планета Excel». Однако для более целостного восприятия материала, считаю нужным немного рассказать о ней.
Функция ПРОСМОТРX
В моей работе до 30% рабочего времени приходится использовать либо эту функцию, либо её аналоги. Данная функция появилась в январе 2020 года. Соответственно, более ранние версии MS Excel не имеют её в своем арсенале.
Рассмотрим пример. Имеется «Таблица 1», в которую надо внести данные в столбец «Максимальный расход» из «Таблицы 2», на основании «ключа» - столбца «Системный номер ID».
![Таблица 1 Таблица 1](https://habrastorage.org/getpro/habr/upload_files/824/9a8/c54/8249a8c54106c1c67d61823b13c5465d.png)
![Таблица 2. Таблица 2.](https://habrastorage.org/getpro/habr/upload_files/57f/22f/215/57f22f215283ef590e71d9953ff92614.png)
В упрощенном виде данная функция имеет следующий синтаксис:
=ПРОСМОТРX(искомое_значение; просматриваемый_массив; возвращаемый_массив)
«Искомое_значение» — значение из столбца «Системный номер ID» в текущей строке;
«Просматриваемый_массив» — Excel ищет значение и «запоминает» номер строки в этом столбце;
«Возвращаемый_массив» — Excel возвращает элемент этого столбца, под номером, который был найден в «просматриваемом массиве».
В ячейке D2 вводим следующую формулу:
=ПРОСМОТРX([@[Системный номер ID]];'[Таблица 2.xlsx]Лист1'!$A:$A;'[Таблица 2.xlsx]Лист1'!$B:$B)
Далее «протягиваем» формулу ПРОСМОТРX на весь столбец и получаем нужный результат.
![](https://habrastorage.org/getpro/habr/upload_files/cbc/36a/90e/cbc36a90e33083da8a8b1c9c0dd5a6c0.png)
Здесь стоит упомянуть один нюанс. Если вы выделяете не весь столбец с помощью символов $ (например, $B:$B), а конкретные ячейки в столбце, то возможна некорректная работа формулы из-за человеческого фактора.
Например, в «просматриваемом массиве» вы выделили ячейки вместе с заголовком, а в «возвращаемом массиве» без заголовка. В результате в вычисляемом столбце вы получите смещенные на одну ячейку значения.
Следует также отметить, что в нашем примере таблицы «отформатированы как таблица». Поэтому каждый столбец имеет название, указанное в формуле в квадратных скобках. А символ «@» перед названием столбца указывает на номер текущей строки в соответствующем столбце.
Чтобы получить такую таблицу, надо выделить область таблицы и на главной вкладке нажать «Форматировать как таблицу». Затем в раскрывшемся меню выбрать понравившийся вам вариант оформления.
![](https://habrastorage.org/getpro/habr/upload_files/0c2/548/db1/0c2548db146520d6178fac4b939f8101.png)
Исправить формат данных столбца.
Однако бывает так, что часть числовых данных Excel «не видит», и формула соответственно не работает. Появляются сообщения об ошибках. Как решить эту проблему?
Рассмотрим пример. Имеется условная таблица:
![](https://habrastorage.org/getpro/habr/upload_files/591/047/81f/59104781fd9c4c5c2b7e718bf5b24194.png)
Выделяем столбец с нужными числовыми значениями:
![](https://habrastorage.org/getpro/habr/upload_files/e79/7ce/3b0/e797ce3b0c73062b6b1476dcff526bf8.png)
Заходим на вкладку «Данные», затем «Текст по столбцам».
![](https://habrastorage.org/getpro/habr/upload_files/9cf/0c3/274/9cf0c327469fb9e364a5fd6332443c5e.png)
Затем выбираем пункт «С разделителями» и нажимаем «Далее».
![](https://habrastorage.org/getpro/habr/upload_files/99a/d80/d69/99ad80d6979b99ab5b558d71278e0c8d.png)
Выбираем символ-разделитель «знак табуляции», жмем «Далее».
![](https://habrastorage.org/getpro/habr/upload_files/136/7d8/2c1/1367d82c128fffb7214f1ba3720fb631.png)
На последнем этапе выбираем формат «Общий» и нажимаем «Готово».
![](https://habrastorage.org/getpro/habr/upload_files/400/037/c95/400037c95e5ae286de6c30186933cee9.png)
После проведенных манипуляций значения имеют одинаковый формат и вышеперечисленные функции работают с этими данными без сбоев.
![](https://habrastorage.org/getpro/habr/upload_files/fb0/8ac/741/fb08ac7413128fc78e2b475e9b4a8e6d.png)
Найти символ в строке
При обработке текстовых значений возникает задача заменить часть строки по определенному условию.
Рассмотрим пример. Имеется таблица с кодами оборудования. Необходимо заменить часть кода после шестого вхождения символа “-”.
![](https://habrastorage.org/getpro/habr/upload_files/eb5/b09/82a/eb5b0982ac05e6597eefc07a7b1b0873.png)
Функция НАЙТИ позволяет найти только первое вхождение символа. Для обхода этого ограничения используем функцию «ПОДСТАВИТЬ». Заменим шестое вхождение искомого символа на другой символ, которого нет в этой строке. Например, символ «@».
В соседнем столбце введем выражение:
«=ПОДСТАВИТЬ([@[Код оборудования]];"-";"@";6)»
, где 6 – это номер вхождения символа.
![](https://habrastorage.org/getpro/habr/upload_files/754/206/3f8/7542063f80e4da6a8c7e4f9f2f59cb6f.png)
Дальше с помощью функции НАЙТИ, ДЛСТР и ЗАМЕНИТЬ можно заменить нужную часть строки. В столбец2 вводим следующую формулу:
«=ЗАМЕНИТЬ([@Столбец1];НАЙТИ("@";[@Столбец1];1);(ДЛСТР([@Столбец1])-НАЙТИ("@";[@Столбец1];1)+1);"-KIP")»
![](https://habrastorage.org/getpro/habr/upload_files/1ad/225/ef0/1ad225ef0dc4089f6457cf7154b41162.png)
Таким образом мы получили нужный результат.
Найти количество вхождений символа в строку
Имеется таблица. Необходимо посчитать количество вхождения символа “-“ в строку.
![](https://habrastorage.org/getpro/habr/upload_files/324/10c/e7f/32410ce7fe894769fb487479192263ff.png)
Для решения этой задачи надо найти общее количество символов и вычесть из него количество символов этой строки без этого символа. С помощью функции ПОДСТАВИТЬ «удаляем» все вхождения этого символа.
Вводим формулу в соседний столбец:
=ДЛСТР([@[Код оборудования]])-ДЛСТР(ПОДСТАВИТЬ([@[Код оборудования]];"-";""))
![](https://habrastorage.org/getpro/habr/upload_files/c4b/e83/341/c4be833413a405d7478385d0cd0bb72d.png)
Получаем количество вхождений символа в каждой из ячеек.
Сцепить строки.
Для соединения (конкатенации) текстовых значений разных ячеек используются функция СЦЕПИТЬ, СЦЕП или ОБЪЕДИНИТЬ. Я в своей практике пользуюсь следующим символом: «&».
Рассмотрим пример. Надо объединить два столбца, вставив между ними точку и пробел:
![](https://habrastorage.org/getpro/habr/upload_files/098/fa1/a15/098fa1a1588f5037c86add1d6267fea8.png)
Формула с помощью функции СЦЕП:
=СЦЕП([@Имя];". ";[@Назначение])
Вариант c «&»:
=[@Имя]&". "&[@Назначение]
Результат, разумеется, будет одинаковый:
![](https://habrastorage.org/getpro/habr/upload_files/4ff/d25/0c1/4ffd250c1d54c8bb92f411aa8664ef37.png)
Найти кириллицу в названиях, написанных латиницей
При обработке марок, маркировок оборудования в латинских названиях появляются буквы на кириллице. При обработке таких данных необходимо символы на кириллице найти и откорректировать. Для решения данной задачи я пользуюсь надстройкой «Ёxcel». Эта надстройка содержит много различных возможностей. Подробнее о ней можно почитать на сайте разработчика.
Рассмотрим пример. Имеется столбец с маркировкой оборудования по взрывозащите.
![](https://habrastorage.org/getpro/habr/upload_files/c3c/a29/7fa/c3ca297faf8dbd70bfa22202189128b6.png)
Выделяем столбец и переходим во вкладку «Ёxcel»
![](https://habrastorage.org/getpro/habr/upload_files/dd5/b77/5ea/dd5b775eabe9f2b5b9abf6a0cc2b4536.png)
Далее переходим по пути «Редактировать» / «Кириллица и Латиница».
![](https://habrastorage.org/getpro/habr/upload_files/a5b/fa3/102/a5bfa31027dfb75ab093d11f8f2fb9d1.png)
Далее выбираем «Выделить Кириллицу» и жмем галочку.
![](https://habrastorage.org/getpro/habr/upload_files/a29/30e/a04/a2930ea046c7588cab4ab6c603f98ee4.png)
Видим выделенные красным нужные символы.
![](https://habrastorage.org/getpro/habr/upload_files/956/002/b3a/956002b3abf1e1907505f3441b50b374.png)
В случае необходимости заменить эти символы на латинские повторяем процедуру, описанную выше, но в меню выбираем «Заменить Кириллицу на Латиницу (x->x)».
![](https://habrastorage.org/getpro/habr/upload_files/65e/d5e/9a5/65ed5e9a51d6ae297cdd2e6bd7278e1f.png)
Унификация названий марок оборудования
Имеется база данных марок оборудования, в которую информацию вносили разные люди в разное время. Необходимо провести анализ и корректировку этих марок, исключить опечатки и дублирование.
![](https://habrastorage.org/getpro/habr/upload_files/50c/f7d/afb/50cf7dafbd436e60b4b2341ece36a701.png)
![](https://habrastorage.org/getpro/habr/upload_files/2e7/273/3a6/2e72733a65584b3e491594c10b5828b3.png)
Для решения этой задачи я использую Сводную таблицу.
Выделяем нужный столбец и на вкладке «Вставка» нажимаем «Сводная таблица». Затем выбираем «Из таблицы/диапазона».
![](https://habrastorage.org/getpro/habr/upload_files/166/1e7/8c7/1661e78c737252bc9ecdd234e8dcc8e9.png)
Далее выбираем «Новый лист» и нажимаем «ОК»
![](https://habrastorage.org/getpro/habr/upload_files/69b/2a1/74f/69b2a174fa83c48378c47747e24726e8.png)
В открывшемся новом листе в поле «Поля сводной таблицы» перетаскиваем название столбца «Марка» в поле «Строки» и в поле «Значения».
![](https://habrastorage.org/getpro/habr/upload_files/243/5e4/769/2435e4769096d279f1ccd3f60fbf60b2.png)
![](https://habrastorage.org/getpro/habr/upload_files/8a2/0f0/541/8a20f0541f7201a34ffa41f09f7e3427.png)
В полученной сводной таблице очень легко найти опечатки, дубли, а также легко можно увидеть разные варианты написания одной и той же марки и унифицировать их.
![](https://habrastorage.org/getpro/habr/upload_files/4ee/221/628/4ee221628d5e5a4feafdc5793175d489.png)
Например, найдя опечатку, переходим на лист с исходной таблицей и в фильтре данного столбца вводим поиск нужный текст. В итоге отобразится только искомое название. Корректируем его.
![](https://habrastorage.org/getpro/habr/upload_files/777/9da/fcf/7779dafcfa6247235679944eaf0d1303.png)
Для того, чтобы обновить значения в сводной таблице, нажимаем «Обновить все» на вкладке «Данные».
![](https://habrastorage.org/getpro/habr/upload_files/1b3/5b8/992/1b35b89929e176efe958014bf5f69d1d.png)
Заключение
Очень надеюсь, данная статья окажется полезна тем, кто начинает работать с Excel, и немного упростит решение подобных задач. Работая инженером на различных предприятиях нашей страны, я многие годы использовал Excel для составления простых таблиц, графиков без применения сложных и составных формул. Столкнувшись с описанными в статье задачами, я потратил довольно много времени на осмысление и отработку навыков работы со всеми этими инструментами. Сейчас же всё кажется предельно простым и очевидным. Если даже одному человеку эта статья принесёт пользу, я буду считать свою задачу выполненной.
Agrumer
Метод унификации уникальных написаний можно дополнить следующим алгоритмом: создаём на отдельно листе хэш-таблицу (таблицу синонимов), в первый её столбец копируем содержимое сводной таблицы, во второй - единообразное написание по каким-нибудь правилам (все прописные, ё=>е и т.п.). Теперь при импорте записей из таблиц одних и тех же исполнителей можно быстро приводить данные к обрабатываемому виду (через впр, просмотр). Генерировать в таблицу синонимов типовые ошибки как правило не продуктивно, делать формы/выпадающие списки - часто тоже.
dr_kip Автор
Спасибо, хорошая идея!