Cree títulos de gráficos dinámicos con formato personalizado
Los títulos son un aspecto que se pasa por alto en muchos gráficos. Un título insulso pierde tanta información valiosa que podría usarse para mejorar la comprensión del informe por parte de los usuarios.
A continuación se muestra un ejemplo de títulos de gráficos buenos y malos:
El título del segundo gráfico agrega información adicional y proporciona una experiencia mucho más rica para el lector.
Al crear gráficos estáticos, este tipo de información no supone un problema, pero en un mundo de gráficos dinámicos, resulta muy complicado. Esta publicación considera estos problemas:
- Crear manualmente un título de gráfico con formato personalizado
- Texto de gráfico dinámico
- Título de gráfico dinámico con formato personalizado
Descargue el archivo de ejemplo: únase al programa Insiders gratuito y obtenga acceso al archivo de ejemplo utilizado para esta publicación.
Nombre de archivo: 0171 Encabezado de gráfico dinámico con colores.xlsm
Tener acceso
Crear manualmente un título de gráfico
Al crear un gráfico, el título se establece automáticamente como el nombre de la serie o el texto "Título del gráfico". Para cambiar el título por algo más significativo, haga clic en el título del gráfico (el título se resaltará).
Escriba el texto que desea que se muestre directamente en el Título del gráfico. Resalte secciones del texto y aplique formato de texto estándar desde la cinta Inicio.
Una vez terminado, el título del gráfico podría verse así:
Texto de gráfico dinámico
Si el gráfico es dinámico, el texto dentro del Título del gráfico también debe ser dinámico; el texto que necesita cambiar para reflejar los datos presentados.
La dificultad es crear un texto dinámico que tenga sentido en todas las circunstancias. Para ello utilizaremos tres funciones de Excel:
- Concatenar cadenas con el símbolo “”
- función TEXTO
- Vincular el título a un valor de celda
Concatenar cadenas con el símbolo “”.
Dentro de Excel, podemos combinar texto en una sola celda con el uso del símbolo (ampersand). Aquí hay un ejemplo básico.
="Nuestra empresa controla " A2 "% de la cuota de mercado."
Suponiendo que el valor numérico en la celda A2 es 29, el resultado de la fórmula se calculará como:
Nuestra Empresa controla el 29% de la cuota de mercado.
función TEXTO
La función TEXTO en Excel se usa para convertir números en texto usando el formato de número personalizado. Siguiendo con el último ejemplo, si la celda A2 tuviera un valor de 29,578362, el resultado sería:
Nuestra Empresa controla el 29,578362% de la cuota de mercado.
Probablemente sea demasiada precisión, ¿verdad? Aquí es donde entra en juego la función Texto.
="Nuestra empresa controla el " TEXT(A2,"0.0") "% de la cuota de mercado."
La función de texto convierte 29,578362 en un número con un decimal, 29,6. La función TEXTO puede usar una variedad de formatos numéricos; desafortunadamente, eso está fuera del alcance de esta publicación, pero vale la pena investigarlo.
Vincular el título del gráfico a una celda
Una vez que tenemos una celda que contiene el texto que queremos mostrar, sólo necesitamos vincular el título del gráfico a esa celda.
Haga clic en el encabezado del gráfico, en la barra de fórmulas escriba un símbolo “=" (igual) seguido de una referencia a la celda que contiene el texto.
Con estas características combinadas, podemos crear un encabezado de texto dinámico y enriquecido.
Título de gráfico dinámico con formato personalizado
¿Cómo podemos aplicar el mismo formato personalizado al título dinámico que al título estático? Aquí es donde las cosas empiezan a ponerse difíciles.
Usaremos una fórmula en la hoja de trabajo. Pero no cualquier fórmula, una fórmula especial que construiremos nosotros mismos con VBA. Esto se denomina función definida por el usuario (o UDF para abreviar). Normalmente, las UDF se utilizan para calcular el valor de una celda, pero también pueden controlar ciertos objetos, como los títulos de los gráficos.
Para obtener orientación adicional sobre la creación y el uso de UDF, consulte la publicación de la semana pasada, que explica cómo configurar los valores mínimos y máximos del eje del gráfico en función de una celda .
Crear una función definida por el usuario
Para crear una UDF, haga clic en Desarrollador – Visual Basic (o el acceso directo ALT + F11).
Se abrirá la ventana del Editor de Visual Basic, haga clic en Insertar – Módulo.
Agregue el código al módulo como se muestra a continuación. El código de la UDF debe estar dentro de un módulo estándar para funcionar correctamente.
Hay muchos comentarios insertados en el código VBA para ayudarle a comprender cómo funciona.
El código VBA
Option ExplicitFunction FormatChartTitle(chartName As String, titleText As String, _ defaultTextStyle As Range, powerWords As Range)'Recalcular la fórmula cada vezApplication.Volatile'Crear una variable para hacer referencia al gráficoDim cht As Chart'Crear una variable para hacer referencia a cada celda en el powerWords rangeDim c As Range'Crea variables para recorrer el textoDim startPosition As IntegerDim chrPosition As Integer'Establece la variable cht igual al gráfico nombrado en la misma hoja que la fórmulaSet cht = Application.Caller.Parent.ChartObjects(chartName). Chart'Activar el título del gráficocht.HasTitle = True'Cambiar el título del gráfico al texto en el cellcht.ChartTitle.text = titleText'Restablecer el texto del gráfico para que sea el mismo que el predeterminadoTextStyleWith cht.ChartTitle.Format.TextFrame2. TextRange.Characters.Font .Fill.ForeColor.RGB = defaultTextStyle.Font.Color .Bold = defaultTextStyle.Font.Bold .Italic = defaultTextStyle.Font.Italic .Name = defaultTextStyle.Font.Name .Size = defaultTextStyle.Font.SizeEnd With 'Recorre cada celda en el rango de powerWords para cada c en powerWords.Cells 'Comienza a buscar palabras coincidentes en la primera posición startPosition = 1 'Continúa el bucle hasta que no se puedan encontrar más coincidencias Do While InStr(startPosition, cht.ChartTitle.Characters.text , _ CStr(c.Value), vbTextCompare) 0 'Busca el texto en el rango de powerWords chrPosition = InStr(startPosition, cht.ChartTitle.Characters.text, _ CStr(c.Value), vbTextCompare) 'Si hay una coincidencia encontrado, formatee ese texto Si chrPosition 0 Entonces 'Formatee las secciones del título del gráfico que coinciden con el' rango de powerWord Con cht.ChartTitle.Format.TextFrame2.TextRange. _ Caracteres(chrPosition, Len(c)).Font .Fill.ForeColor.RGB = c.Font.Color .Bold = c.Font.Bold .Italic = c.Font.Italic .Name = c.Font.Name .Tamaño = c.Font.Size End With End If startPosition = chrPosition + 1 LoopNext c'Devuelve el resultado de la función chartNameFormatChartTitle = chartName " - Formatted"End Function
Eso es todo lo que necesitamos hacer para crear la UDF. Está listo para ser usado.
Uso de la función definida por el usuario
La UDF utiliza la siguiente sintaxis:
=FormatoTítulo del gráfico(nombre del gráfico, texto del título, estilo de texto predeterminado, powerWords)
- chartName = el nombre del gráfico como una cadena de texto o una referencia de celda. Si no está seguro de cuál es su nombre, haga clic en el gráfico y mire el NameBox (el cuadro a la izquierda de la barra de fórmulas).
- titleText = puede ser una referencia de celda a una cadena de texto o la cadena de texto misma.
- defaultTextStyle = referencia a una celda que contiene cualquier texto formateado en el mismo estilo que debería tener el título del gráfico predeterminado.
- powerWords = referencia a un rango que contiene una lista de palabras formateadas de la misma manera que deberían estar formateadas en el título del gráfico
Una UDF debe devolver un valor en la celda en la que se utiliza. Como utilizamos la fórmula para controlar un gráfico, el resultado de la fórmula no sirve para nada. En nuestro código, está configurado para devolver el nombre del gráfico a la celda.
La captura de pantalla muestra la fórmula que se utiliza.
La celda J17 contiene la siguiente fórmula:
=FormatoTítulodelgráfico("Gráfico 3",B22,I4,I5:I13)
Notas
El encabezado dinámico con formato personalizado es razonablemente experimental. No lo he probado exhaustivamente, así que avíseme si tiene algún problema al utilizar este método.
La lista de powerWords no necesita ser una lista estática, también puede ser el resultado de fórmulas. En el archivo de ejemplo, la celda I12 es una fórmula, lo que garantiza que el porcentaje de participación de mercado tenga el formato correcto dentro del encabezado dinámico.
El orden de la lista de powerWords es importante. La última instancia de cada cadena de texto será el estilo de formato aplicado. Si las palabras "aumento" y "en" son palabras poderosas en ese orden, el "en" al comienzo de "aumento" tendrá un formato diferente al de "postura" de "instancia". Sin embargo, si las palabras están en el orden opuesto, “aumentar” será el formato final.
La UDF anterior aplica la configuración de color, tamaño, nombre de fuente, negrita y cursiva. Si desea agregar otro formato, será necesario mejorar la UDF.
Deja una respuesta