Melhor maneira de retirar texto antes de caractere (s) específico (s)

0

Não raramente, preciso remover todo o texto até e incluindo um determinado caractere. Por exemplo, em uma lista de casos jurídicos na forma "Requerente contra réu", eu posso querer despir tudo até e incluindo "v." Para obter uma lista de réus.

Isso é facilmente realizado usando uma combinação das funções FIND , RIGHT e LEN da seguinte maneira (usando A1 como a célula de onde o texto está vindo):

=RIGHT(A1,LEN(A1)-FIND("text",A1)-1)

Mas sempre me pareceu um tanto desajeitado e propenso a erros (sem mencionar que eu costumo esquecer de subtrair 1. Existe uma maneira mais elegante de alcançar o mesmo resultado?

    
por Jonathan 13.11.2016 / 23:00

2 respostas

1

O uso do VBA é uma estratégia legítima! Esconde esses detalhes e o ônus de evocá-los. Também permite usar funções de string mais fáceis (por exemplo, a versão do Mid () do VBA não precisa de uma contagem de substring - ela fornecerá por padrão o final da string.) [Nota 1]
A função que você escreve fica disponível para fácil aplicação no menu suspenso do Excel de funções do Excel.

Alt-F11 para entrar no VBA (Alt-F11 para voltar).
A partir do VBAProject para a pasta de trabalho atual, insira > Módulo (operação de menu à direita). Isso terá a função facilmente acessível em toda a pasta de trabalho.

Cole isto:

Function RightOfToken(sSource As String, sToken As String) As String
Dim sTarget As String
Dim iPos As Integer

' Return the characters after the first occurence of sToken in sSource

iPos = InStr(sSource, sToken)
If iPos > 0 Then
    sTarget = Mid(sSource, Len(sToken) + iPos)
Else
    sTarget = ""
End If
RightOfToken = sTarget
End Function

Alt-F11 de volta. Em qualquer célula, = RightofToken ("ABC v. DEF", "v.") Produzirá "DEF". (Você pode usar LTrim () no VBA para remover espaços à esquerda ou se for adequado para TRIM no Excel)

[Nota 1] Se dentro do VBA você quiser a versão do Excel de uma função, ou uma função de planilha específica para o Excel, você pode prefixar com Application.WorksheetFunction. .

    
por 14.11.2016 / 02:33
0

Localizar e substituir pode funcionar para você. É o mais rápido. Para o seu exemplo "quero despir tudo até e incluindo" v. "para obter uma lista de réus", eu copiaria a informação em uma nova coluna (s) e então destacaria apenas essas colunas. Em seguida, use Localizar e substituir ou CTRL H.

Na caixa de pesquisa, digite "* v." ou " strong v". Na caixa de substituição, deixe-a vazia. (O símbolo de asterisco * é um curinga, então ele selecionará tudo antes do V.) Clique em ok para rodar e ele deve deletar tudo antes e incluindo o "v".

Se você tiver tudo o que deseja alterar em destaque primeiro, deverá conseguir fazer tudo de uma só vez muito rapidamente.

Espero que isso faça sentido.

    
por 14.11.2016 / 03:30