Macro Remplazar "ABSOLUTAS"

Buenas pues la cuestión mía es la siguiente:
Quiero remplazar en una columna por ejemplo la palabra GIGANTE em Gigante el problema que tengo que en la búsqueda de la columna si se encuentra con la palabra GIGANTESCO me la remplaza por GiganteSCO, cuando yo solo quiero que remplace la búsqueda absoluta encontrado las siguientes pero ninguna la realiza como yo digo
-
Cells.Replace What:="GIGANTE", Replacement:="Gigante", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
-
    For Each cell In Selection
        cell.Value = Replace(cell.Value, "GIGANTE", "Gigante", 1, 1, vbTextCompare)
    Next cell

1 respuesta

Respuesta
1
Para la 2da instrucción este sería el ajuste:
For Each cell In Selection
    If cell.Value = "GIGANTE" Then cell.Value = Replace(cell.Value, "GIGANTE", "Gigante", 1, 1, vbTextCompare)
Next cell
Este ejemplo es más práctico que el anterior, ya que revisa solo la selección y no la hoja completa como la 1ra (que también te envié ajuste)
No funciona solo selecciona la columna pero ala hora de la búsqueda y remplazo no ace nada, esto es lo que tengo echo tal como indicaste
Private Sub RemplazarColumna()
Cells.Find(What:="PLAZA", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
ActiveCell.Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
For Each cell In Selection
    If cell.Value = "GIGANTE" Then cell.Value = Replace(cell.Value, "GIGANTE", "Gigante", 1, 1, vbTextCompare)
Next cell
End Sub
Tenías 2 instrucciones y ninguna te había resultado.
Por eso te separé en 2 consultas cada 1 de las instrucciones, pero tenés que utilizar 1 o la otra.
Entonces aquí va 1 rutina completa usando solo la primer instrucción, donde tenías que reemplazar xlPart por xlWhole:
Private Sub RemplazarColumna()
Cells.Replace What:="GIGANTE", Replacement:="Gigante", LookAt:=xlWhole, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub
O podés utilizar esta otra, ajustada también en la línea del xlPart:
Private Sub RemplazarColumna()
Cells.Find(What:="PLAZA", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
ActiveCell.Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
For Each cell In Selection
    If cell.Value = "GIGANTE" Then cell.Value = Replace(cell.Value, "GIGANTE", "Gigante", 1, 1, vbTextCompare)
Next cell
End Sub
Me sigue ocurriendo lo mismo se queda seleccionada la columna plaza y no remplaza las palabras de búsqueda
Con tan pocas aclaraciones no puedo detectar dónde te estás equivocando.
Enviame tu hoja (o pedime el ejemplo) al correo que encontrarás en mi sitio, no olvides indicarme tu alias y motivo de consulta.
Te pongo un enlace con el fichero, viene las columnas y la macro introducida haber si me puedes echar una mano. Muchas gracias por las molestias que estas teniendo. Saludos
http://www.mediafire.com/?2n32zmnjmtj
Bien, ahora sí queda claro que no necesitas reemplazar 1 texto sino toda la col.
Entonces te servirá este ajuste que le hice a la instrucción del bucle:
Private Sub RemplazarColumna()
Cells.Find(What:="PLAZA", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
ActiveCell.Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
For Each cell In Selection
    cell.Value = UCase(Left(cell.Value, 1)) & LCase(Mid(cell.Value, 2, Len(cell.Value) - 1))
    'If cell.Value = "CANDAS" Then cell.Value = Replace(cell.Value, "CANDAS", "Candas", 1, 1, vbTextCompare)
Next cell
End Sub
Sdos
Elsa
http://aplicaexcel.galeon.com/guias.htm
No necesito remplazar toda la columna, necesito remplazar solo algunas celdas como el ejemplo, es decir: yo quiero que me busque CANDAS y lo remplace por Candas pero pero que no me coja CANDASERO y me lo remplace por CandasERO sino que ese lo deje tal como esta CANDASERO, son búsquedas estrictas solo que busque en la columna la palabra que digo y la remplace uno una palabra que da la casualidad que coincida como el caso de CANDASERO y me lo remplace en ese caso quiero que pase al siguiente que no lo modifique que se quede tal como esta. SALUDOS
Pero para reemplazar 1 solo texto, imagino que tendrás que agregar un Inputbox o algo para decirle a Excel cuál es el texto, sin tener que modificar la rutina en cada caso...
La rutina anterior estaba bien entonces, solo que noté que cada celda no contiene solo el texto sino una cantidad de espacios provenientes quizás de una conversión de texto a celda
Entonces la instrucción quedaría así:
For Each cell In Selection
    'cell.Value = UCase(Left(cell.Value, 1)) & LCase(Mid(cell.Value, 2, Len(cell.Value) - 1))
    If Trim(cell.Value) = "CANDAS" Then cell.Value = Replace(cell.Value, "CANDAS", "Candas", 1, 1, vbTextCompare)
Next cell
Sdos
Elsa
Muchas gracias, funciona ala perfección ! Mi ultima pregunta era una vez encontrado y modificado estas celdas que se posicionase en la celda de la columna siguiente en la misma fila y pusiese por ejemplo "ASTURIAS" no se si sera algo parecido a esto e probado pero no me funciona
    For Each cell In Selection
            If Trim(cell.Value) = "CANDAS" Then cell.Value = Replace(cell.Value, "CANDAS", "Candas", 1, 1, vbTextCompare)
    ActiveCell.Offset(0, 1).Value = "ASTURIAS"
    Next cell
ESto sería lo correcto:
For Each cell In Selection
'solo se coloca el nuevo texto en la celda encontrada
    If Trim(cell.Value) = "CANDAS" Then
          cell.Value = Replace(cell.Value, "CANDAS", "Candas", 1, 1, vbTextCompare)
          cell.offset(0,1) = "ASTURIAS"
     End If
Next cell

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas