Macro para reemplazar las referencias de una formula por sus valores desde VBA

3 envíos / 0 nuevos
Último envío
kario
Imagen de kario
Offline
última acción: Hace 5 años 10 meses
alta: 13/08/2017 - 17:05
Puntos: 60
Macro para reemplazar las referencias de una formula por sus valores desde VBA

EL PROBLEMA ES SIMPLE DE ENTENDER: quiero que en las celdas seleccionadas y que contienen una fórmula, se reemplacen las referencias (argumentos), por los valores de donde jala.

Es decir, quiero que haga lo que hace la función "EVALUAR FÓRMULA" (de la pestaña FÓRMULAS del grupo AUDITORIA DE FÓRMULAS), pero dentro de la misma celda. No me importa perder las referencias, solo quiero los valores de esas referencias en esa celda.

Ejemplo:

> La celda A1 tiene una fórmula:

Celda A1:  "= B2 + C3"

> Las celdas B2 y C3 tienen los siguientes valores:

Celda B2: "=1"

Celda C3: "=2"

>Al ejecutar la macro deseada:

> La celda A1 debe quedar así:

Celda A1:  "= 1 + 2"

Ojo:

La celda A1 puede tener otra configuración de fórmulas y referencias.

Ejemplo: Celda A1: "=D4+F4-AA5"

Agradecería que me ayuden, pues he buscado como hacerlo por varios foros, pero no he encontrado una solución para ello. Solo he encontrado para poner el resultado final, pero eso no deseo, quiero los valores de cada referencia en dicha celda.

Etiquetas: 

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 3 semanas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Tendrías que obtener el valor

Tendrías que obtener el valor de la fórmula con:

cells(1,1).formula        (esto para A1, pon las coordenadas correctas de cada celda)

Lo segundo es recorrer tu fórmula caracter a caracter, localizando combinaciones de hasta 3 letras y hasta 7 números. Cada vez que encuentres uno de estos, sustitúyelo por el valor de la celda:

letrasynumeros = mid(texto,4,7)            (suponiendo que hayamos encontrado una referencia entre los caracteres 4 y 7)
Range(letrasynumeros).value

Si te interesa, es mucho más sencillo sustituir la fórmula por el resultado, así:

cells(1,1).value = cells(1,1).value

 

Un saludo

kario
Imagen de kario
Offline
última acción: Hace 5 años 10 meses
alta: 13/08/2017 - 17:05
Puntos: 60
Gracias por tu respuesta. Y,

Gracias por tu respuesta. Y, siguiendo la lógica que me muestras alguien lo resolvió.

Si no les molesta, aquí les comparto la solución que me dieron:

http://foro.todoexcel.com/viewtopic.php?f=4&t=44040&p=185756#p185756