Uso de referencias de fórmulas R1C1 en una macro (Microsoft Excel)
A Gerry le resulta más fácil armar fórmulas que utilicen referencias de celda R1C1. Sabe cómo hacer esto cuando agrega fórmulas manualmente a una hoja de trabajo, pero se pregunta cómo puede usar las referencias R1C1 en fórmulas que junta y mete en celdas usando una macro. Se pregunta si hay algo de lo que deba tener cuidado al hacer esto.
Cuando normalmente rellena una fórmula en una celda, usaría este tipo de sintaxis en su macro:
Cells(3,1).Formula = "=A1 + A2" Range("A3").Formula = "=A1 + A2"
Cualquiera de estos funcionará bien; ambos introducen una fórmula simple en la celda A3. Sin embargo, si desea usar referencias R1C1 en la fórmula que coloca en la celda A3, solo necesita cambiar la propiedad Formula a la propiedad FormulaR1C1:
Cells(3,1).FormulaR1C1 = "=R1C1 + R2C1" Range("A3").FormulaR1C1 = "=R1C1 + R2C1"
Es interesante notar que si coloca las fórmulas R1C1 anteriores en una celda y la hoja de trabajo no tiene la pantalla R1C1 activada, Excel convierte la fórmula para reflejar la pantalla que está activa. En otras palabras, cambia automáticamente «= R1C1 + R2C1» a «= $ A $ 1 + $ A $ 2». Lo contrario también es cierto: coloque la fórmula «= A1 + A2» en una celda y se mostrará como «= R [-2] C + R [-1] C» si tiene la pantalla R1C1 encendida.
También debe tener en cuenta que, dado que tanto Formula como FormulaR1C1 son propiedades, puede leerlas y ver la fórmula en la celda en el formato deseado. Por ejemplo, digamos que la celda A3 contiene la fórmula «= A1 + A2». Si luego ejecuta la siguiente macro, verá la fórmula mostrada en los formatos deseados:
Sub TestFormula() Dim sMsg As String sMsg = "Regular format: " & Cells(3,1).Formula & vbCrLf sMsg = sMsg & "R1C1 format: " & Range("A3").FormulaR1C1 MsgBox sMsg End Sub
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (5294) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.