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.