Excel: Mostrar una imagen y condición SI

JB_A Mensajes publicados 307 Estado Miembro -  
 cjard1 -
Hola,

Tengo una fórmula del tipo: SI(F40=1;"Sí";SI(F40=2;"No";SI(F40=0;"";)))

y en lugar de mostrar Sí o No, me gustaría mostrar una imagen diferente dependiendo del valor de F40.

¿Tienes alguna idea de la sintaxis / fórmula a utilizar?

Gracias de antemano por tu respuesta
Configuración: Excel 2000

3 respuestas

  1. wilfried_42 Mensajes publicados 912 Estado Colaborador 245
     
    Hola J_BA, Raymond

    Esta fórmula debería funcionar:
    =Si(A1="SÍ";Imagen("MiArchivo.jpg";"MiRuta");imagen(""))

    el segundo criterio es opcional, si las imágenes están en el mismo directorio que el libro

    Pero antes: (te estoy engañando raymond, no te preocupes, la función de visualización de imagen no existe en Excel)
    vas a VBA: Click derecho en el nombre de la pestaña / Ver el código
    cambias de ventana y llegas a VBA
    Menú Inserción / Módulo
    y haces un copiar y pegar de las líneas que aparecen a continuación
    Function Imagen(img_nom As Variant, Optional ruta As String = "") As String ' Declaración de variables Dim ref As Range, sh As Shape, bandera As Boolean ' ref: la celda que provoca la función ' sh: las formas ' bandera: bandera que define si la forma fue encontrada Application.Volatile ' define una función que se recalcula automáticamente ' prueba el tipo de variable ya sea una celda o un valor alfanumérico Select Case TypeName(img_nom) Case "Range" ' es una referencia celda Imagen = img_nom.Value Case "String" ' es un valor alfanumérico Imagen = img_nom Case Else ' es un error Imagen = "#ERROR" Exit Function End Select ' la ruta es un parámetro opcional, si se omite, el valor es la ruta del libro If ruta = "" Then ruta = ThisWorkbook.Path ' la ruta no necesariamente termina con \, la añado If Right(ruta, 1) <> "\" Then ruta = ruta & "\" Set ref = Application.Caller ' afectando a ref de la celda que lanza la función If ref.MergeCells = True Then Set ref = Range(ref.MergeArea.Address) bandera = False ' inicialización de la bandera For Each sh In ref.Worksheet.Shapes ' reviso todas las formas ' pruebo su nombre construido más abajo para saber si es la forma correcta If "Img-" & ref.Address = Left(sh.Name, Len(ref.Address) + 4) Then bandera = True: Exit For Next If bandera = True Then ' es la forma correcta ' ahora pruebo si es la misma que la de la fórmula para no repetir el tratamiento ' El ahorro de tiempo no es despreciable If "Img-" & ref.Address & "-" & Imagen = sh.Name Then GoTo fin ' igualdad perfecta, salgo End If On Error Resume Next ' control de error, si la forma no existe aún, la siguiente instrucción provoca un error sh.Delete ' destruyo la forma If Imagen = "" Then Exit Function ' el valor es "" entonces no hay forma que afectar ' inserto la forma, con la imagen ajustándole los tamaños necesarios para la celda Set sh = ref.Worksheet.Shapes.AddPicture(ruta & Imagen, True, True, ref.Left, ref.Top, ref.Width, ref.Height) sh.Name = "Img-" & ref.Address & "-" & Imagen ' defino su nombre para encontrarla más tarde fin: Imagen = "Img" & ref.Address ' asigno un nombre para el resultado End Function

    La función adapta el tamaño de la imagen al tamaño de la celda, teniendo en cuenta la fusión de celdas

    Atentamente
    Wilfried

    pd: no olviden poner su hilo en resuelto cuando obtengan lo que buscan. Gracias
    23
    1. Pictave
       
      ¡Entonces, sombrero al artista! Muchas gracias, es formidable el conocimiento de algunos.
      Bravo y gracias de nuevo.
      0
    2. cjard1
       
      Hola,
      Genial el consejo, me funciona bien a mi nivel, pero una vez que la imagen aparece no se quita si el valor de la celda ya no corresponde, ¿hay alguna manera de quitarla si cambia el valor en la celda?
      0