r1c1 - usar formulas de excel en vba
¿Cuál es la función de FormulaR1C1? (3)
Aquí hay información de mi blog sobre cómo me gusta utilizar form1c1 fuera de vba:
Acaba de escribir una fórmula, la copió en toda la hoja de cálculo, le dio formato a todo y se da cuenta de que olvidó hacer una referencia absoluta: todas las fórmulas necesitaban hacer referencia a la celda B2, pero ahora todas hacen referencia a diferentes celdas.
¿Cómo vas a hacer una búsqueda / reemplazo en las celdas, considerando que una tiene B5, la otra C12, la tercera D25, etc., etc.?
La manera más fácil es actualizar su estilo de referencia a R1C1. La referencia R1C1 funciona con posicionamiento relativo: R marca la Fila, C la Columna y los números que siguen a R y C son posiciones relativas (entre []) o posiciones absolutas (no []).
Ejemplos:
- R [2] C se refiere a la celda dos filas debajo de la celda en la que se encuentra la fórmula
- RC [-1] se refiere a la celda una columna a la izquierda
- R1C1 se refiere a la celda en la primera fila y primera celda ($ A $ 1)
¿Que importa? Bueno, cuando escribiste tu primera fórmula al principio de esta publicación, B2 era la celda 4 filas arriba de la celda donde la escribiste, es decir, R [-4] C. Cuando lo copia de forma cruzada y descendente, mientras cambia la referencia A1, la referencia R1C1 no lo hace. A lo largo de toda la hoja de cálculo, es R [-4] C. Si cambia al estilo de referencia R1C1, puede reemplazar R [-4] C por R2C2 ($ B $ 2) con un simple Buscar / Reemplazar y hacerlo de una sola vez.
He estado buscando en FormulaR1C1 como una función, ¿cómo funciona esto exactamente? Entiendo lo que se ha dicho en Internet, que se encuentra en la Columna 1 de la Fila 1, pero ¿cómo funciona realmente la gente? ¿Cuál es el resultado final de usar FormulaR1C1 ?
¿También se puede cambiar para que comience en un punto específico de una hoja, o siempre será R1C1? Entonces, ¿podría ser FormulaR2C3 ?
Encuentro que la característica más valiosa de .FormulaR1C1 es la velocidad. Frente a, por ejemplo, un par de bucles muy grandes que llenan algunos datos en una hoja, si puede convertir lo que está haciendo en un formulario .FormulaR1C1. Entonces, una sola operación, por ejemplo, myrange.FormulaR1C1 = "my formuala particular", es deslumbrantemente rápida (puede ser mil veces más rápida). Sin bucles y contando: simplemente llena el rango a alta velocidad.
FormulaR1C1 tiene el mismo comportamiento que Formula, solo que utiliza la anotación de estilo R1C1, en lugar de la anotación A1. En la anotación A1 usarías:
Worksheets("Sheet1").Range("A5").Formula = "=A4+A10"
En R1C1 usarías:
Worksheets("Sheet1").Range("A5").FormulaR1C1 = "=R4C1+R10C1"
No actúa sobre la fila 1 columna 1, actúa sobre la celda o rango objetivo. La columna 1 es igual que la columna A, por lo que R4C1 es lo mismo que A4, R5C2 es B5, y así sucesivamente.
El comando no cambia los nombres, la celda objetivo cambia. Para su R2C3 (también conocido como C2) ejemplo:
Worksheets("Sheet1").Range("C2").FormulaR1C1 = "=your formula here"