¿Cómo puedo asignar el resultado de una fórmula R1C1 a una variable?

Necesito asignar el resultado de la fórmulaR1C1 en una variable:

Tengo esto:

Cells(x, 1).FormulaR1C1 = _
"=concatenate(YEAR((TODAY())),""-"",IF(month((TODAY()))<=9,concatenate(0,month((TODAY()))),month((TODAY()))),""-"",IF(DAY((TODAY()))<=9,concatenate(0,DAY((TODAY()))),DAY((TODAY()))))"

Y lo necesito algo asi

Mivariable = _
"=concatenate(YEAR((TODAY())),""-"",IF(MONTH((TODAY()))<=9,concatenate(0,MONTH((TODAY()))),MONTH((TODAY()))),""-"",IF(DAY((TODAY()))<=9,concatenate(0,DAY((TODAY()))),DAY((TODAY()))))"

1 Respuesta

Respuesta
1

. Mivariable = Cells(x, 1).value

Gracias, pero lo que necesito es que el resultado (Fecha en formato especial) se almacene dentro de VBA para luego llamarla; es decir, no asignarla a ninguna celda de la hoja del libro.

Intenté con :

Dim mivariable As xyz

With Application.worksheetFunction

mivariable=blablabla

End with

Mas no funciona

Gracias

Pero ¿no tienes ya en

Cells(x, 1). FormulaR1C1

Este calculo
"=concatenate(YEAR((TODAY())),""-"",IF(month((TODAY()))<=9,concatenate(0,month((TODAY()))),month((TODAY()))),""-"",IF(DAY((TODAY()))<=9,concatenate(0,DAY((TODAY()))),DAY((TODAY()))))"

¿

?

Sí, lo tengo en una celda, pero no quiero que se vea en la hoja, quiero que quede "internamente en VB" el usuario no necesita verlo. podría asignarlo a una celda y luego borrar el contenido al final pero no quiero así. Quiero que el resultado se almacene dentro de una Variable en VBA.

Gracias

Sí, pero no quiero que ninguna celda contenga este resultado, no es necesario que el usuario lo vea. Quiero almacenarlo dentro de VB, de forma que pueda llamarlo luego dentro del código sin problemas

Lo que dices de no tenerlo en la hoja basta con borrarlo

Cells(x, 1).. Clear

Y guardarlo en variable, como te dije antes

Mivariable = Cells(x, 1).value

O

Mivariable = Cells(x, 1).text (si quieres tal cual esté)

Hola, ya se que se puede ocn un ".Clear" pero no quiero que ese dato aparezca ni un instante en la hoja de excel. Lo quiero almacenar dentro de una variable.

Mivariable = resultado de la fórmula R1C1.

Gracias

Elresultado de esa formula es entero que representa la fecha

Y para guardar eso en Mivariable basta con lo que tienes

Mivariable = _
"=concatenate(YEAR((TODAY())),""-"",IF(MONTH((TODAY()))<=9,concatenate(0,MONTH((TODAY()))),MONTH((TODAY()))),""-"",IF(DAY((TODAY()))<=9,concatenate(0,DAY((TODAY()))),DAY((TODAY()))))"

Si quieres el valor de la fecha visible, deberías poner

Mivariable = Year(Date) & "-" & Month(Date) & "-" & Day(Date)

Creo que no es tan fácil como lo dices ya que en la barra de función f(x) el resultado de tu fórmula se visualiza así: 16/02/2014, y lo necesito visualizar de esta forma exacta: 2014-01-31 y solo lo he podido conseguirlo con mi extensa fórmula, pero no he podido asignar el resultado de esa fórmula a Mivariable. Lo único que he podido es poner el resultado de esa fórmula en una celda (Cells(x, 1).FormulaR1C1 etc...) y luego limpiarla con un ".clear" pero no quiero eso, quiero realizar un cálculo en VBA que me arroje el resultado con formato deseado (Año-mes-día) y que se vea así en la barra de función f(x).

Debe poderse asignar el resultado de mi fórmula a una variable.

Gracias.

Me tienes un poco enredado

Me dice "no quiero que ese dato aparezca ni un instante en la hoja de excel" y lo "visualizas", y usas en la barra fx, eso es solo posible en la hoja; asi que asumo que SI lo tienes en la hoja.

¿Lo qué muestras en la hoja en Cells(1, 1) es solo prueba?

Y quieres que en Mivariable quede esto: 2014-01-¿31?

Necesito que en mi variable quede la fecha del día pero en formato estrictamente así: Año - mes - día pero que sí por ejemplo lo asigno a una celda, se pueda ver en la barra de función de esa misma forma y no que cambie a día - mes - año (como suele pasar)

La forma en que se vea en la celda depende solo del formato que le pongas manual o generado por excel

No importa como lo guardes en mivariable,

Que, de paso, ya lo tienes guardado en mivariable,

Cuando lo muestres en la hoja solo debes ponerle el formato deseado

Cells(1, 1).NumberFormat = "yyyy-mm-dd;@"

En mivariable puedes guardar la fecha como quieras, de hecho VBA guarda las fechas siempre a su estilo interno

Creo que al final como dices te enredé, y me disculpo por eso. La respuesta la obtuve al final, no cambiando el formato, sino de otra forma. Gracias por el interés y las rápidas respuestas.

Un saludo :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas