Applies ToExcel dla Microsoft 365 Excel dla sieci web

Typy połączonych danych opublikowano po raz Excel dla Microsoft 365 czerwca 2018 r. i w związku z tym inne funkcje mogą nie być w stanie ich zidentyfikować. Może to być szczególnie przydatne, gdy chcesz użyć innych funkcji w celu warunkowego określenia, czy komórka zawiera połączony typ danych. W tym artykule wyjaśniono niektóre obejścia, które można stosować do identyfikowania typów połączonych danych w komórkach.

Uwaga: Typy połączonych danych są dostępne tylko dla klientów z wieloma dzierżawami na całym świecie (standardowych Microsoft 365 klientów).

Formuły

Zawsze możesz pisać formuły odwołujące się do typów danych. Jeśli jednak chcesz wyodrębnić tekst komórki z połączonym typem danych przy użyciu funkcji TEKST, otrzymasz #VALUE! .

Obejściem tego problemu jest użycie funkcji POLE.WARTOŚĆ i określenie pola Name(Nazwa) field_name argumentu. W poniższym przykładzie, jeśli komórka A1 zawierała typ danych akcji, formuła zwróci nazwę akcji.

=POLE.WARTOŚĆ(A1;"Nazwa")

Jeśli jednak komórka A1 nie zawiera połączonego typu danych, funkcja POLE.WARTOŚĆ zwróci błąd #FIELD!. Jeśli chcesz sprawdzić, czy komórka zawiera połączony typ danych, możesz użyć następującej formuły, która korzysta z funkcji CZY.BŁĄD w celu przetestowania, czy funkcja POLE.WARTOŚĆ zwróci błąd.

=JEŻELI(CZY.BŁ(POLE.WARTOŚĆ(A2;"Nazwa"));"Ta komórka nie ma połączonego typu danych","Ta komórka ma połączony typ danych")

Jeśli formuła zwróci błąd, zwróci tekst "Ta komórka nie ma połączonego typu danych", w przeciwnym razie zwróci tekst "Ta komórka ma połączony typ danych".

Jeśli chcesz po prostu pominąć #FIELD! można użyć:

=JEŻELI.WARTOŚĆ(POLE.WARTOŚĆ(A1;"Nazwa")"")

Co spowoduje zwrócenie pustej komórki w przypadku wystąpienia błędu.

Formatowanie warunkowe

Komórkę można formatować warunkowo w zależności od tego, czy ma ona połączony typ danych. Najpierw zaznacz komórki, które wymagają formatowania warunkowego, a następnie przejdź do strony Narzędzia > Formatowanie warunkowe > Nowa reguła > Użyj formuły... W formule można użyć następujących formuł:

=NIE(CZY.BŁ(POLE.WARTOŚĆ(A1;"Nazwa")))

Komórka A1 to górna komórka w zakresie, który ma zostać oszacowany. Następnie zastosuj format, który chcesz zastosować.

W tym przykładzie, jeśli komórka A1 zawiera prawidłową nazwę pola "Nazwa", formuła zwróci wartość PRAWDA i zostanie zastosowane formatowanie. Jeśli komórka A1 nie zawiera połączonego typu danych, formuła zwraca wartość FAŁSZ i nie zostanie zastosowane żadne formatowanie. Możesz usunąć notę NOT, jeśli chcesz wyróżnić komórki, które nie zawierają prawidłowych połączonych typów danych.

VBA

Istnieje kilka metod VBA (Visual Basic for Applications) w celu ustalenia, czy komórka lub zakres zawiera połączone typy danych. W tej pierwszej procedurze użyto właściwości HasRichDataType. 

W obu tych procedurach zostanie wyświetlony monit o wybranie zakresu komórek do oceny, a następnie zwrócenie okna komunikatu z wynikami.

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

W następnej procedurze użyto właściwości 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

Ten końcowy fragment kodu to funkcja zdefiniowana przez użytkownika (UDF) i odwołanie do niego jest podobne jak każda Excel formuła. Wystarczy wprowadzić =fn_IsLinkedDataType(A1), gdzie A1 jest komórką, którą chcesz oszacować.

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

Aby użyć dowolnego z tych przykładów, naciśnij klawisze Alt+F11 w celu otwarcia Edytora Visual Basic (VBE), a następnie przejdź do polecenia Wstaw moduł> iwklej kod w nowym oknie, które zostanie otwarte po prawej stronie. Możesz użyć klawiszy Alt+Q, aby zamknąć Excel, gdy to zrobisz. Aby uruchomić jeden z dwóch pierwszych przykładów, przejdź do karty Deweloper> Kod > Makra > wybierz z listy makro, które chcesz uruchomić, a następnie wybierz pozycję Uruchom.

Potrzebujesz dodatkowej pomocy?

Zawsze możesz zadać pytanie ekspertowi w społeczności technicznej programu Excel lub uzyskać pomoc techniczną w Społecznościach.

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.