Hablaremos hoy de los estilos de referencia A1 y F1C1 / R1C1 en Excel... pero desde la perspectiva de nuestras macros.
Expondré hoy el método .ConvertFormula que con sus sintaxis:
.ConvertFormula(Formula, FromReferenceStyle, ToReferenceStyle, ToAbsolute, RelativeTo)
que nos permitirá convertir las referencias de celda en una fórmula entre los estilos de referencia A1 y F1C1/R1C1, y entre referencias relativas y absolutas, o ambas...
Veamos el siguiente ejemplo:
Se observa como en el rango B7:D8 aparecen nuestras fórmulas SUMA y PROMEDIO en forma relativa:
=SUMA(B3:B6)
=PROMEDIO(B3:B6)
Aplicando el método .ConvertFormula a ese rango B7:D8 veremos el aspecto que tendrían dichas fórmulas cambiando a un estilo de referencia R1C1 y en modo absoluto.
Abrimos la ventana de código de nuestro módulo estándar y añadimos el siguiente código:
Al ejecutar nuestra macro vemos una ventana para cada celda del rango y cómo ha sido convertida:
Por ejemplo:
=SUMA(B3:B6) queda convertido a =SUMA(R3C2:R6C2)
y
=PROMEDIO(B3:B6) queda convertido a =PROMEDIO(R3C2:R6C2)
Otro ejemplo consiste en aplicar un cambio previo, desde nuestra macro, del estilo de referencia empleado (A1 o F1C1 / R1C1).
Abrimos nuestra ventana de código de nuestro módulo estándar y añadimos el siguiente código:
Con este ejemplo vemos como empleamos el cambio de estilo:
Application.ReferenceStyle = xlA1
o con
Application.ReferenceStyle = xlR1C1
o como recuperamos el existente asociándolo a una variable:
EstiloReferencia = Application.ReferenceStyle
En el ejemplo pasamos una fórmula escrita en forma R1C1 y modo absoluto:
"=SUM(R2C2:R6C4)"
a estilo A1 en modo relativo!.
Expondré hoy el método .ConvertFormula que con sus sintaxis:
.ConvertFormula(Formula, FromReferenceStyle, ToReferenceStyle, ToAbsolute, RelativeTo)
que nos permitirá convertir las referencias de celda en una fórmula entre los estilos de referencia A1 y F1C1/R1C1, y entre referencias relativas y absolutas, o ambas...
Veamos el siguiente ejemplo:
Se observa como en el rango B7:D8 aparecen nuestras fórmulas SUMA y PROMEDIO en forma relativa:
=SUMA(B3:B6)
=PROMEDIO(B3:B6)
Aplicando el método .ConvertFormula a ese rango B7:D8 veremos el aspecto que tendrían dichas fórmulas cambiando a un estilo de referencia R1C1 y en modo absoluto.
Abrimos la ventana de código de nuestro módulo estándar y añadimos el siguiente código:
Sub ConvirtiendoEstilosReferencia() Dim celda As Range Dim TextoFormula As String, NuevaFormula As String For Each celda In Range("B7:D8") If celda.HasFormula = True Then TextoFormula = celda.FormulaLocal 'Sintaxis método: '.ConvertFormula(Formula, FromReferenceStyle, ToReferenceStyle, ToAbsolute, RelativeTo) 'Convierte las referencias de celda en una fórmula entre los estilos de referencia A1 y F1C1, 'entre referencias relativas y absolutas, o ambos. 'Al aplicar el método, en este ejemplo, convertimos a referencia R1C1 y en tipo Absoluta NuevaFormula = Application.ConvertFormula(TextoFormula, _ fromReferenceStyle:=xlA1, _ toReferenceStyle:=xlR1C1, _ ToAbsolute:=xlAbsolute) 'mostramos la fórmula en estilo R1C1 cambiado MsgBox NuevaFormula End If Next celda End Sub
Al ejecutar nuestra macro vemos una ventana para cada celda del rango y cómo ha sido convertida:
Por ejemplo:
=SUMA(B3:B6) queda convertido a =SUMA(R3C2:R6C2)
y
=PROMEDIO(B3:B6) queda convertido a =PROMEDIO(R3C2:R6C2)
Otro ejemplo consiste en aplicar un cambio previo, desde nuestra macro, del estilo de referencia empleado (A1 o F1C1 / R1C1).
Abrimos nuestra ventana de código de nuestro módulo estándar y añadimos el siguiente código:
Sub Convirtiendo2() Dim TxtFormula As String Dim originalReferenceStyle 'Para aplicar un estilo u otro de referencia... 'Application.ReferenceStyle = xlA1 'xlR1C1 'xlA1 'guardamos el estilo de referencia definido (A1 o R1C1) EstiloReferencia = Application.ReferenceStyle TxtFormula = "=SUM(R2C2:R6C4)" MsgBox Application.ConvertFormula( _ Formula:=TxtFormula, _ fromReferenceStyle:=xlR1C1, _ toReferenceStyle:=xlA1, _ ToAbsolute:=xlRelative) 'retornarmos el estilo predefinido Application.ReferenceStyle = EstiloReferencia End Sub
Con este ejemplo vemos como empleamos el cambio de estilo:
Application.ReferenceStyle = xlA1
o con
Application.ReferenceStyle = xlR1C1
o como recuperamos el existente asociándolo a una variable:
EstiloReferencia = Application.ReferenceStyle
En el ejemplo pasamos una fórmula escrita en forma R1C1 y modo absoluto:
"=SUM(R2C2:R6C4)"
a estilo A1 en modo relativo!.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.