Uso di altre caratteristiche per identificare i tipi di dati collegati

I tipi di dati collegati sono stati rilasciati inExcel per Office 365 nel 2018 giugno e, di conseguenza, altre caratteristiche potrebbero non essere in grado di identificarle. Questo può essere particolarmente vero se vuoi usare altre caratteristiche per identificare in modo condizionale se una cella contiene o meno un tipo di dati collegato. In questo articolo vengono illustrate alcune soluzioni alternative che è possibile usare per identificare i tipi di dati collegati nelle celle.

Formule

È sempre possibile scrivere formule che fanno riferimento ai tipi di dati. Se invece si vuole estrarre il testo di una cella con un tipo di dati collegato tramite la funzione testo, si otterrà un #VALUE. .

Una soluzione alternativa consiste nell'usare la funzione valorecampo e specificare il campo Name per l'argomento FIELD_NAME . Nell'esempio seguente, se la cella a1 conteneva un tipo di dati azionari, la formula restituirebbe il nome del titolo.

= VALORECAMPO (a1, "nome")

Tuttavia, se la cella a1 non contiene un tipo di dati collegato, la funzione VALORECAMPO restituirà un #FIELD! Error. Se vuoi valutare se una cella contiene o meno un tipo di dati collegato, puoi usare la formula seguente, che usa la funzione di errore per verificare se la funzione VALORECAMPO restituirà un errore.

= IF (errore (VALORECAMPO (a2, "nome")), "questa cella non ha un tipo di dati collegato", "questa cella ha un tipo di dati collegato")

Se la formula restituisce un errore, verrà restituito il testo "questa cella non ha un tipo di dati collegato", in caso contrario restituirà "la cella ha un tipo di dati collegato".

Se si vuole semplicemente eliminare la #FIELD. errore, è possibile usare:

= Se. errore (VALORECAMPO (a1, "nome"), "")

In cui verrà restituita una cella vuota se si verifica un errore.

Formattazione condizionale

È possibile formattare in modo condizionale una cella in base alla presenza o meno di un tipo di dati collegato. Per prima cosa selezionare le celle che richiedono la formattazione condizionale e quindi passare a Home > la formattazione condizionale > nuova regola > usare una formula. .. Per la formula, è possibile usare le operazioni seguenti:

= NOT (errore (VALORECAMPO (a1, "Name")))

Dove la cella a1 è la cella superiore nell'intervallo che si vuole valutare. Applicare quindi il formato desiderato.

In questo esempio, se la cella a1 contiene un nome di campo valido per "nome", la formula restituirà TRUE e verrà applicata la formattazione. Se la cella a1 non contiene un tipo di dati collegato, la formula restituisce FALSE e non verrà applicata alcuna formattazione. È possibile rimuovere il non se si desidera evidenziare le celle che non contengono tipi di dati collegati validi.

VBA

Esistono diversi metodi VBA (Visual Basic, Applications Edition) che è possibile usare per identificare se una cella o un intervallo contiene tipi di dati collegati. Questa prima procedura usa la Proprietà HasRichDataType

Entrambe le procedure richiederanno di selezionare un intervallo di celle da valutare, quindi restituire una finestra di messaggio con i risultati.

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

La procedura seguente usa la Proprietà 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

Questo frammento di codice finale è una funzione definita dall'utente (UDF) e la fai riferimento come qualsiasi altra formula di Excel. Basta immettere =fn_IsLinkedDataType (a1), dove a1 è la cella da valutare.

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

Per usare uno di questi esempi, premere ALT + F11 per aprire Visual Basic Editor (VBE), quindi fare clic su Inserisci> moduloe incollare il codice nella nuova finestra visualizzata a destra. Al termine, è possibile usare ALT + Q per uscire di nuovo in Excel. Per eseguire uno dei primi due esempi, passare alla scheda sviluppo> codice> macro> selezionare la macro da eseguire nell'elenco, quindi selezionare Esegui.

Servono altre informazioni?

È sempre possibile rivolgersi a un esperto nella Tech Community di Excel, ottenere supporto nella community Microsoft o suggerire una nuova caratteristica o un miglioramento in Excel UserVoice.

Amplia le tue competenze su Office
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa al programma Office Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×