1 Procurando por uma string:

1 Procurando por uma string:

Tenho uma grande lista de grupos de usuários e seus respectivos nomes de usuário. Agora, eu gostaria de filtrá-los ainda mais. Os grupos de usuários de cada usuário estão TODOS em uma célula (nome de usuário - grupos de usuários), o que significa que há talvez de 10 a 15 grupos de usuários em uma única célula. Eu só quero linhas que consistem em "WTS" e, em seguida, coloco as linhas de grupos de usuários que consistem em "WTS" em uma nova célula.

Como faço para fazer isso?

Dados de exemplo:

Grupos de usuários 1 WTS_A, BTS_B, WTS_C,

Quero WTS_A e WTS_C.

Responder1

Com base no meu entendimento da sua pergunta, sugiro uma solução em duas etapas.

Passo 1- Use o recurso Texto para Colunas no Excel e converta o texto de uma única coluna em várias colunas. Use Espaço e Vírgula como delimitadores.

Passo 2- Use uma função VBA personalizada para unir apenas as células pretendidas em uma única célula delimitada por vírgula.

Depois de concluir o processo Text To Columns, pressione ALT + F11 na planilha para abrir o Editor VBA. No Menu Inserir Módulo Inserir. Um Módulo1 será criado e seu editor de código será aberto. Caso contrário, clique duas vezes em Módulo1 no painel esquerdo para abrir seu editor de código.

Cole o seguinte código no mesmo.

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

Isso cria uma função TXTJOIN personalizada para verificar se a String inicial é "WTS" e juntar todas as colunas delimitadas por vírgula

Salve e saia do editor VBA. De volta à planilha, agora vá para a coluna da extrema direita e insira esta função especificando o intervalo de colunas aplicável. Copie ou arraste-o para baixo ao longo das linhas aplicáveis. Você deve obter a string pretendida nas respectivas células. Copie apenas os valores em outro lugar e exclua o restante das colunas para limpar a planilha.

Você receberá #VALOR! Erro desta função em situações como.

  • Você passa um array multidimensional para ele, por exemplo, A1:D12

  • Você passa mais de 255 colunas para ele.

  • Você passa um array de múltiplas linhas para ele, por exemplo, A1:A12

Deixe-me saber se isso funciona para você.

Limitação - Isso pressupõe que os IDs dos usuários sejam separados por espaço ou vírgula. Se dois estiverem juntos sem vírgula ou espaço, esta função não identificará os dois separadamente.

insira a descrição da imagem aqui

Responder2

Você tem duas tarefas: procurar dados válidos (interessantes) e depois formatá-los.

1 Procurando por uma string:

A busca por uma string como WTS pode ser feita com as funções Find ou Search. Ambos mostrarão um valor numérico quando a string foi encontrada, como este: FIND("WTS";A1) ou SEARCH("WTS";A1)

Faça isso para a primeira linha. Selecione a célula com a cópia da fórmula e, a seguir, selecione as células abaixo dela para todas as linhas de dados e cole. A fórmula será atualizada automaticamente para FIND("WTS";B1)...FIND("WTS";C1)...

Sugiro a filtragem manual neste momento para ocultar as linhas que apresentam erro: #VALUE!

Basta excluir as linhas que não fornecem resultados.

2 Divida os dados dos grupos de usuários:

Quando você tiver várias entradas em sua célula delimitadas por uma string (como um travessão "-"), selecione suas células e use Dados -> Texto para colunas -> Delimitado -> Adicione seu delimitador - escolha Outro e insira um travessão.

Isso pegará seus dados e os colocará em várias células, como este Usergroup1 Usergroup2 Usergroup3 ...

3 Dica bônus:

Se você quiser usar a função localizar ou pesquisar nas múltiplas células que acabou de dividir, faça uma concatenação das células em uma célula (basicamente inverta a divisão) e, em seguida, pesquise os valores concatenados. A7 = CONCATENAR(A1;A2;A3) A8 = ENCONTRAR("WTS";A7)

informação relacionada