2011-11-17 13:40:49 +0000 2011-11-17 13:40:49 +0000
22
22

Excel extrai substrato de cordel

Estou à procura de uma forma de extrair um substrato de comprimento variável de um cordel.

As minhas células terão um aspecto semelhante:

ABC - DEF
ABCDE - DEF
ABCD - ABC

Quero dividir a corda no carácter -, para que as células se tornem:

ABC
ABCDE
ABCD

Isto deve ser feito com uma fórmula e não com VBScript.

Estou a utilizar o Excel 2010

EDIT

Descobri que o conjunto de dados nem sempre contém o carácter -, o que significa que não deve haver alterações.

Respostas (5)

26
26
26
2011-11-17 13:51:09 +0000

Este problema pode ser decomposto em duas etapas:

  1. Encontre o índice na cadeia do seu carácter dividido desejado (neste caso, "-" ou " - ").
  2. Obtenha o prefixo substring desde o início do texto original até ao índice de divisão.

Os comandos FIND e SEARCH devolvem cada um o índice de um determinado needle num haystack (FIND é sensível a maiúsculas e minúsculas, SEARCH é insensível a maiúsculas e permite wildcards). Tendo isso em conta, temos:

FIND(search_text, source_cell, start_index)

ou neste caso:

FIND(" - ", A1, 1)

Uma vez que temos o índice, precisamos do prefixo source_cell para fazer a “divisão”. MID faz exactamente isso:

MID(source_cell, start_index, num_characters)

Colocando os dois juntos, temos:

=MID(A1,1,FIND(" - ",A1,1))

com A1 tendo texto de ABC - DEFABC.

7
7
7
2011-11-17 15:22:44 +0000

Expandindo a resposta de Andrew com base na sua edição: para encontrar a cadeia de caracteres para dividir, estamos a usar a função FIND. Se o FIND não localizar a string dada, devolve um erro de #VALUE?. Portanto, teremos de verificar este valor e utilizar um valor substituto em seu lugar.

Para verificar qualquer valor de erro incluindo #VALUE, utilizamos a função ISERROR, portanto:

=ISERROR(FIND(" - ", A1, 1))

que será verdade se a função FIND não conseguir encontrar a cadeia “ - ” na célula A1. Assim, utilizamos isso para decidir qual o valor a utilizar:

=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))

Que diz que se o comando find devolver um erro, usar a célula A1 não modificada. Caso contrário, faça a função MID que Andrew já forneceu.

2
2
2
2014-08-11 08:59:14 +0000

Obrigado @AndrewColeson pela sua resposta.

Portanto, só para acrescentar a isso, se quiser tudo do lado direito do -, use este código:

=MID(A1,LEN(B1)+3,LEN(A1))

Que é:

A1 = ABC - DEF
B1 = =MID(A1,1,FIND(" - ",A1,1))
    B1 = ABC
Therefore A1 = DEF

Este código é óptimo para se tiver um número indefinido de caracteres após o -.

Por exemplo:

Se tiver:

ABC - DEFG
AB - CDEFGH
...
1
1
1
2014-08-19 22:50:39 +0000

Aqui está uma forma muito simples de extrair o 5º caracter da esquerda de uma cadeia de texto em Excel:

Suponha que a cadeia de caracteres ABCDEFGHIJ é armazenada na célula A1 de uma folha de cálculo do Excel, então a seguinte fórmula

=RIGHT(LEFT(A1,5),1)

produz o 5º caracter da esquerda na cadeia, nomeadamente E.

0
0
0
2017-05-02 10:15:45 +0000

A seguinte fórmula irá remover um substrato de [TEXTCOLUMN_1]

por exemplo: se quiser converter -./thumb/hello.jpg para thumb/hello.jpg então use a seguinte fórmula

=SUBSTITUTE([TEXTCOLUMN_1],LEFT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)

[TEXTCOLUMN_1] = o nome da coluna que pretende alterar[NUM_OF_CHARACTERS] = número de caracteres do lado esquerdo que pretende remover

Se pretende remover do lado direito então use o seguinte

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)