Como identificar abas horizontais no Excel e substituí-lo

3

Eu tenho milhares de dados no meu arquivo de excel, eles são dados raspados de vários sites, inicialmente armazenados em arquivos CSV e depois migrados para o Excel. Estes dados são para uso do meu servidor web.

Agora, meu problema é que há horizontal tabs escondido em algum lugar entre muitos spaces , e eles estão causando um problema crítico para meu servidor da web.

Vou dar um exemplo para esclarecer aqui:

Dados no Excel : "Esta é uma célula"

Dados quando codificados para serem usados como parâmetro de URL : "Este% 20 é% 09a% 20cell"

Você pode ver claramente que um dos espaços intermediários foi codificado para% 09, o que representa uma guia horizontal . Isso está causando um problema grave do meu servidor e eu preciso identificar e substituir isso.

Então, como eu encontraria uma guia horizontal no Excel?

    
por Joel Min 25.11.2015 / 08:36

3 respostas

4

A resposta de Burgi faz o truque, mas ao invés de ter que duplicar todo o conjunto de dados com uma planilha cheia de fórmulas, você pode conseguir o mesmo através de algumas linhas de script.

Sub ReplaceTabs()
   Dim c As Range

   For Each c In ActiveCell.CurrentRegion
      c.Value = Replace(c.Value2, Chr(9), Chr(32))
   Next c
End Sub

Existem alguns métodos para percorrer todas as células relevantes (por exemplo, você poderia segmentar colunas específicas com ActiveSheet.Range("A:A") etc. ou selecionar as células em questão e usar Selection.Cells ), mas esse método funcionaria se as células são contíguos e as guias podem estar em qualquer célula.

Não é super veloz (200.000 células levaram cerca de 10s na minha máquina), mas deve ser rápido o suficiente.

Se essa for uma tarefa comum, você poderá criar isso em um script de importação.

    
por 25.11.2015 / 11:36
3

Este código deve funcionar para você:

=SUBSTITUTE(A1,CHAR(9),CHAR(32))

A fórmula acima substitui todas as instâncias de CHAR(9) por CHAR(32) na string fornecida.

  • CHAR(9) - o caractere de tabulação
  • CHAR(32) - O caractere de espaço

Veja este artigo wiki para a tabela de pesquisa que o Windows usa.

    
por 25.11.2015 / 11:01
2

para acelerar a resposta do Lunatik para ativar / desativar a atualização enquanto a macro está funcionando.

Dim tmp As Boolean
tmp = Application.ScreenUpdating
' this stores current value
Application.ScreenUpdating = False

   Dim c As Range

   For Each c In ActiveCell.CurrentRegion
      c.Value = Replace(c.Value2, Chr(9), Chr(32))
   Next c

Application.ScreenUpdating = tmp
    
por 25.11.2015 / 16:03