Saltar al contenido

4 barras de datos de diferentes colores en la misma celda


Recommended Posts

publicado

Hola, lo que quiero hacer es esto:

EJEMPLO:
d46be8e51e35856d5c404f92c1c52e79.png

Quiero 4 barras de color en la misma celda que se muevan dependiendo de un valor (por ejemplo si fuera 25 25 25 25 pues toda la barra sería del primer color azul) y que además el número salga en el centro de su color.
Tengo una formula que me separa en la misma celda esos 4 valores así 5 / 10 / 12 / 18 separados por "/", algo así:

262d5755ce43dea68d574d3d1d7a3b89.png
Habría forma de coger esos valores y separarlos en 4 y que haga esa barra de color? Para no tener que usar 4 celdas


He buscado por internet pero no encuentro mas que la típica barra de datos de 1 color y yo necesito que tenga 4 colores distintos aunque tenga que coger los valores de 4 celdas distintas, a ver si alguien con experiencia me puede echar una mano!
Muchas gracias!

 

EDITO: por si no me he explicado bien sería como hacer esto pero que las 4 barras esten juntas, y los 4 colores distintos se van moviendo de izquierda a derecha dependiendo de si su valor es mayor o menor
(dato: el número izquierdo siempre es menor o igual que el de su derecha por eso no se solaparían)

442fd5a4c31a193e090c209682f1816b.png

  • Eric Mateo changed the title to 4 barras de datos de diferentes colores en la misma celda
publicado

Hola.

A mí me dan duda algunos criterios que manifiestas

hace 2 horas, Eric Mateo dijo:

por ejemplo si fuera 25 25 25 25 pues toda la barra sería del primer color azul)

Entiendo que eso suma el 100%

Pero se contrapuntea con este argumento:

hace 2 horas, Eric Mateo dijo:

Tengo una formula que me separa en la misma celda esos 4 valores así 5 / 10 / 12 / 18

Eso no da el 100%

Bajo esa idea, entonces para que pinte toda la barra de azul o el color que se guste, considero que tendría que ser 100/0/0/0 porque en el segundo caso si tomamos esos valores con respecto al 100% la suma de esto 5/10/12/18 representa el 45% ¿Qué pasaría con el resto de la celda, con ese 55%? ¿Queda en Blanco? A lo que me refiero es, se tiene que indicar que porcentaje de la celda va para cada color, si cada fracción es un 100% del color pero solo representa un porcentaje del tamaño de la celda también podría hacerse, pero; tendrías que tomar una decisión porque eso no sería posible en el escenario 25/25/25/25 y no lo digo por Excel, sino matemáticamente.

Ahora, para no dejar solo en preguntas y aportar algo, podría participar con algo que; si le dedicas un poco de tiempo podrías adaptarlo a tus necesidades.

Como de forma natural solo puedes combinar dos colores y de forma nativa el condicional tampoco ayuda para lo que deseas, una opción es darle formato con VBA, tendrías que elegir los códigos de colores y luego partirlos verticalmente para que no se difuminen. Para que se vean los números podrías usar CONCATENAR() y ya que usarías VBA la puedes personalizar para que tenga como separador de textos la diagonal "/" y tal vez un contador de espacios para que no queden tan juntos.

Deja ver si puedo hacerte algo con lo que te estoy comentando para que sea más visual.

Saludines.

publicado

No cabe duda que soy un desorden, aquí recomiendo VBA y allá funciones xD ?

Bueno, podrías poner un código como este:

Sub FourColorFill()
Dim rng As Range
Dim c1 As Long, c2 As Long, c3 As Long, c4 As Long
Dim pct1 As Double, pct2 As Double, pct3 As Double, pct4 As Double
Set rng = Range("H1")
c1 = RGB(255, 0, 0)
c2 = RGB(255, 255, 0)
c3 = RGB(0, 255, 0)
c4 = RGB(0, 0, 255)
pct1 = Range("A1").Value / 100
pct2 = Range("B1").Value / 100
pct3 = Range("C1").Value / 100
pct4 = Range("D1").Value / 100
With rng.Interior
    .Pattern = xlPatternLinearGradient
    .Gradient.Degree = 0
    .Gradient.ColorStops.Clear
    .Gradient.ColorStops.Add(0).Color = c1
    .Gradient.ColorStops.Item(1).Color = c1
    .Gradient.ColorStops.Item(1).Position = pct1
    .Gradient.ColorStops.Add(pct1).Color = c2
    .Gradient.ColorStops.Item(2).Color = c2
    .Gradient.ColorStops.Item(2).Position = pct1 + pct2
    .Gradient.ColorStops.Add(pct1 + pct2).Color = c3
    .Gradient.ColorStops.Item(3).Color = c3
    .Gradient.ColorStops.Item(3).Position = pct1 + pct2 + pct3
    .Gradient.ColorStops.Add(pct1 + pct2 + pct3).Color = c4
    .Gradient.ColorStops.Item(4).Color = c4
    .Gradient.ColorStops.Item(4).Position = 1
    .Gradient.ColorStops.Add(1).Color = c4
End With
End Sub

En este ejemplo el Set rng será una celda específica si quieres que sea una selección cámbialo:

Set rng = Range("H1")


Set rng = Selection

Los valores para el fragmento del color lo hago suponiendo que estén en A1 B1 C1 D1

Nota: Aquí toman relevancia las preguntas hechas con anterioridad.

publicado

Y para el texto puedes personalizar concatenar:

Function ConcatenarConSeparador(celdas As Range, separador As String, ajuste As Integer) As String
    Dim celda As Range
    Dim resultado As String
    Dim longitudTotal As Double
    Dim longitudSeparador As Double
    
    longitudSeparador = Len(separador)
    
    For Each celda In celdas
        If celda.Value <> "" Then
            resultado = resultado & celda.Value & separador
            longitudTotal = longitudTotal + Len(celda.Value) + longitudSeparador
        End If
    Next celda
    
    If Len(resultado) > 0 Then
        resultado = Left(resultado, Len(resultado) - longitudSeparador)
        Dim longitudEspacio As Double
        longitudEspacio = (ajuste * longitudSeparador) / 2
        Dim cantidadEspacios As Integer
        cantidadEspacios = Round((ajuste * longitudTotal) / longitudEspacio)
        Dim espacio As String
        espacio = String(cantidadEspacios, " ")
        resultado = Replace(resultado, separador, espacio & separador)
    End If
    
    ConcatenarConSeparador = resultado
End Function

Sería algo así:

=ConcatenarConSeparador(A1:D1,"/",5)

El rango donde estén los valores, el separador y el espacio entre textos.

publicado
hace 3 horas, Eric Mateo dijo:

EDITO: por si no me he explicado bien sería como hacer esto pero que las 4 barras esten juntas, y los 4 colores distintos se van moviendo de izquierda a derecha dependiendo de si su valor es mayor o menor
(dato: el número izquierdo siempre es menor o igual que el de su derecha por eso no se solaparían)

442fd5a4c31a193e090c209682f1816b.png

Exacto, por ahí iba mi pregunta, esos colores forman parte del 100%. Entonces sí debes decidir cómo se acomodan.

publicado

Buenas, primero gracias por responder, ahora probaré lo que me dices pero con lo del tema de que suma el 100%, no son porcentajes si no valores siendo el último el máximo:
Para que se entienda bien los 4 valores van sobre REGISTROS (no pero parecido) y sería algo así:  ÚTILES | VERIFICADOS | EXITOSOS | TOTALES
Siendo TOTALES el máximo (que en el ejemplo de la foto el máximo eran 18 registros totales)

publicado
hace 3 horas, Eric Mateo dijo:

Quiero 4 barras de color en la misma celda

¿Porque en la misma celda? cual es la enorme razón para hacerlo y/o buscarlo así 

 

publicado

Da igual, pensaba que era más fácil pero viendo todo lo que hay que liar no me vale la pena, igualmente muchísimas gracias a Israel pero esa pedazo de respuesta!

Al final lo he hecho por separado y ahora tengo otro pequeño problema que haré otro post sobre él :)
 

 

publicado
hace 9 horas, Eric Mateo dijo:

Da igual, pensaba que era más fácil pero viendo todo lo que hay que liar no me vale la pena

Entiendo, pero fue divertido intentarlo. (Además se ve medio feo, no ?)

¡Hasta la próxima!

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.