Eu tenho uma planilha do Excel que contém uma lista de seqüências de caracteres. Cada string é composta de várias palavras, mas o número de palavras em cada string é diferente.
Usando funções internas do Excel (sem VBA), existe uma maneira de isolar a última palavra em cada string?
Exemplos:
Você é classificado como humano? -> humano? Negativo, eu sou um picolé de carne -> picolé Aziz! Luz! -> Luz!
excel
excel-formula
e.James
fonte
fonte
Respostas:
Este é testado e funciona (com base no post original de Brad):
Se suas strings originais pudessem conter um pipe "|" caractere, substitua os dois acima por outro caractere que não aparecerá na sua fonte. (Eu suspeito que o original de Brad estava quebrado porque um caractere não imprimível foi removido na tradução).
Bônus: Como funciona (da direita para a esquerda):
LEN(A1)-LEN(SUBSTITUTE(A1," ",""))
- Contagem de espaços na cadeia originalSUBSTITUTE(A1," ","|", ... )
- Substitui apenas a final espaço por a|
FIND("|", ... )
- Encontra a posição absoluta da substituída|
(que era o espaço final)Right(A1,LEN(A1) - ... ))
- Retorna todos os caracteres depois disso|
EDIT: para explicar o caso em que o texto de origem não contém espaços, adicione o seguinte ao início da fórmula:
fazendo a fórmula inteira agora:
Ou você pode usar a
=IF(COUNTIF(A1,"* *")
sintaxe da outra versão.Quando a sequência original puder conter um espaço na última posição, adicione uma função de recorte ao contar todos os espaços: Tornando a função o seguinte:
fonte
Esta é a técnica que usei com grande sucesso:
Para obter a primeira palavra em uma string, mude de DIREITA para ESQUERDA
Além disso, substitua A1 pela célula que contém o texto.
fonte
" "
pelo meu delimitador. Os dois100
s parecem limitá-lo a uma série de 100 caracteres, se não me engano=TRIM(SUBSTITUTE(RIGHT(SUBSTITUTE(A1, ".", REPT(".", 100)), 100), ".", ""))
Uma versão mais robusta da resposta de Jerry:
Isso funciona independentemente do comprimento da string, espaços iniciais ou finais, ou qualquer outra coisa, e ainda é bem curto e simples.
fonte
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))
para obter a extensão do arquivo.SUBSTITUTE
permite que ele funcione para qualquer personagem, não apenas para espaços.=TRIM(SUBSTITUTE(RIGHT(SUBSTITUTE(TRIM(A1),"/",REPT("/",LEN(TRIM(A1)))),LEN(TRIM(A1))),"/",""))
, onde "/" é o caractere delimitante." ; "
(um ponto e vírgula rodeado por espaços) com valor de entrada:"Technology Sprint 24 ; Sprint 4"
ele retorna:"; Sprint 4"
. Estou usando a solução adicionada por: @PProteus.TRIM(A1)
por:TRIM(SUBSTITUTE(A1, "strDelimeter", ";"))
em todos os lugares, para ter um novo delimitador de caracteres:";"
ou melhor ainda, usando achar()
função para encontrar algum personagem realmente inesperado.TRIM
função depois de adicionar a segundaSUBSTITUTE
para a solução geral de caracteres únicos. A fórmula fornece o resultado esperado, eliminando esta parte:=SUBSTITUTE(RIGHT(SUBSTITUTE(TRIM(A1),";",REPT(";",LEN(TRIM(A1)))),LEN(TRIM(A1))),";","")
Encontrei isso no google, testado no Excel 2003 e funciona para mim:
[edit] Eu não tenho representante suficiente para comentar, então esse parece o melhor lugar ... A resposta de BradC também não funciona com espaços à direita ou células vazias ...
[2ª edição] na verdade, não funciona para palavras simples também ...
fonte
Isso é muito robusto - funciona para frases sem espaços, espaços iniciais / finais, múltiplos espaços, vários espaços iniciais / finais ... e usei char (7) para o delimitador, em vez da barra vertical "|" apenas no caso de ser um item de texto desejado.
fonte
Isso é muito limpo e compacto e funciona bem.
Ele não trava erros por nenhum espaço ou uma palavra, mas é fácil de adicionar.
Editar:
trata de espaços à direita, palavra única e cenários de células vazias. Eu não encontrei uma maneira de quebrá-lo.
fonte
fonte
Para adicionar às respostas de Jerry e Joe, se você deseja encontrar o texto ANTES da última palavra, pode usar:
Com 'Meu gatinho' em A1 resultaria em 'Meu gatinho' (onde Joe e Jerry's dariam 'gato'
Da mesma forma que Jerry e Joe isolam a última palavra, isso apenas coloca tudo à esquerda disso (depois apara)
fonte
Imagine que a corda possa ser revertida. Então é realmente fácil. Em vez de trabalhar na string:
você trabalha com
Com
=LEFT(A1;FIND(" ";A1)-1)
em A2 você obtém"My"
com (1) e"tac"
com (2), que é invertido"cat"
, a última palavra em (1).Existem alguns VBAs ao redor para reverter uma string. Eu prefiro a função pública do VBA
ReverseString
.Instale o descrito acima, como descrito. Depois, com sua string em A1, por exemplo,
"My little cat"
e esta função em A2:você verá
"cat"
na A2.O método acima pressupõe que as palavras são separadas por espaços em branco. A
IF
cláusula é para células que contêm palavras únicas = sem espaços em branco na célula. Nota:TRIM
eCLEAN
a sequência original também é útil. Em princípio, ele reverte toda a cadeia de caracteres de A1 e simplesmente encontra o primeiro espaço em branco na cadeia de reversão que fica ao lado da última palavra (invertida) (ou seja,"tac "
).LEFT
escolhe essa palavra e outra reversão de string reconstitui a ordem original da palavra (" cat"
). O-1
no final doFIND
instrução remove o espaço em branco.A idéia é que é fácil extrair a primeira (!) Palavra em uma string com
LEFT
eFIND
no primeiro espaço em branco. No entanto, para a última (!) Palavra, oRIGHT
função é a escolha errada quando você tenta fazer isso porque, infelizmente, o FIND não possui um sinalizador para a direção em que você deseja analisar sua string.Portanto, toda a cadeia é simplesmente revertida.
LEFT
eFIND
trabalhe normalmente, mas a cadeia extraída é invertida. Mas o dele não é grande coisa quando você sabe como reverter uma string. A primeiraReverseString
declaração na fórmula faz esse trabalho.fonte
fonte
Copie para uma coluna, selecione-a e HOME> Edição> Localizar e selecionar, Substituir:
Replace All.
Há um espaço após o asterisco.
fonte
Traduzi para o PT-BR, pois precisava disso também.
(Observe que mudei o espaço para
\
porque precisava do nome do arquivo apenas de cadeias de caminho.)fonte
Outra maneira de conseguir isso é como abaixo
fonte
Eu também tive uma tarefa como essa e, quando terminei, usando o método acima, ocorreu um novo método: Por que você não faz isso:
Como isso soa?
fonte