Se você se deparar com uma situação em que requer apenas a primeira palavra em cada linha de uma célula, em vez de todos os caracteres, você deve ler este artigo. O tutorial a seguir irá ajudá-lo a recuperar apenas a primeira palavra por meio do código VBA no Excel.
Neste artigo, vamos nos concentrar em como manter a primeira palavra apenas em cada linha de uma célula separada por ponto-e-vírgula por meio de códigos de macro.
Pergunta: Os dados nos quais estou trabalhando às vezes têm várias linhas em cada célula e desejo extrair apenas a primeira palavra.
Você pode encontrar a pergunta original aqui
A seguir está um instantâneo do texto de entrada (antes da folha)
A seguir está um instantâneo do texto de entrada (Depois da Folha) na coluna A e requer saída na coluna B; consulte o instantâneo abaixo:
Para obter o código; precisamos seguir os passos abaixo para lançar o editor VB
- Clique na guia Desenvolvedor
- No grupo Código, selecione Visual Basic
- Copie o código abaixo no módulo padrão
Função FirstWordOnly (rng As Range) Dim Arr () As Variant Dim Count As Integer Dim i As Integer Count = Len (rng) - Len (Replace (rng, Chr (10), "")) If Count> 0 Then ReDim Arr (0 para contar) Para i = 0 para contar Se i = 0 Then Arr (i) = Left (rng, InStr (1, rng, "") - 1) ElseIf j = 0 Then j = InStr (1, rng, Chr (10)) Arr (i) = Mid (rng, j + 1, InStr (j, rng, "") - j) Else j = InStr (j + 1, rng, Chr (10)) Arr (i) = Mid (rng, j + 1, InStr (j, rng, "") - j) End If Next FirstWordOnly = Join (Arr, ";") Else If InStr (1, rng, "")> 0 Then FirstWordOnly = Left (rng, InStr (1, rng, "")) Else FirstWordOnly = rng End If End If End Function
Agora, o código VBA está pronto para uso; usaremos a função definida pelo usuário recém-criada, ou seja, "FirstWordOnly" na folha anterior.
- Para obter a saída usando UDF na célula B2, a fórmula será
- = FirstWordOnly (A2)
Explicação do código:
No código acima, usamos as funções COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN VBA.
- ‘Len (rng)’; isso irá verificar o comprimento da célula a que estamos nos referindo
- ‘Substituir (rng, Chr (10)," ")’; O código verifica o Chr (10), ou seja, quebra de linha em cada linha e, em seguida, substitui por aspas duplas (nada)
- ‘Count = Len (rng) - Len (Replace (rng, Chr (10)," "))’; A contagem armazenará a diferença de comprimento de cada linha após substituir a quebra de linha
- Se Contagem> 0; isso verificará se o comprimento de Count é maior que zero e se for igual a zero, ou seja, se a célula estiver em branco, a condição IF não executará o código. Para verificar isso, você pode usar = FirstWordOnly (A5) na célula B5 e ele retornará 0
- Se a célula não estiver em branco, então o loop For será usado com a condição IF e, com a função LEFT, iremos recuperar a primeira palavra
- A função JOIN adicionará ponto e vírgula no final se houver várias linhas em cada célula
Conclusão: Usando UDF, podemos remover tudo em cada linha da célula, exceto a primeira palavra por meio do VBA. Esta função funcionará em todas as versões, da antiga à nova, ou seja, Microsoft Excel 2003, Microsoft Excel 2007, Microsoft Excel 2010, Microsoft Excel 2013.
Se você gostou de nossos blogs, compartilhe com seus amigos no Facebook. E você também pode nos seguir no Twitter e no Facebook.
Gostaríamos muito de ouvir de você, diga-nos como podemos melhorar, complementar ou inovar nosso trabalho e torná-lo melhor para você. Escreva-nos no site de e-mail