Usar otras características para identificar tipos de datos vinculados

Los tipos de datos vinculados se publicaron enExcel para Office 365 el 2018 de junio y, por tanto, es posible que otras características no puedan identificarlos. Esto puede ser especialmente cierto si desea usar otras características para determinar condicionalmente si una celda contiene un tipo de datos vinculado o no. En este artículo se explican algunas soluciones alternativas que puede usar para identificar tipos de datos vinculados en las celdas.

Fórmulas

Siempre puede escribir fórmulas que hagan referencia a tipos de datos. Sin embargo, si desea extraer el texto de una celda con un tipo de datos vinculado mediante la función texto, obtendrá una #VALUE. .

Una solución es usar la función FIELDVALUE y especificar el campo nombre del field_name argumento. En el siguiente ejemplo, si la celda a1 contiene un tipo de datos estándar, la fórmula devolverá el nombre de la acción.

= FIELDVALUE (a1, "nombre")

Sin embargo, si la celda a1 no contiene un tipo de datos vinculado, la función FIELDVALUE devolverá un error #FIELD!. Si desea evaluar si una celda contiene o no un tipo de datos vinculado, puede usar la siguiente fórmula, que usa la función ESERROR para comprobar si la función FIELDVALUE devolverá un error.

= Si (EsError (FIELDVALUE (a2, "nombre")), "esta celda no tiene un tipo de datos vinculado", "esta celda tiene un tipo de datos vinculado")

Si la fórmula se evalúa como un error, devolverá el texto "esta celda no tiene un tipo de datos vinculado"; de lo contrario, devolverá "esta celda tiene un tipo de datos vinculado".

Si simplemente deseas suprimir el #FIELD. error, puede usar:

= Si. error (FIELDVALUE (a1; "nombre"), "")

Que devolverá una celda en blanco si se produce un error.

Formato condicional

Puede aplicar formato condicional a una celda basándose en si tiene un tipo de datos vinculado o no. Primero, seleccione las celdas que necesitan el formato condicional y, a continuación, vaya a inicio > formato condicional > nueva regla > usar una fórmula... Para la fórmula, debe usar lo siguiente:

= NOT (ISERROR (FIELDVALUE (a1; "nombre")))

Donde la celda a1 es la celda superior del rango que desea evaluar. A continuación, aplique el formato que desee.

En este ejemplo, si la celda a1 contiene un nombre de campo válido para "nombre", la fórmula devolverá verdadero y se aplicará formato. Si la celda a1 no contiene un tipo de datos vinculado, la fórmula devuelve falso y no se aplicará ningún formato. Puede quitar la no si quiere resaltar las celdas que no contienen tipos de datos vinculados válidos.

VBA

Existen varios métodos de VBA (Visual Basic para aplicaciones) que puede usar para identificar si una celda o un rango contiene tipos de datos vinculados. Este primer procedimiento usa la propiedad HasRichDataType

Ambos procedimientos le pedirán que seleccione un rango de celdas para evaluarlas y, a continuación, devolverán un cuadro de mensaje con los resultados.

Sub IsLinkedDataType()
    Dim c As Range
    Dim rng As Range
    Dim strResults As String
    
    Set rng = Application.InputBox("Select a range to check for linked data types", Type:=8)
    
    For Each c In rng
      '    Check if the HasRichDataType is TRUE or FALSE
        If c.HasRichDataType = True Then
        '   The cell holds a linked data type
            strResults = strResults & c.Text & " - Linked data type" & vbCrLf
        Else
            strResults = strResults & c.Text & " - Not a linked data type" & vbCrLf
        End If
    Next c

    MsgBox "Your range contains the following details" & vbCrLf & vbCrLf & strResults, vbInformation + vbOKOnly, "Results"
    
End Sub

Este procedimiento siguiente usa la propiedad LinkedDataTypeState.

Sub IsLinkedDataTypeState()
    Dim c As Range
    Dim rng As Range
    Dim strResults As String
    
    Set rng = Application.InputBox("Select a range to check for linked data types", Type:=8)
    
    For Each c In rng
   '    Check if the LinkedDataTypeState is 1 (TRUE) or 0 (FALSE)
        If c.LinkedDataTypeState = 1 Then
        '   The cell holds a linked data type
            strResults = strResults & c.Text & " - Linked data type" & vbCrLf
        Else
            strResults = strResults & c.Text & " - Not a linked data type" & vbCrLf
        End If
    Next c
    
   MsgBox "Your range contains the following details" & vbCrLf & vbCrLf & strResults, vbInformation + vbOKOnly, "Results"

End Sub

Este fragmento de código final es una función definida por el usuario (UDF) y se hace referencia a él como cualquier otra fórmula de Excel. Simplemente escriba =fn_IsLinkedDataType (a1), donde a1 es la celda que desea evaluar.

Public Function fn_IsLinkedDataType(c As Range)
'   Function will return TRUE if a referenced cell contains a linked data type
    If c.HasRichDataType = True Then
      fn_IsLinkedDataType = "Linked data type"
    Else
        fn_IsLinkedDataType = "Not a linked data type"
    End If
End Function

Para usar cualquiera de estos ejemplos, presione Alt + F11 para abrir el editor de Visual Basic (VBE), después vaya a Insertar> móduloy pegue el código en la nueva ventana que se abre a la derecha. Puede usar Alt + Q para salir de nuevo a Excel cuando haya terminado. Para ejecutar cualquiera de los dos primeros ejemplos, vaya a la pestaña programador> macros de> de código> seleccione la macro que desea ejecutar de la lista y, a continuación, seleccione Ejecutar.

¿Necesitas más ayuda?

Siempre puede preguntar a un experto en Excel Tech Community, obtener soporte técnico en la Comunidad de respuestas o sugerir una característica nueva o mejora en el UserVoice de Excel.

Ampliar sus conocimientos de Office
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×