Macro para buscar y reemplazar dentro de una columna texto con texto de otra columna

Tengo una hoja en donde cada celda de la columna D contiene los
nombres de cada una de las hojas del libro (pueden ser hasta 100 hojas), en la
columna I tengo una fórmula que elaboré para encontrar información contenida en
esas hojas. La situación es que esa fórmula está relacionada con un sólo libro (DESREF('Dr.
Vargas2009-04-29'! G1, COINCIDIR(F74,'Dr. Vargas2009-04-29'!G2:G100,0)+1,0).
Necesito una macro que recorra la columna I y reemplace uno por uno con los
nombres contenidos en la columna D . Encontré esta fórmula por internet pero no
logro adaptarla a lo que quiero, porque sólo me permite reemplazar si el texto
es únicamente Dr. Vargas2009-04-29.

Range("I2"). Activate
For Each DATO In Range("I:I").Rows
If ActiveCell.FormulaR1C1 = "" Then Exit For
If ActiveCell.FormulaR1C1 = "Dr. Rafael Vargas2009-04-29"
Then
ActiveCell.Offset(RowOffset:=0,
ColumnOffset:=-5).Activate
ActiveCell.Copy
ActiveCell.Offset(RowOffset:=0,
ColumnOffset:=5).Activate
ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks:=False,
Transpose:=False
End If
ActiveCell.Offset(RowOffset:=1,
ColumnOffset:=0).Activate
Next DATO
Application.CutCopyMode = False
Range("I1").Activate
End Sub

2 respuestas

Respuesta
2

Te envío una macro para reemplazar la columna I con tu fórmula
'***Macro***
Sub llenaformula()
'Por.Dam
ufil = ActiveCell.SpecialCells(xlLastCell).Row
a = "(DESREF('"
b = "'!G1,COINCIDIR(F74,'"
c = "'!G2:G100,0)+1,0)"
For n = 2 To ufil
Cells(n, 9).Value = a & Cells(n, 4) & b & Cells(n, 4) & c
Next
End Sub
'***Macro***
Te comento lo siguiente:
1. Tienes que completar, en la macro, la parte que dice:
a = "(DESREF('"
Con la parte que falta de la fórmula, porque en tu pregunta no viene completa, supongo que la fórmula deberá iniciar con =
2. La macro se ejecutará a partir de la línea 2, hasta la última línea que tengas.
3. Existe un pequeño detalle que no encontré como solucionarlo desde la macro, pero es fácil hacerlo manualmente.
Después de ejecutar la marco, no se ejecutarán las fórmulas, es decir, te mostrará la fórmula y no el resultado de la fórmula.
4. Para activar el resultado de las fórmulas, selecciona la columna I, desde la fila 2 y hasta la última fila que tengas de datos.
5. Selecciona del menú: Edición / Reemplazar, en el campo buscar escribe el símbolo = y en el campo reemplazar escribe también = presiona reemplazar todos.
Listo, las fórmulas presentarán los resultados.

Hola experto. La fórmula completa es:

=DESREF('Dr. Vargas2009-04-29'!$G$1,COINCIDIR(F2,'Dr. Vargas2009-04-29'!$G$2:$G$100,0)+1,0), y esta fórmula se encuentra repetida en toda la columna I, lo que deseo que realice la macro es que cambie el texto de la fórmula

Dr. Vargas2009-04-29 fila por fila por el contenido en la columna D:

Ejemplo: D2 = Dr. Vargas2009-05-20 D3 = Dr. Vargas2009-06-30 y así sucesivamente hasta la última fila

Marian

Eso hace la macro, sólo que no enviaste la fórmula completa desde un principio.

Ejecuta la macro y te va a corregir las fórmulas.

'***Macro***
Sub llenaformula()
'Por.Dam
ufil = ActiveCell.SpecialCells(xlLastCell).Row
a = "=DESREF('"
b = "'!$G$1,COINCIDIR(F2,'"
c = "'!$G$2:$G$100,0)+1,0)"
For n = 2 To ufil
Cells(n, 9).Value = a & Cells(n, 4) & b & Cells(n, 4) & c
Next
End Sub
'***Macro***

Saludos. Dam

Respuesta
1

Mándame el archivo para verlo de cerca y poder ayudarte. Explícamelo en el excel

[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas