Questão Planilha: Divida uma coluna se ela contiver uma determinada string


Aqui está um extrato da minha planilha: enter image description here

Por favor note: este é apenas um exemplo simplificado. Minha planilha completa tem muitas colunas e mais de 10.000 linhas.

Na minha planilha, frequentemente tenho linhas com texto entre colchetes que começam com LIT: (Como na imagem).

É possível extrair automaticamente este texto e colocá-lo em uma coluna separada na planilha?

(Por exemplo, no exemplo acima, [Lit: Next of hotel] iria em uma coluna separada, mas ainda permaneceria na mesma linha).

Nota: Conforme mostrado no exemplo, nem toda linha possui um exemplo [Lit:].

Atualmente estou usando páginas da Apple. Mas tenho a satisfação de experimentar o Google Docs ou o Open Office, se possível, ou outro pacote.


0


origem




Respostas:


Seus exemplos estão em conflito sobre se a string que você quer começa com [LIT: ou [Lit:. Eu assumi que a maiúscula [LIT:.

No LibreOffice (e presumivelmente outros equivalentes do Excel, embora eu não tenha ideia sobre o Apple Pages ou o Google Docs), o FIND() função permite localizar uma substring dentro de um campo de texto, mas retorna um erro se a substring não for encontrada, então você precisa usar IFERROR() também.

Vou considerar primeiro o exemplo simples onde qualquer [LIT: campo é sempre no final da string, com ] como o personagem final. Se os dados estiverem na coluna A, Começando às A1, então a seguinte fórmula fará o que você quer:

=IFERROR(MID(A1,FIND("[LIT:",A1),LEN(A1)),"")

Aqui se FIND() retorna um valor, então a substring dessa posição até o final da string é retornada; de outra forma, FIND() e, portanto, MID() gerará um erro e uma string em branco será retornada.

No caso mais complexo, onde o [LIT: campo pode ocorrer no meio da string, a fórmula deve ser elaborada:

=IFERROR(MID(A1,FIND("[LIT:",A1),FIND("]",MID(A1,FIND("[LIT:",A1),LEN(A1)))),"")

Neste caso, a substring [LIT: ao final da string é encontrado, mas o número de caracteres gerados a partir da célula original é limitado pela posição de ] dentro da substring; Novamente, qualquer erro irá gerar uma string em branco.

Qualquer que seja a fórmula usada, copie a célula e cole-a no restante da coluna. Se você precisa lidar com [LIT: ou [Lit:, em seguida, substitua FIND("[LIT:",A1) de SEARCH("\[L[Ii][Tt]:",A1): enquanto que FIND() procura uma correspondência literal sensível a maiúsculas e minúsculas SEARCH() usa correspondência de expressão regular.

Se você precisar remover o [LIT: substring da coluna original A, em seguida, coloque o extraído [LIT: campo na coluna Ce colocar em B1:

=SUBSTITUTE(A1,C1,"",1)

Agora copie isso no resto da coluna B e ocultar coluna A. É claro que quaisquer colunas e linhas iniciais poderiam ser usadas; Para meus exemplos, usei colunas adjacentes sem linhas de cabeçalho.

Observe que =SUBSTITUTE() não gera erros, então não há necessidade de usar IFERROR().


1



Obrigado, isso funciona brilhantemente. Exceto, ele deixa a string LIT na coluna original. Eu estava esperando dividi-lo, então a string é removida da coluna original (e só ocorre na nova coluna). Há alguma maneira de fazer isso? Obrigado novamente por sua ajuda, eu aprecio muito você tomando o tempo para me ajudar! - big_smile
Isso não ficou claro na sua pergunta. Você não pode remover o texto da coluna original sem script. O que você pode fazer é criar uma nova coluna que contenha o texto editado e, em seguida, ocultar a coluna original. - AFH
Obrigado! Existe alguma maneira de usar uma declaração NOT (por exemplo, encontrar tudo o que é não [LIT:] e todo o conteúdo dos colchetes. Dessa forma, eu poderia esconder a coluna original e, em seguida, criar duas novas colunas. Uma que contém todos os LIT texto (como você mostrou com sua fórmula) e depois um que contém todo o texto NOT LIT. - big_smile
Seria legal, mas a única maneira que eu sei fazer é encontrar o começo do [LIT: e saída os caracteres à esquerda deste, concatenados com os caracteres à direita de um subseqüente ], com qualquer erro ao gerar a string original. - AFH
Eu pensei que a resposta fosse uma elaboração de buscas e subseqüências (que eu deveria ser capaz de resolver), mas então me lembrei de uma função que fornece uma resposta mais elegante, então atualizei minha resposta para usar isso. - AFH