Cree títulos de gráficos dinámicos con formato personalizado

Índice
  1. Crear manualmente un título de gráfico
  2. Texto de gráfico dinámico
    1. Concatenar cadenas con el símbolo “”.
    2. función TEXTO
    3. Vincular el título del gráfico a una celda
  3. Título de gráfico dinámico con formato personalizado
    1. Crear una función definida por el usuario
    2. El código VBA
    3. Uso de la función definida por el usuario
  4. Notas

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:

Ejemplos Buenos Títulos de gráficos malosEl 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á).

Títulos de gráficos: edición manual del texto

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.

Cinta de inicio para editar títulos de gráficos

Una vez terminado, el título del gráfico podría verse así:

Títulos de gráficos: edición manual del texto después

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.

Enlace dinámico: títulos de gráficos

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).

Desarrollador Visual Basic

Se abrirá la ventana del Editor de Visual Basic, haga clic en Insertar – Módulo.

Crear módulo en VBE

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.

Cambiar título del gráfico Función personalizada

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.

UDF de título de gráfico dinámico en acción

La celda J17 contiene la siguiente fórmula:

=FormatoTítulodelgráfico("Gráfico 3",B22,I4,I5:I13)

Ejemplo de título de gráfico de formato

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

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar la experiencia del usuario y garantizar un funcionamiento eficiente. Al utilizar nuestro sitio web, aceptas todas las cookies de acuerdo con nuestra política de cookies. Leer mas...