Excel Smart Localizar e substituir somente caracteres específicos

3

Eu quero mudar INT para INTERNATIONAL e NA para MONTAGEM NACIONAL em toda a pasta de trabalho do Excel através de uma caixa de diálogo Macro ou Localizar e Substituir o Excel. Mas quando eu corro a macro ou a troco através da caixa de diálogo Find and Replace ela também substitui NA da CHINA por 2 caracteres e tornou-se CHINATIONAL ASSEMBLY e INTERIOR para INTERNATIONALERIOR.

Agora, quero que o Excel encontre apenas o caractere NA na pasta de trabalho que não esteja incluído em nenhum outro caractere da mesma forma que o caractere INT que não esteja anexado a nenhum outro caractere.

    
por Asim 14.09.2012 / 16:46

4 respostas

1

Se você seguir a rota do VBA, tente usar Regular Expressions

Aqui está um começo

Sub ReplaceWithRE()
    Dim re As Object 'RegExp
    Dim rng As Range, cl As Range
    Dim sh As Worksheet
    Dim wb As Workbook
    Dim sReplace As String
    Dim aReplace(0 To 1, 0 To 1) As String
    Dim i As Long

    Set wb = ActiveWorkbook
    Set re = CreateObject("vbscript.regexp") ' New RegExp
    re.Global = True
    re.IgnoreCase = False
    re.MultiLine = True

    ' Load array of patterns and replacements
    aReplace(0, 0) = "\bINT\b"
    aReplace(0, 1) = "INTERNATIONAL"
    aReplace(1, 0) = "\bNA\b"
    aReplace(1, 1) = "NATIONAL ASSEMBLY"

    For Each sh In wb.Worksheets
        On Error Resume Next
        Set rng = sh.UsedRange.SpecialCells(xlCellTypeConstants)
        If Err.Number <> 0 Then
            Err.Clear
        Else
            On Error GoTo 0
            For Each cl In rng
                sReplace = cl.Value
                ' Test each cell for each pattern, replace when found
                For i = 0 To UBound(aReplace, 1)
                    re.Pattern = aReplace(i, 0)
                    If re.Test(sReplace) Then
                        sReplace = re.Replace(sReplace, aReplace(i, 1))
                    End If
                Next
                cl.Value = sReplace
            Next
        End If
    Next


End Sub
    
por 14.09.2012 / 21:34
3

Se os valores que você deseja substituir estiverem sozinhos nas células (nenhum outro texto), siga a solução do CharlieRB . Se os valores estiverem localizados nas células, junto com o texto adicional, uma versão ligeiramente modificada funcionará.

Abra a janela Localizar e substituir. Clique na guia "Substituir".

Insiraosvalores"Localizar o que" e "Substituir com". Clique no botão "Encontrar tudo".

Revise a lista na parte inferior que detalha quais registros foram encontrados. Realce o registro que você deseja atualizar e clique no botão "Substituir".

    
por 16.09.2012 / 17:16
2

Na janela Find and Replace , você precisa marcar a caixa Match entire cell contents e executá-la.

    
por 14.09.2012 / 17:18
1
  1. Salve seu arquivo como um arquivo CSV. Se você quiser manipular um subconjunto de sua planilha (por exemplo, colunas e / ou linhas selecionadas), copie essa região em um arquivo de rascunho (ou folha) e salve-a como CSV. Se você precisar modificar várias planilhas, repita esse processo para cada planilha.
  2. Edite o arquivo CSV com algum tipo de editor de texto inteligente (ou seja, mais inteligente que o Bloco de notas). vi é bom para isso; use um comando como %s/\<INT\>/INTERNATIONAL/g . O Microsoft Word provavelmente será suficiente; use a opção "Encontrar apenas palavras inteiras" em More>> em "Localizar e substituir".
  3. Leia o arquivo CSV editado de volta no Excel.
  4. Copie os valores modificados em sua pasta de trabalho original para preservar a formatação.
por 14.09.2012 / 19:04