Найти в Дзене

Автозаполнение ячеек на основе анализа текста в Excel

Фото из источника yandex.by
Фото из источника yandex.by

Постановка задачи:

У нас есть столбец A, в котором содержится информация. Нам необходимо заполнить столбцы B, C и D в зависимости от содержания столбца A.

Например:

В столбце A содержится информация об изделии с указанием материала, который применяется при его изготовлении. Материал может находиться в любом месте строки и иметь разное обозначение. Это может быть пластик-61, пластик-43, чугун-678 и т.д., обозначение может быть любым, но вам оно заведомо известно. Столбцы B, C и D содержат другую информацию, которая зависит от материала.

Предположим, что строк в столбце A огромное количество и нам надо заполнить B, C и D по всем изделиям. Если делать это в ручную, то можно убить целый день, а может и не один) Как сделать это быстро и с минимальными затратами ручного труда?

Решение:

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

Шаг 1. Сохраняем файл с поддержкой макросов

-2

Шаг 2. Запускаем VBA (Alt + F11).

Шаг 3. Добавляем модуль для нашего макроса. Клик правой кнопкой мыши на "VBAProject".

-3

Шаг 4. Копируем код (он ниже) и вставляем его в наш модуль. Нажимаем сохранить (Ctrl + S). В комментариях по тексту вы найдете подсказки, где и что менять.

Function RegResult(ozm_name As String, number As Integer) As String
Set myRegExp = CreateObject("VBScript.RegExp")
Dim str(1 To 3) As String ' 3 - это количество заранее определенных значений для найденного условия, то есть для ячеек B, C и D
For i = 1 To 2 ' 2 - это количество заданных условий для поиска соответствия, если нужно еще, то меняйте число и добавляйте блок "Case n"
With myRegExp
Select Case i
Case 1 ' условие №1
.Pattern = ".*пластик.40*" ' здесь вы пишите свое ключевое слово. Если цифры не нужны, можете написать ".*пластик.*"
.Global = True
.IgnoreCase = True
Case 2 ' условие №2
.Pattern = ".*чугун.69\s.*" 'здесь указано строгое соответствие "чугун" + любой символ + 69 + пробел
.Global = True
.IgnoreCase = True
End Select
End With
' ниже ваши значения для заданных условий, если условий больше двух, то добавляйте блок "Case n"
If myRegExp.Test(ozm_name) Then
Select Case i
Case 1 ' предустановленные значения, если выполнилось условие №1
str(1) = "Значение для ячейки B условие №1"
str(2) = "Значение для ячейки C условие №1"
str(3) = "Значение для ячейки D условие №1"
Case 2 ' для условия №2
str(1) = " Значение для ячейки B условие №2"
str(2) = " Значение для ячейки C условие №2"
str(3) = " Значение для ячейки D условие №2"
End Select
Exit For
End If
Next i
RegResult = str(number)
Set myRegExp = Nothing
End Function

Шаг 5. Теперь наша таблица располагает новой пользовательской функцией RegResult. Функция имеет два параметра. RegResult(анализируемый_текст;номер_значения_функции). Вставим функцию в ячейки B, C и D.

-4
-5

Данную функцию вы можете легко модифицировать под свои конкретные задачи. Анализ текста предоставляет пользователю мощный инструмент для автоматизации своей работы.

Если у вас возникли вопросы, пишите в комментариях. Так же пишите, если у вас есть другие задачи, которые вам бы хотелось автоматизировать. Попробую помочь и разместить решение в следующих публикациях 😉. Ставьте лайк 👍 и подписывайтесь ✍ на канал, чтобы не пропустить полезные публикации.