Οι συνδεδεμένοι τύποι δεδομένων κυκλοφόρησαν Excel για Microsoft 365 τον Ιούνιο του 2018 και, ως εκ τούτου, άλλες δυνατότητες ενδέχεται να μην μπορούν να τους προσδιορίσουν. Αυτό μπορεί να ισχύει ιδιαίτερα όταν θέλετε να χρησιμοποιήσετε άλλες δυνατότητες για να προσδιορίσετε υπό όρους εάν ένα κελί περιέχει έναν συνδεδεμένο τύπο δεδομένων ή όχι. Αυτό το άρθρο εξηγεί ορισμένες λύσεις που μπορείτε να χρησιμοποιήσετε για να προσδιορίσετε συνδεδεμένους τύπους δεδομένων σε κελιά.
Σημείωση: Οι συνδεδεμένοι τύποι δεδομένων είναι διαθέσιμοι μόνο σε προγράμματα-πελάτες πολλών μισθωτών σε όλο τον κόσμο (τυπικοί Microsoft 365 λογαριασμών).
Τύποι
Μπορείτε πάντα να γράψετε τύπους που αναφέρονται σε τύπους δεδομένων. Ωστόσο, εάν θέλετε να εξαγάγετε το κείμενο ενός κελιού με έναν συνδεδεμένο τύπο δεδομένων χρησιμοποιώντας τη συνάρτηση TEXT, θα λάβετε μια #VALUE! .
Μια λύση είναι να χρησιμοποιήσετε τη συνάρτηση FIELDVALUE και να καθορίσετε το πεδίο "Όνομα"για field_name όρισμα. Στο παρακάτω παράδειγμα, εάν το κελί A1 περιείχε έναν τύπο δεδομένων μετοχών, τότε ο τύπος θα επέστρεφε το όνομα του αποθέματος.
=FIELDVALUE(A1;"Όνομα")
Ωστόσο, εάν το κελί A1 δεν περιέχει συνδεδεμένο τύπο δεδομένων, τότε η συνάρτηση FIELDVALUE θα επιστρέψει ένα σφάλμα #FIELD!. Εάν θέλετε να υπολογίσετε εάν ένα κελί περιέχει ή όχι έναν συνδεδεμένο τύπο δεδομένων, μπορείτε να χρησιμοποιήσετε τον παρακάτω τύπο, ο οποίος χρησιμοποιεί τη συνάρτηση ISERROR για να ελέγξετε εάν η συνάρτηση FIELDVALUE θα επιστρέψει σφάλμα.
=IF(ISERROR(FIELDVALUE(A2;"Όνομα");"Αυτό το κελί δεν έχει συνδεδεμένο τύπο δεδομένων","Αυτό το κελί έχει έναν συνδεδεμένο τύπο δεδομένων")
Εάν ο τύπος υπολογιστεί ως σφάλμα, τότε θα επιστρέψει το κείμενο "Αυτό το κελί δεν έχει συνδεδεμένο τύπο δεδομένων", διαφορετικά, θα επιστρέψει "Αυτό το κελί έχει έναν συνδεδεμένο τύπο δεδομένων".
Εάν θέλετε απλώς να αποκρύψετε το #FIELD! μπορείτε να χρησιμοποιήσετε:
=IFERROR(FIELDVALUE(A1;"Name"),"")
Το οποίο θα επιστρέψει ένα κενό κελί εάν υπάρχει σφάλμα.
Μορφοποίηση υπό όρους
Μπορείτε να μορφοποιήσετε ένα κελί υπό όρους με βάση το εάν έχει ή όχι έναν συνδεδεμένο τύπο δεδομένων. Θα πρέπει πρώτα να επιλέξετε τα κελιά που χρειάζονται τη μορφοποίηση υπό όρους και, στη συνέχεια, να μεταβείτε στην Κεντρική > μορφοποίηση υπό όρους > δημιουργία κανόνα > Χρησιμοποιήστε έναν τύπο... Για τον τύπο, θα χρησιμοποιήσετε τα εξής:
=NOT(ISERROR(FIELDVALUE(A1;"Όνομα")))
Όπου το κελί A1 είναι το επάνω κελί της περιοχής που θέλετε να αξιολογήσετε. Στη συνέχεια, εφαρμόστε τη μορφή που θέλετε.
Σε αυτό το παράδειγμα, εάν το κελί A1 περιέχει ένα έγκυρο όνομα πεδίου για "Όνομα", τότε ο τύπος επιστρέφει TRUE και θα εφαρμοστεί μορφοποίηση. Εάν το κελί A1 δεν περιέχει συνδεδεμένο τύπο δεδομένων, τότε ο τύπος επιστρέφει FALSE και δεν θα εφαρμοστεί μορφοποίηση. Μπορείτε να καταργήσετε το NOT εάν θέλετε να επισημάνετε τυχόν κελιά που δεν περιέχουν έγκυρους συνδεδεμένους τύπους δεδομένων.
VBA
Υπάρχουν διάφορες μέθοδοι VBA (Visual Basic for Applications) που μπορείτε να χρησιμοποιήσετε για να προσδιορίσετε εάν ένα κελί ή μια περιοχή περιέχει συνδεδεμένους τύπους δεδομένων. Αυτή η πρώτη διαδικασία χρησιμοποιεί την ιδιότητα HasRichDataType.
Και οι δύο αυτές διαδικασίες θα σας ζητήσει να επιλέξετε μια περιοχή κελιών για αξιολόγηση και, στη συνέχεια, να επιστρέψετε ένα πλαίσιο μηνύματος με τα αποτελέσματα.
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
Αυτή η επόμενη διαδικασία χρησιμοποιεί την ιδιότητα 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
Αυτό το τελικό τμήμα κώδικα είναι μια συνάρτηση που ορίζεται από το χρήστη (UDF) και το κάνετε αναφορά ακριβώς όπως Excel τύπο. Απλώς πληκτρολογήστε =fn_IsLinkedDataType(A1),όπου A1 είναι το κελί που θέλετε να αξιολογήσετε.
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
Για να χρησιμοποιήσετε οποιοδήποτε από αυτά τα παραδείγματα, πατήστε το συνδυασμό πλήκτρων Alt+F11 για να ανοίξετε το πρόγραμμα επεξεργασίας του Visual Basic (VBE) και, στη συνέχεια,μεταβείτε στην επιλογή "Εισαγωγή λειτουργικής μονάδας>" και επικολλήστε τον κώδικα στο νέο παράθυρο που ανοίγει στα δεξιά. Μπορείτε να χρησιμοποιήσετε το συνδυασμό πλήκτρων Alt+Q για να κάνετε έξοδο Excel όταν τελειώσετε. Για να εκτελέσετε ένα από τα δύο πρώτα παραδείγματα, μεταβείτε στην καρτέλα "Προγραμματιστής" >"Κώδικας> Μακροεντολές"> επιλέξτε τη μακροεντολή που θέλετε να εκτελέσετε από τη λίστα και, στη συνέχεια, επιλέξτε "Εκτέλεση".
Χρειάζεστε περισσότερη βοήθεια;
Μπορείτε ανά πάσα στιγμή να ρωτήσετε έναν ειδικό στην Κοινότητα τεχνικής υποστήριξης του Excel ή να λάβετε υποστήριξη στις Κοινότητες.