Gráfico que tome los colores de los datos
Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85854
Fecha de impresión: 23/Abril/2024 a las 21:33
Tema: Gráfico que tome los colores de los datos
Publicado por: lbauluz
Asunto: Gráfico que tome los colores de los datos
Fecha de publicación: 04/Marzo/2021 a las 16:36
Buenas tardes a todos.
Estoy intentando hacer un gráfico (a ser posible lineal) donde cambie el color de la línea (una única línea) en función del color de los datos en la hoja Excel.
Es decir, si tengo un gráfico que me enseñe los valores desde C1 hasta C100
Normalmente saldría una línea de un solo color mostrando la gráfica correspondiente.
Ahora bien, si yo tengo los datos de C1 a C50 en rojo, de C51 a c 100 en verde, ¿es posible sacar un gráfico lineal donde la primera parte de la línea sea roja y la segunda verde?
En este ejemplo he puesto dos colores, pero en la vida real podrían ser N colores, incluso repetirse en distintos "segmentos" del gráfico.
Dado que es un excel mío, puedo añadir filas o poner controles sin problema, pero no se me ocurre como hacerlo para conseguir este efecto.
Cualquier idea, por descabellada que parezca, será muy bienvenida.
Luis
------------- El Búho es un pajarraco
|
Respuestas:
Publicado por: Mihura
Fecha de publicación: 04/Marzo/2021 a las 16:50
No hagas una línea, haz 100 y cada 'trozo' lleva el color en función de la celda origen.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: lbauluz
Fecha de publicación: 04/Marzo/2021 a las 17:04
Gracias Muuuu
Esa es una de las cosas que intento, pero ¿como decirle que tome ese color?
------------- El Búho es un pajarraco
|
Publicado por: Mihura
Fecha de publicación: 04/Marzo/2021 a las 17:14
Esto lo utilizo desde Access con automatización, tendrás que traducirlo a Excel, pero no creo que te de problemas ... apunte, una línea es un rectángulo muuuuu finito
Public Sub Rectangulo(Optional ByVal Rango As String = "", Optional ByVal DescuentoAlto = 0, Optional ByVal DescuentoIzquierda = 0, Optional ByVal DescuentoDerecha = 0, Optional ByVal ColorLinea = "", Optional ByVal ColorRelleno = "", Optional ByVal GrosorLinea = "") Dim AnchoRect As Long If Rango <> "" Then Me.XRango = Rango Xls.ActiveSheet.Range(Me.XRango).Select 'protegemos el posible valor erroneo de ancho AnchoRect = Xls.Selection.Width - (DescuentoIzquierda + DescuentoDerecha): If AnchoRect < 0 Then AnchoRect = 2 Xls.ActiveSheet.Shapes.AddShape(msoShapeRectangle, Xls.Selection.Left + DescuentoIzquierda, Xls.Selection.Top + DescuentoAlto, AnchoRect, Xls.Selection.Height - (DescuentoAlto * 2)).Select If ColorLinea <> "" Then Xls.Selection.ShapeRange.Line.ForeColor.RGB = ColorLinea If ColorRelleno <> "" Then Xls.Selection.ShapeRange.Fill.ForeColor.RGB = ColorRelleno If GrosorLinea <> "" Then Xls.Selection.ShapeRange.Line.Weight = GrosorLinea End Sub
|
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: AnSanVal
Fecha de publicación: 04/Marzo/2021 a las 21:23
La línea en el gráfico realmente son 99 líneas que unen los 100 puntos.
¿El color en los datos lo tiene la fuente o la celda?
------------- Saludos desde Tenerife.
|
Publicado por: AnSanVal
Fecha de publicación: 04/Marzo/2021 a las 22:24
Hice un ejemplo (con ayuda de Santa grabadora): Fechas en A2:A20 (A1 = Fecha) para el eje horizontal Números en B2:B20 (B1 = datos) El número de filas es indiferente.
Sub colorDeLinea() Dim punto&, p1&, p2&, miColor As Double p1 = 2 p2 = Cells(Rows.Count, 1).End(xlUp).Row - 1 ActiveSheet.ChartObjects("3 Gráfico").Activate For punto = p1 To p2 miColor = Cells(punto, 2).Font.Color With ActiveChart.SeriesCollection(1).Points(punto).Format.Line .ForeColor.RGB = miColor End With Next punto [C1].Select End Sub
Nota: coloreé a mano los números (fuente). Si el color lo tienes por formato condicional, el procedimiento para obtener el color será diferente (emplea la fórmula del propio FC).
------------- Saludos desde Tenerife.
|
Publicado por: lbauluz
Fecha de publicación: 08/Marzo/2021 a las 11:33
Pues no lo consigo, la función de Antonio me casca en "With ActiveChart.SeriesCollection(1)." asi que sigo buscando (en mis ratos libres) una solución.
Y lo de Mihura, lo estoy traduciendo, pero de momento nada tampoco.
En cuanto tenga un par de horas, a ver si lo soluciono
Gracias
Luis
------------- El Búho es un pajarraco
|
Publicado por: Emilio
Fecha de publicación: 08/Marzo/2021 a las 13:01
Buenas. Luis, échale un ojo a https://andypope.info/charts/conditionalline2.htm" rel="nofollow - https://andypope.info/charts/conditionalline2.htm , en esa página hay un puñado de magníficos ejemplos de gráficos Excel.
------------- Saludos a todos desde Huelva
http://www.mvp-access.es/emilio/" rel="nofollow - http://www.mvp-access.es/emilio/
|
Publicado por: Mihura
Fecha de publicación: 08/Marzo/2021 a las 14:48
Don Luis, en una hoja (ThisWorkBook), Copia / pega y ejecuta AA.
Option Explicit
Public Function Rectangulo(XRango As String, Optional ByVal DescuentoAlto = 0, Optional ByVal DescuentoIzquierda = 0, Optional ByVal DescuentoDerecha = 0, Optional ByVal ColorLinea = "", Optional ByVal ColorRelleno = "", Optional ByVal GrosorLinea = "") Dim AnchoRect As Long ActiveSheet.Range(XRango).Select 'protegemos el posible valor erroneo de ancho AnchoRect = Selection.Width - (DescuentoIzquierda + DescuentoDerecha): If AnchoRect < 0 Then AnchoRect = 2 ActiveSheet.Shapes.AddShape(msoShapeRectangle, Selection.Left + DescuentoIzquierda, Selection.Top + DescuentoAlto, AnchoRect, Selection.Height - (DescuentoAlto * 2)).Select If ColorLinea <> "" Then Selection.ShapeRange.Line.ForeColor.RGB = ColorLinea If ColorRelleno <> "" Then Selection.ShapeRange.Fill.ForeColor.RGB = ColorRelleno If GrosorLinea <> "" Then Selection.ShapeRange.Line.Weight = GrosorLinea End Function
Function AA() Rectangulo "A1:G1", ColorLinea:=vbRed, ColorRelleno:=vbGreen End Function
|
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
Publicado por: AnSanVal
Fecha de publicación: 08/Marzo/2021 a las 19:53
Como no comentabas nada, daba por hecho que lo tenias controlado, incluso eliminé el ejemplo.
Acabo de hacer http://www.achinet.mvp-access.es/excel/Ayudas/Graf%C2%B7LuisB.rar" rel="nofollow - este otro .
Si te «atascas» pásame el modelo de tus datos (con datos ficticios) con detalles de lo que te ocurre.
------------- Saludos desde Tenerife.
|
Publicado por: lbauluz
Fecha de publicación: 09/Marzo/2021 a las 08:49
Antonio... quiero decir, Don Antonio.
¡Es usted un genio!
Cinco días devanándome los sesos y al final la solución es "así de simple"
Gracias mil.
Se da por cerrado con el ejemplo de AnSanVal.
Luis
------------- El Búho es un pajarraco
|
Publicado por: Mihura
Fecha de publicación: 09/Marzo/2021 a las 09:02
Si señor, ... mas que Don, es Excmo .
¡Que fácil son las cosas cuándo se sabe hacerlas!
Un saludo.
------------- Jesús Mansilla Castells. Saludos desde Móstoles.
http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones http://www.tecsys.es" rel="nofollow - Tecsys.es
|
|