Como puedo cambiar el color de texto de los ultimas dos dígitos de una celda, según su valor ?

Quería saber como puedo cambiar el color de texto de los ultimas dos dígitos de una celda según su valor . Por ejemplo el valor de esa celda es 300-15 y quiero que cuando acabe en 15 esos últimos dos dígitos me aparezcan en otro color y en negrita, 300-15

Gracias por adelantado

2 Respuestas

Respuesta
2

En el video N° 56 de mi canal encontrarás el tema: Obtener parte del contenido de una celda para formatear.

Desde allí mismo encontrarás los enlaces para descargar el libro de ejemplo.

En estos ejemplos se recorre la columna donde se encuentran los datos a formatear.

Este proceso se puede realizar de varias maneras. Como no mencionas cuándo lo harás, estas son algunas ideas:

1 - Recorriendo la columna de datos a formatear (ejemplos en el video)

2 - Cuando rellenas una celda (Evento Worksheet_Change: indicar rango de acción)

3 - Cuando seleccionas alguna celda ya rellena (Evento: Worksheet_SelectionChange: indicar rango de acción).

Te dejo un ejemplo para la 3ra situación: al seleccionar cualquier celda evalúa su contenido (recomendable acotar un rango).

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Mid(Target.Value, Len(Target) - 2, 1) = "-" And Right(Target.Value, 2) = 15 Then
    'obtener la ubicación del guión
    ubica = Len(Target.Value) - 2
    'formatear a partir del guión
     With Target.Characters(ubica, 3).Font
        .FontStyle = "Negrita"
        .ColorIndex = 3         'opcional: cambiar de color. Aquí en rojo
    End With
End If
End Sub

Entra al Editor de macros, selecciona con doble clic el objeto HOJA donde tengas este control y allí pega el código.

Sdos. No olvides comentar si necesitas alguna otra aclaración, o marcar una valoración para dar por cerrada la consulta si el tema queda resuelto.

Ahora ya podrás decidir entre las 3 opciones. Como verás, siempre es conveniente aclarar todos los detalles posibles para recibir la respuesta que mejor se adapte a tu situación.

1 - Recorriendo la columna de datos que quieras formatear (ejemplos en mi video N° 56)

2 - Cuando selecciones alguna celda que ya esté rellena (Evento: Worksheet_SelectionChange) con la macro que te pasé en respuesta anterior.

3 - A medida que escribas o modifiques alguna celda (Evento Worksheet_Change). Con la macro que acaba de aportar Dante.

Muchísimas gracias por tu tiempo y dedicación , este código no me funciona pues me cambia todo el formato del texto de la celda y luego me sigue escribiendo todos los siguientes datos que introduzco en rojo y negrita. Gracias

Respondiendo a tu consulta: '.. como puedo cambiar el color de texto de los ultimas dos dígitos de una celda...'

Tanto el código que te dejé en esta respuesta con la imagen, como el que te pasó Dante a continuación, responden a ese pedido. Si es 15 se dará formato negrita y algún color (opcional).

Ahora, si luego vas a seguir escribiendo en la celda, obviamente ya no serán aplicables esos códigos. Quizás entonces necesites algo así, donde se debiera buscar en el contenido de la celda el texto -15 en lugar de esas marcas.

Ese código lo desarrollé en el video que te mencioné (N° 56), recorriendo una col de datos. Podrás descargar el libro desde aquí.

Si necesitas ayuda para adaptarlo a tu modelo, necesitaré que aclares:
- La ubicación de esos textos (1 sola col, en cualquier lugar de la hoja, etc)

- Y cuándo debe aplicarse este formato.

Sdos!

Respuesta
2

Visita:

Cursos de Excel y Macros - YouTube

----

Pon el siguiente código en los eventos de tu hoja.

Cuando captures el número en la columna "B", si termina en 15, entonces poner el 15 en negrita y en color azul.

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .Count > 1 Then Exit Sub
    If .Column = 2 Then                 'columna B
      If Right(.Value, 2) = "15" Then   'si acaba en 15
        With .Characters(Len(.Value) - 1, 2).Font
          .Bold = True
          .Color = vbBlue
        End With
      End If
    End If
  End With
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro
  5. Regresa a la hoja, empieza a capturar en la columna B.

Recomendación del día:

Metodo find vba excel. Curso de macros. - YouTube

Sal u dos Dante Amor

¡Gracias!  era justo lo que quería, muchísimas gracias 

Buenos días, lo primero muchísimas gracias

Obtengo datos de dos columnas con la funcionbuscarv y quiero que cuando me devuelva un dato que acabe en "-01" y hasta "-30" estos me aparezcan en color azul (el símbolo y esos dos últimos números). Por ejemplo 325-17

Gracias por anticipado

Cursos de Excel Recomendados:

Curso de excel. Formato condicional dinamico - YouTube

Curso de excel. Consejos y trucos de excel para mejorar la presentación de tus datos. - YouTube


Prueba así:

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .Count > 1 Then Exit Sub
    If .Column <> 2 Then Exit Sub               'columna B
    If Left(Right(.Value, 3), 1) <> "-" Then Exit Sub
    Select Case Val(Right(.Value, 2))
      Case 1 To 30
        With .Characters(Len(.Value) - 1, 2).Font
          .Bold = True
          .Color = vbBlue
        End With
    End Select
  End With
End Sub

Cursos de Macros:

Curso de macros. Consejos para empezar a programar. - YouTube

Curso de macros. Declarar variables en vba excel. - YouTube

Sal u dos Dante Amor

Buenas tardes, gracias por tu atención,

No me funciona o hago algo mal, en la columna B cuando lo escribo si que sale el formato que busco, pero si tengo una fórmula en la columna B, me devuelve el valor buscado pero no me sale el formato que quiero,

Y quería que saliera en toda la hoja

Muchísimas gracias

No funciona con los resultados de una fórmula. De hecho ni con macro ni con otra cosa podría funcionar con el resultado de una fórmula.

Solamente funciona con el valor de la celda.

Muchísimas gracias

Desde mi ignorancia, si pegase todos los valores de esa hoja en otra hoja , ??

Gracias 

En la otra hoja funcionaría con los valores de las celdas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas