Como posso encontrar e substituir vários valores nas células selecionadas?

1

Eu quero executar um localizar e substituir vários valores em um intervalo no excel com valores de 2 colunas: A com a string original; B com a string de substituição. Eu já encontrei uma macro que está funcionando (obrigado nixda), mas não consigo lidar com os traços entre alguns dos valores mais longos da string original.

Idealmente, gostaria de poder executá-lo apenas no intervalo selecionado. Um bônus adicional seria se eu também pudesse selecionar o intervalo de pesquisa.

Abaixo, os valores de amostra das colunas originais e de valor de substituição:

Coluna de valores originais:

T1-D7-F2-F3-    
T1-D7-F2-F3-C33    
U4 U5 Q2 Q4    
U3-Q7.U1    
R42-43-22-23-

Coluna de valores de substituição:

T1,D7,F2,F3    
T1,D7,F2,F3,C33    
U4,U5,Q2,Q4    
U3,Q7,U1    
R42,R43,R22,R23

Atualização em resposta à resposta do aluno de Gary

Valores na guia "dados", coluna A:

1000PF CAP
4 SCREWS
D21 D22 - 709
D4-U3-RV3-Q2-U3
D7 - 00004224
D7 - 0004224
D7 - 004224
D7-F2-C33-F3-U6
D7-F3-J1
END PLATE
END PLATES
F2 F3 - 219
F2-F3-T1
Q11-Q3-J2-J9-
Q2 Q10 U12
Q2 Q3 Q10 Q11
Q2 Q3 Q11 Q10
Q2- Q4- U4- U5
Q2-Q5-Q8-Q10
Q3-Q11.R95
Q5-C10-C35
Q5-C19

Os valores na guia "tabl", coluna A, serão os mesmos acima

Valores na guia "tabl", coluna B (valores de substituição):

1000PF_CAP
4SCREWS
D21,D22,000709
D4,U3,RV3,Q2,U3
D7,004224
D7,004224
D7,004224
D7,F2,C33,F3,U6
D7,F3,J1
END_PLATE(S)
END_PLATE(S)
F2,F3,000219
F2,F3,T1
Q11,Q3,J2,J9
Q2,Q10,U12
Q2,Q3,Q10,Q11
Q2,Q3,Q11,Q10
Q2,Q4,U4,U5
Q2-Q5-Q8-Q10
Q3,Q11,R95
Q5,C10,C35
Q5,C19

Depois de executar a macro, obtenho os seguintes resultados, em vez do que espero:

1000PF_CAP CAP
4SCREW(S)S
D21,D22 - 709
D4,U3,RV3-Q2-U3
D700004224
D70004224
D7004224
D7,F2-C33-F3-U6
D7,F3-J1
END_PLATE(S)
END_PLATE(S)S
F2,F3 - 219
F2,F3-T1
Q11-Q3-J2,J9-
Q2,Q10 U12
Q2 Q3 Q10,Q11
Q2,Q3,Q11 Q10
Q2,Q4- U4,U5
Q2-Q5Q8-Q10
Q3,Q11.R95
Q5C10,C35
Q5C19

Alguma idéia?

Editar

Depois de executar esta macro para substituir os valores, tenho problemas com os seguintes valores:

Coluna esquerda abaixo = As colunas de pesquisa A e B têm os mesmos valores (não devem ser alterados, exceto que R 3 deve se tornar R3).

Coluna direita abaixo = Resultado depois de executar a macro.

Q?  Q?
Q1  Q?
Q2  Q?
Q3  Q?
Q4  Q?
Q5  Q?
Q6  Q?
Q7  Q?
Q8  Q?
Q9  Q?
QR? QR?
R 3 R?
R?  R?
R0  R?
R1  R?
R2  R?
R3  R?
R4  R?
R5  R?
R6  R?
R7  R?
R8  R?
R9  R?
RE  R?
RV  R?
    
por Daniel 14.10.2013 / 22:40

2 respostas

1

Aqui está uma pequena macro de amostra. A tabela de tradução está em uma aba chamada "tabl" e os dados a serem editados estão em uma aba chamada "data":

Sub ChangeValues()
    Dim N As Long, L As Long
    Dim rLook As Range
    Sheets("tabl").Select
    N = Cells(Rows.Count, "A").End(xlUp).Row
    aryA = Range("A1:A" & N)
    aryB = Range("B1:B" & N)
    Sheets("data").Select
    Set rLook = Application.InputBox(Prompt:="Select replacement range", Type:=8)
    For L = 1 To N
        rLook.Replace aryA(L, 1), aryB(L, 1)
    Next L
End Sub
    
por 15.10.2013 / 13:36
0

Se você instalar o add-on RegEx Find / Replace , poderá usar as seguintes expressões regulares para realizar isso e eu testei. Funciona.

Find:           \s*[-.]\s*
Replacement:    ,
Find:           \s+(?!$)
Replacement:    _
    
por 22.10.2013 / 22:11