Como extrair a string entre a enésima e a n + 1ª ocorrência de um caractere no Excel 2010?

2

Eu tenho uma planilha com uma coluna que contém uma lista de um ou mais nomes de banco de dados. Infelizmente, o tempo de resposta para obter este relatório alterado é longo. Então eu preciso manipular os dados.

A coluna contém todos os bancos de dados específicos de um registro em uma única célula, separados por vírgulas. Eu preciso separar essa lista e colocar cada banco de dados em uma célula separada. Nota importante: Não é permitido usar macros / códigos VBA nesta solução.

O primeiro é fácil: encontre a primeira vírgula, retorne tudo para a esquerda. São os próximos com quem estou lutando.

Eu criei uma coluna que conta quantas vírgulas existem na célula, para que eu possa determinar se vários bancos de dados estão listados.

Como posso lidar com os próximos?

    
por DeNaeL 27.01.2016 / 16:26

2 respostas

1

Esta não é uma resposta da função de planilha, mas também não usa VBA.

Você já tentou usar o recurso "Texto para colunas"? No Excel 2010, é um dos botões na faixa de dados.

  1. Selecione sua coluna.
  2. Clique no botão "Texto para colunas".
  3. Na primeira página do assistente, escolha "Delimitado" e, em seguida, Avançar.
  4. Na segunda página, marque "Vírgula" para escolhê-lo como o delimitador. Você pode querer marcar / desmarcar alguns dos outros, dependendo do formato dos seus dados.
  5. Você provavelmente pode clicar em Concluir neste ponto para dividir seus dados em colunas, mas pode querer ir para a próxima página para alterar os formatos das colunas.
por 27.01.2016 / 16:44
1

Com dados de amostra em A1 , em B1 digite:

=TRIM(MID(SUBSTITUTE($A1,",",REPT(" ",999)),COLUMNS($A:A)*999-998,999))

e copie em:

EDIT#1:

SecomeçarmoscommaterialnascolunasAeBdestaforma:

eexecuteestamacrocurta:

Subdural()DimNAsLong,iAsLong,KAsLongN=Cells(Rows.Count,"A").End(xlUp).Row
   K = 1

   For i = 2 To N
      v = Cells(i, "A").Value
      ary = Split(Cells(i, "B").Value, ",")
      For Each a In ary
         Cells(K, "C").Value = v
         Cells(K, "D").Value = a
         K = K + 1
      Next a
   Next i
End Sub

vamos acabar com isso:

    
por 27.01.2016 / 20:06