Encontre a posição da última ocorrência de um personagem no Excel

Neste tutorial, você aprenderá como encontrar a posição da última ocorrência de um caractere em uma string no Excel.

Há alguns dias, um colega surgiu com esse problema.

Ele tinha uma lista de URLs conforme mostrado abaixo e precisava extrair todos os caracteres após a última barra (“/”).

Por exemplo, em https://example.com/archive/Janeiro ele teve que extrair 'janeiro'.

Teria sido realmente fácil se houvesse apenas uma barra nas URLs.

O que ele tinha era uma lista enorme de milhares de URLs de comprimento variável e um número variável de barras invertidas.

Nesses casos, o truque é encontrar a posição da última ocorrência da barra no URL.

Neste tutorial, mostrarei duas maneiras de fazer isso:

  • Usando uma fórmula do Excel
  • Usando uma função personalizada (criada via VBA)

Obtendo a última posição de um personagem usando a fórmula do Excel

Quando você tiver a posição da última ocorrência, pode simplesmente extrair qualquer coisa à direita dela usando a função RIGHT.

Aqui está a fórmula que encontraria a última posição de uma barra e extrairia todo o texto à direita dela.

= RIGHT (A2, LEN (A2) -FIND ("@", SUBSTITUTE (A2, "/", "@", LEN (A2) -LEN (SUBSTITUTE (A2, "/", ""))), 1 )) 

Como essa fórmula funciona?

Vamos decompor a fórmula e explicar como cada parte dela funciona.

  • SUBSTITUIR (A2, ”/”,“”) - Esta parte da fórmula substitui a barra por uma string vazia. Então, por exemplo, no caso de você querer encontrar a ocorrência de qualquer string diferente da barra, use-a aqui.
  • LEN (A2) -LEN (SUBSTITUIR (A2, ”/”,“”)) - Esta parte dirá quantas barras há na string. Ele simplesmente subtrai o comprimento da string sem a barra do comprimento da string com barras.
  • SUBSTITUIR (A2, ”/”, ”@”, LEN (A2) -LEN (SUBSTITUIR (A2, ”/”, ””))) - Esta parte da fórmula substituiria a última barra por @. A ideia é tornar esse personagem único. Você pode usar qualquer personagem que quiser. Apenas certifique-se de que seja único e não apareça na string.
  • ENCONTRAR (“@”, SUBSTITUIR (A2, ”/”, ”@”, LEN (A2) -LEN (SUBSTITUIR (A2, ”/”, ””))), 1) - Esta parte da fórmula fornece a posição da última barra.
  • LEN (A2) -FIND (“@”, SUBSTITUIR (A2, ”/”, ”@”, LEN (A2) -LEN (SUBSTITUIR (A2, ”/”, ””))), 1) - Esta parte da fórmula nos diria quantos caracteres existem após a última barra.
  • = DIREITA (A2, LEN (A2) -FIND (“@”, SUBSTITUIR (A2, ”/”, ”@”, LEN (A2) -LEN (SUBSTITUIR (A2, ”/”, ””))), 1 )) - Agora, isso simplesmente nos forneceria a string após a última barra.

Obtendo a última posição de um personagem usando a função personalizada (VBA)

Embora a fórmula acima seja ótima e funcione perfeitamente, é um pouco complicada.

Se você se sentir confortável com o VBA, pode usar uma função personalizada (também chamada de Função definida pelo usuário) criada por meio do VBA. Isso pode simplificar a fórmula e economizar tempo se você precisar fazer isso com frequência.

Vamos usar o mesmo conjunto de dados de URLs (conforme mostrado abaixo):

Para este caso, criei uma função chamada LastPosition, que encontra a última posição do caractere especificado (que é uma barra neste caso).

Aqui está a fórmula que fará isso:

= DIREITA (A2, LEN (A2) -ÚltimaPosição (A2, "/") + 1)

Você pode ver que isso é muito mais simples do que o que usamos acima.

É assim que funciona:

  • LastPosition - que é nossa função personalizada - retorna a posição da barra. Essa função leva dois argumentos - a referência de célula que contém a URL e o caractere cuja posição precisamos encontrar.
  • A função RIGHT então nos dá todos os caracteres após a barra.

Aqui está o código VBA que criou esta função:

Função LastPosition (rCell As Range, rChar As String) 'Esta função fornece a última posição do caractere especificado' Este código foi desenvolvido por Sumit Bansal (https://trumpexcel.com) Dim rLen As Integer rLen = Len (rCell) For i = rLen To 1 Step -1 If Mid (rCell, i - 1, 1) = rChar Then LastPosition = i Exit Function End If Next i End Function

Para fazer esta função funcionar, você precisa colocá-la no Editor VB. Uma vez feito isso, você pode usar esta função como qualquer outra função regular do Excel.

Aqui estão as etapas para copiar e colar este código no back-end do VB:

Aqui estão as etapas para colocar este código no Editor VB:

  1. Vá para a guia Desenvolvedor.
  2. Clique na opção Visual Basic. Isso abrirá o editor VB no backend.
  3. No painel Project Explorer no VB Editor, clique com o botão direito em qualquer objeto da pasta de trabalho na qual deseja inserir o código. Se você não vir o Project Explorer, vá para a guia View e clique em Project Explorer.
  4. Vá para Inserir e clique em Módulo. Isso irá inserir um objeto de módulo para sua pasta de trabalho.
  5. Copie e cole o código na janela do módulo.

Agora a fórmula estaria disponível em todas as planilhas da pasta de trabalho.

Observe que você precisa salvar a pasta de trabalho no formato .XLSM, pois ela contém uma macro. Além disso, se você deseja que esta fórmula esteja disponível em todas as pastas de trabalho que você usa, você pode salvá-la na Pasta de trabalho macro pessoal ou criar um suplemento a partir dela.

Você também pode gostar dos seguintes tutoriais do Excel:

  • Como obter a contagem de palavras no Excel.
  • Como usar PROCV com vários critérios.
  • Encontre a última ocorrência de um valor de pesquisa em uma lista no Excel.
  • Extraia Substring no Excel.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave