1 Поиск строки:

1 Поиск строки:

У меня большой список групп пользователей и соответствующих им имен пользователей. Теперь я хотел бы отфильтровать их еще больше. Группы пользователей для каждого пользователя ВСЕ находятся в одной ячейке (имя пользователя - группы пользователей), так что это означает, что в одной ячейке может быть около 10-15 групп пользователей. Мне нужны только строки, состоящие из "WTS", а затем я помещаю строки групп пользователей, состоящие из "WTS", в новую ячейку.

Как мне это сделать?

Пример данных:

Группы пользователей 1 WTS_A, BTS_B, WTS_C,

Мне нужны WTS_A и WTS_C.

решение1

Исходя из моего понимания вашего вопроса, я предлагаю двухэтапное решение.

Шаг 1- Используйте функцию «Текст в столбцы» в Excel и преобразуйте текст из одного столбца в несколько столбцов. Используйте пробел и запятую в качестве разделителей.

Шаг 2- Используйте пользовательскую функцию VBA для объединения только нужных ячеек в одну ячейку, разделенную запятой.

После того, как вы закончите с процессом Text To Columns, нажмите ALT + F11 на листе, чтобы открыть редактор VBA. Из меню Insert (Вставка) вставьте Module (Вставка модуля). Module1 будет создан и откроется его редактор кода. Если нет, дважды щелкните Module1 на левой панели, чтобы открыть его редактор кода.

Вставьте туда же следующий код.

Public Function TXTJOIN(argument1 As Range)      'Accept input range
   result = ""
   colcounter = argument1.Columns.Count
   rowcounter = argument1.Rows.Count
   If rowcounter > 1 Then
        TXTJOIN = CVErr(xlErrValue)  'If row counter > 1 return #VALUE! Error
        Exit Function
   End If

   If colcounter > 255 Then
        TXTJOIN = CVErr(xlErrValue)  'If col counter > 255 return #VALUE! Error
        Exit Function
   End If


        For Each element In argument1
            If Left(element, 3) = "WTS" And Len(element) > 3 Then
                result = result & element & ","
            End If
        Next element

        If result = "" Then
            TXTJOIN = result
        Else
            TXTJOIN = Left(result, Len(result) - 1)
        End If
End Function

Это создает пользовательскую функцию TXTJOIN для проверки начальной строки как «WTS» и объединения всех таких столбцов, разделенных запятой.

Сохраните и выйдите из редактора VBA. Вернитесь к рабочему листу, теперь перейдите к крайнему правому столбцу и введите эту функцию, указав применимый диапазон столбцов. Скопируйте или перетащите ее вниз по длине применимых строк. Вы должны получить нужную строку в соответствующих ячейках. Скопируйте только значения в другом месте и удалите остальные столбцы, чтобы очистить лист.

Вы получите ошибку #VALUE! от этой функции в таких ситуациях.

  • Вы передаете ему многомерный массив, например A1:D12.

  • Вы передаете ему диапазон из более чем 255 столбцов.

  • Вы передаете ему массив из нескольких строк, например A1:A12.

Дайте мне знать, если это вам подходит.

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

введите описание изображения здесь

решение2

Перед вами две задачи: найти достоверные (интересные) данные, а затем отформатировать их.

1 Поиск строки:

Поиск строки, например WTS, можно выполнить с помощью функций Find или Search. Они обе покажут вам числовое значение, когда строка будет найдена, например: FIND("WTS";A1) или SEARCH("WTS";A1)

Сделайте это для первой строки. Выберите ячейку с копией формулы, а затем выберите ячейки под ней для всех строк данных и вставьте. Формула автоматически обновится до FIND("WTS";B1)... FIND("WTS";C1)...

На этом этапе я предлагаю использовать ручную фильтрацию, чтобы скрыть строки, которые выдают ошибку: #ЗНАЧЕНИЕ!

Просто удалите те строки, которые не дают вам результатов.

2. Разделите данные групп пользователей:

Если в ячейке имеется несколько записей, разделенных строкой (например, дефисом «-»), выделите ячейки и используйте Данные -> Текст в столбцах -> С разделителями -> Добавьте разделитель — выберите Другой и введите дефис.

Это позволит вам разместить ваши данные в нескольких ячейках, например: Usergroup1 Usergroup2 Usergroup3 ...

3 Бонусный совет:

Если вы хотите использовать функцию поиска или поиска для нескольких ячеек, которые вы только что разделили, выполните объединение ячеек в одну ячейку (по сути, обратное разделению), а затем выполните поиск по объединенным значениям. A7 = CONCATENATE(A1;A2;A3) A8 = FIND("WTS";A7)

Связанный контент