Przejdź do głównej zawartości

Identyfikowanie połączonych typów danych przy użyciu innych funkcji

Połączone typy danych zostały wydane wExcel dla usługi Office 365 w czerwcu 2018 i w ten sposób inne funkcje mogą nie być w stanie ich zidentyfikować. Może to być szczególnie ważne, gdy chcesz użyć innych funkcji w celu określenia, czy komórka zawiera połączony typ danych, czy nie. W tym artykule wyjaśniono niektóre obejścia, których można używać do identyfikowania połączonych typów danych w komórkach.

Formuły

Możesz zawsze 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 za pomocą funkcji tekst, otrzymasz #VALUE! .

Obejście polega na użyciu funkcji pole i określeniu pola Name dla argumentu field_name . W poniższym przykładzie, jeśli komórka a1 zawiera typ danych giełdowy, to formuła zwróci nazwę giełdową.

= POLE. Jeżeli (a1; "nazwa")

Jeśli jednak komórka a1 nie zawiera połączonego typu danych, funkcja pole. błąd zwróci #FIELD!. Jeśli chcesz ocenić, czy komórka zawiera połączony typ danych, możesz użyć następującej formuły, która używa funkcji IsError w celu sprawdzenia, czy funkcja pole zwróci błąd.

= Jeżeli (IsError (pole (a2; "nazwa")); "Ta komórka nie ma połączonego typu danych", "Ta komórka ma połączony typ danych")

Jeśli wynikiem formuły jest błąd, zostanie zwrócony tekst "Ta komórka nie ma połączonego typu danych", w przeciwnym razie zwróci komunikat "Ta komórka będzie zawierać połączony typ danych".

Jeśli chcesz tylko pominąć #FIELD! błąd, możesz skorzystać z następujących czynności:

= Jeżeli (pole (a1; "nazwa");

Gdy wystąpi błąd, zwracana jest pusta komórka.

Formatowanie warunkowe

Możesz warunkowo sformatować komórkę na podstawie tego, czy ma ona połączony typ danych. Najpierw zaznacz komórki, które wymagają formatowania warunkowego, a następnie przejdź do strony głównej > formatowanie warunkowe > Nowa reguła > Użyj formuły.. . W przypadku formuły należy użyć następujących opcji:

= NOT (pole (a1; "nazwa")))

Gdzie komórka a1 jest pierwszą komórką zakresu, który ma zostać oceniony. Następnie Zastosuj odpowiedni format.

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

VBA

Istnieje kilka metod języka VBA (Visual Basic for Applications), których można użyć w celu określenia, czy komórka lub zakres zawiera połączone typy danych. W tej pierwszej procedurze jest używana Właściwość HasRichDataType

W obu tych procedurach zostanie wyświetlony monit o wybranie zakresu komórek do oszacowania, 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 tej następnej procedurze jest używana Właściwość 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 urywek kodu jest funkcją zdefiniowaną przez użytkownika (UDF) i jest odwołaniem tak samo jak w przypadku dowolnej innej formuły programu Excel. Po prostu wprowadź =fn_IsLinkedDataType (a1), gdzie a1 to komórka, 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 , aby otworzyć Edytor Visual Basic (VBE), a następnie przejdź do pozycji Wstaw> modulei wklej kod w nowym oknie otwartym po prawej stronie. Możesz użyć klawiszy ALT + Q , aby wyjść z powrotem do programu Excel, gdy skończysz. 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, uzyskać pomoc techniczną w społeczności witryny Answers bądź zasugerować nową funkcję lub ulepszenie w witrynie UserVoice dotyczącej programu Excel.

Rozwijaj umiejętności związane z pakietem Office
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów pakietu Office

Czy te informacje były pomocne?

Dziękujemy za opinię!

Dziękujemy za opinię! Wygląda na to, że połączenie Cię z jednym z naszych agentów pomocy technicznej pakietu Office może być pomocne.

×