Επιλέξτε πολλά στοιχεία στην αναπτυσσόμενη λίστα του Excel - πλήρης οδηγός
Οι αναπτυσσόμενες λίστες του Excel είναι ένα φανταστικό εργαλείο για τη διασφάλιση της συνέπειας των δεδομένων και της ευκολίας εισαγωγής. Ωστόσο, από προεπιλογή, σας περιορίζουν στην επιλογή μόνο ενός στοιχείου. Τι γίνεται όμως αν χρειαστεί να επιλέξετε πολλά στοιχεία από την ίδια αναπτυσσόμενη λίστα; Αυτός ο περιεκτικός οδηγός θα διερευνήσει μεθόδους για την ενεργοποίηση πολλαπλών επιλογών σε αναπτυσσόμενες λίστες του Excel, τη διαχείριση των διπλότυπων, τον ορισμό προσαρμοσμένων διαχωριστικών και τον καθορισμό του εύρους αυτών των λιστών.
- Επιτρέπονται διπλότυπα στοιχεία
- Αφαίρεση τυχόν υπαρχόντων στοιχείων
- Ρύθμιση προσαρμοσμένου διαχωριστικού
- Ρύθμιση καθορισμένου εύρους
- Εκτέλεση σε προστατευμένο φύλλο εργασίας
Ενεργοποίηση πολλαπλών επιλογών στην αναπτυσσόμενη λίστα
Αυτή η ενότητα παρέχει δύο μεθόδους για να σας βοηθήσει να ενεργοποιήσετε πολλαπλές επιλογές στην αναπτυσσόμενη λίστα στο Excel.
Χρήση κώδικα VBA
Για να επιτρέψετε πολλαπλές επιλογές στην αναπτυσσόμενη λίστα, μπορείτε να χρησιμοποιήσετε Visual Basic για εφαρμογές (VBA) στο Excel. Το σενάριο μπορεί να τροποποιήσει τη συμπεριφορά μιας αναπτυσσόμενης λίστας για να την κάνει λίστα πολλαπλών επιλογών. Παρακαλώ κάντε το εξής.
Βήμα 1: Ανοίξτε το πρόγραμμα επεξεργασίας φύλλου (Κώδικας).
- Ανοίξτε το φύλλο εργασίας που περιέχει την αναπτυσσόμενη λίστα για την οποία θέλετε να ενεργοποιήσετε την πολλαπλή επιλογή.
- Κάντε δεξί κλικ στην καρτέλα του φύλλου και επιλέξτε Προβολή κωδικού από το μενού περιβάλλοντος.
Βήμα 2: Χρησιμοποιήστε τον κώδικα VBA
Τώρα αντιγράψτε τον ακόλουθο κώδικα VBA και επικολλήστε τον στο παράθυρο ανοίγματος του φύλλου (Κωδικός).
Κώδικας VBA: Ενεργοποίηση πολλαπλών επιλογών στην αναπτυσσόμενη λίστα του Excel.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
Αποτέλεσμα
Όταν επιστρέψετε στο φύλλο εργασίας, η αναπτυσσόμενη λίστα θα σας επιτρέψει να επιλέξετε πολλές επιλογές, δείτε την παρακάτω επίδειξη:
Ο παραπάνω κωδικός VBA:
- Ισχύει για όλες τις αναπτυσσόμενες λίστες επικύρωσης δεδομένων στο τρέχον φύλλο εργασίας, τόσο σε υπάρχουσες όσο και σε αυτές που θα δημιουργηθούν στο μέλλον.
- Σας εμποδίζει να επιλέξετε το ίδιο στοιχείο περισσότερες από μία φορές σε κάθε αναπτυσσόμενη λίστα.
- Χρησιμοποιεί κόμμα ως διαχωριστικό για τα επιλεγμένα στοιχεία. Για να χρησιμοποιήσετε άλλους οριοθέτες, παρακαλούμε δείτε αυτήν την ενότητα για να αλλάξετε το διαχωριστικό.
Χρήση Kutools για Excel με μερικά κλικ
Εάν δεν αισθάνεστε άνετα με το VBA, μια ευκολότερη εναλλακτική είναι Kutools για Excel's Αναδυόμενη λίστα πολλαπλών επιλογών χαρακτηριστικό. Αυτό το φιλικό προς τον χρήστη εργαλείο απλοποιεί την ενεργοποίηση πολλαπλών επιλογών σε αναπτυσσόμενες λίστες, επιτρέποντάς σας να προσαρμόσετε το διαχωριστικό και να διαχειρίζεστε τα διπλότυπα χωρίς κόπο για να ανταποκρίνεστε στις διαφορετικές ανάγκες σας.
Μετά το εγκατάσταση Kutools για Excel, μεταβείτε στο Kutools καρτέλα, επιλέξτε Αναπτυσσόμενη λίστα > Αναδυόμενη λίστα πολλαπλών επιλογών. Στη συνέχεια, πρέπει να ρυθμίσετε τις παραμέτρους ως εξής.
- Καθορίστε το εύρος που περιέχει την αναπτυσσόμενη λίστα από την οποία πρέπει να επιλέξετε πολλά στοιχεία.
- Καθορίστε το διαχωριστικό για τα επιλεγμένα στοιχεία στο κελί της αναπτυσσόμενης λίστας.
- Πατήστε OK για να ολοκληρώσετε τις ρυθμίσεις.
Αποτέλεσμα
Τώρα, όταν κάνετε κλικ σε ένα κελί με μια αναπτυσσόμενη λίστα στο καθορισμένο εύρος, ένα πλαίσιο λίστας θα εμφανιστεί δίπλα του. Απλώς κάντε κλικ στο κουμπί "+" δίπλα στα στοιχεία για να τα προσθέσετε στο αναπτυσσόμενο κελί και κάντε κλικ στο κουμπί "-" για να αφαιρέσετε τυχόν στοιχεία που δεν θέλετε πια. Δείτε το demo παρακάτω:
- Έλεγξε το Αναδίπλωση κειμένου μετά την εισαγωγή ενός διαχωριστικού επιλογή εάν θέλετε να εμφανίσετε τα επιλεγμένα στοιχεία κάθετα μέσα στο κελί. Εάν προτιμάτε μια οριζόντια καταχώριση, αφήστε αυτήν την επιλογή χωρίς επιλογή.
- Έλεγξε το Ενεργοποίηση αναζήτησης επιλογή εάν θέλετε να προσθέσετε μια γραμμή αναζήτησης στην αναπτυσσόμενη λίστα σας.
- Για να εφαρμόσετε αυτήν τη δυνατότητα, παρακαλούμε κατεβάστε και εγκαταστήστε το Kutools για Excel πρώτη.
Περισσότερες λειτουργίες για την αναπτυσσόμενη λίστα πολλαπλών επιλογών
Αυτή η ενότητα συλλέγει τα διαφορετικά σενάρια που μπορεί να απαιτούνται κατά την ενεργοποίηση πολλαπλών επιλογών στην αναπτυσσόμενη λίστα Επικύρωση δεδομένων.
Επιτρέπονται διπλότυπα στοιχεία στην αναπτυσσόμενη λίστα
Τα διπλότυπα μπορεί να είναι πρόβλημα όταν επιτρέπονται πολλαπλές επιλογές σε μια αναπτυσσόμενη λίστα. Ο παραπάνω κώδικας VBA δεν επιτρέπει διπλότυπα στοιχεία στην αναπτυσσόμενη λίστα. Εάν πρέπει να διατηρήσετε διπλότυπα στοιχεία, δοκιμάστε τον κώδικα VBA σε αυτήν την ενότητα.
Κωδικός VBA: Επιτρέπονται διπλότυπα στην αναπτυσσόμενη λίστα επικύρωσης δεδομένων
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
Target.Value = xValue1 & delimiter & xValue2
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
Αποτέλεσμα
Τώρα μπορείτε να επιλέξετε πολλά στοιχεία από τις αναπτυσσόμενες λίστες στο τρέχον φύλλο εργασίας. Για να επαναλάβετε ένα στοιχείο σε ένα κελί αναπτυσσόμενης λίστας, συνεχίστε να επιλέγετε αυτό το στοιχείο από τη λίστα. Δείτε στιγμιότυπο οθόνης:
Αφαίρεση τυχόν υπαρχόντων στοιχείων από την αναπτυσσόμενη λίστα
Αφού επιλέξετε πολλά στοιχεία από μια αναπτυσσόμενη λίστα, μερικές φορές μπορεί να χρειαστεί να αφαιρέσετε ένα υπάρχον στοιχείο από το κελί της αναπτυσσόμενης λίστας. Αυτή η ενότητα παρέχει ένα άλλο κομμάτι κώδικα VBA για να σας βοηθήσει να ολοκληρώσετε αυτήν την εργασία.
Κωδικός VBA: Καταργήστε τυχόν υπάρχοντα στοιχεία από το κελί της αναπτυσσόμενης λίστας
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRngDV As Range
Dim TargetRange As Range
Dim oldValue As String
Dim newValue As String
Dim delimiter As String
Dim allValues As Variant
Dim valueExists As Boolean
Dim i As Long
Dim cleanedValue As String
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Set your desired delimiter here
If Target.CountLarge > 1 Then Exit Sub
' Check if the change is within the specific range
If Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRngDV = Target.SpecialCells(xlCellTypeAllValidation)
If xRngDV Is Nothing Or Target.Value = "" Then
' Skip if there's no data validation or if the cell is cleared
Application.EnableEvents = True
Exit Sub
End If
On Error GoTo 0
If Not Intersect(Target, xRngDV) Is Nothing Then
Application.EnableEvents = False
newValue = Target.Value
Application.Undo
oldValue = Target.Value
Target.Value = newValue
' Split the old value by delimiter and check if new value already exists
allValues = Split(oldValue, delimiter)
valueExists = False
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) = newValue Then
valueExists = True
Exit For
End If
Next i
' Add or remove value based on its existence
If valueExists Then
' Remove the value
cleanedValue = ""
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) <> newValue Then
If cleanedValue <> "" Then cleanedValue = cleanedValue & delimiter
cleanedValue = cleanedValue & Trim(allValues(i))
End If
Next i
Target.Value = cleanedValue
Else
' Add the value
If oldValue <> "" Then
Target.Value = oldValue & delimiter & newValue
Else
Target.Value = newValue
End If
End If
Application.EnableEvents = True
End If
End Sub
Αποτέλεσμα
Αυτός ο κωδικός VBA σάς επιτρέπει να επιλέξετε πολλά στοιχεία από μια αναπτυσσόμενη λίστα και να αφαιρέσετε εύκολα οποιοδήποτε στοιχείο έχετε ήδη επιλέξει. Αφού επιλέξετε πολλά στοιχεία, εάν θέλετε να αφαιρέσετε ένα συγκεκριμένο, απλώς επιλέξτε το ξανά από τη λίστα.
Ρύθμιση προσαρμοσμένου διαχωριστικού
Ο οριοθέτης ορίζεται ως κόμμα στους παραπάνω κωδικούς VBA. Μπορείτε να τροποποιήσετε αυτήν τη μεταβλητή σε οποιονδήποτε προτιμώμενο χαρακτήρα για χρήση ως διαχωριστικό για τις επιλογές της αναπτυσσόμενης λίστας. Εδώ είναι πώς μπορείτε να κάνετε:
Όπως μπορείτε να δείτε ότι οι παραπάνω κωδικοί VBA έχουν όλοι την ακόλουθη γραμμή:
delimiter = ", "
Απλώς πρέπει να αλλάξετε το κόμμα σε οποιοδήποτε διαχωριστικό θέλετε. Για παράδειγμα, θέλετε να διαχωρίσετε τα στοιχεία με ερωτηματικό, αλλάξτε τη γραμμή σε:
delimiter = "; "
delimiter = vbNewLine
Ρύθμιση καθορισμένου εύρους
Οι παραπάνω κωδικοί VBA ισχύουν για όλες τις αναπτυσσόμενες λίστες στο τρέχον φύλλο εργασίας. Εάν θέλετε οι κωδικοί VBA να εφαρμόζονται μόνο σε ένα συγκεκριμένο εύρος αναπτυσσόμενων λιστών, μπορείτε να καθορίσετε το εύρος στον παραπάνω κώδικα VBA ως εξής.
Όπως μπορείτε να δείτε ότι οι παραπάνω κωδικοί VBA έχουν όλοι την ακόλουθη γραμμή:
Set TargetRange = Me.UsedRange
Απλά πρέπει να αλλάξετε τη γραμμή σε:
Set TargetRange = Me.Range("C2:C10")
Εκτέλεση σε προστατευμένο φύλλο εργασίας
Φανταστείτε ότι έχετε προστατεύσει ένα φύλλο εργασίας με τον κωδικό πρόσβασης "123" και ορίστε τα κελιά της αναπτυσσόμενης λίστας σε "Unlocked" πριν από την ενεργοποίηση της προστασίας, διασφαλίζοντας έτσι ότι η λειτουργία πολλαπλής επιλογής παραμένει ενεργή μετά την προστασία. Ωστόσο, οι κωδικοί VBA που αναφέρονται παραπάνω δεν μπορούν να λειτουργήσουν σε αυτήν την περίπτωση και αυτή η ενότητα περιγράφει μια άλλη δέσμη ενεργειών VBA που έχει σχεδιαστεί ειδικά για να χειρίζεται λειτουργίες πολλαπλής επιλογής σε προστατευμένο φύλλο εργασίας.
Κώδικας VBA: Ενεργοποίηση πολλαπλής επιλογής στην αναπτυσσόμενη λίστα χωρίς διπλότυπα
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Dim isProtected As Boolean
Dim pswd As Variant
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
' Check if sheet is protected
isProtected = Me.ProtectContents
If isProtected Then
' If protected, temporarily unprotect. Adjust or remove the password as needed.
pswd = "yourPassword" ' Change or remove this as needed
Me.Unprotect Password:=pswd
End If
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then
If isProtected Then Me.Protect Password:=pswd
Exit Sub
End If
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
' Re-protect the sheet if it was protected
If isProtected Then
Me.Protect Password:=pswd
End If
End Sub
Ενεργοποιώντας πολλαπλές επιλογές σε αναπτυσσόμενες λίστες του Excel, μπορείτε να βελτιώσετε σημαντικά τη λειτουργικότητα και την ευελιξία των φύλλων εργασίας σας. Είτε είστε άνετοι με την κωδικοποίηση VBA είτε προτιμάτε μια πιο απλή λύση όπως το Kutools, έχετε τώρα τη δυνατότητα να μετατρέψετε τις τυπικές αναπτυσσόμενες λίστες σας σε δυναμικά εργαλεία πολλαπλής επιλογής. Με αυτές τις δεξιότητες, είστε πλέον εξοπλισμένοι για να δημιουργήσετε πιο δυναμικά και φιλικά προς το χρήστη έγγραφα Excel. Για όσους επιθυμούν να εμβαθύνουν στις δυνατότητες του Excel, ο ιστότοπός μας μπορεί να υπερηφανεύεται για πληθώρα οδηγών. Ανακαλύψτε περισσότερες συμβουλές και κόλπα για το Excel εδώ.
Σχετικά άρθρα
Αυτόματη συμπλήρωση κατά την πληκτρολόγηση στην αναπτυσσόμενη λίστα του Excel
Εάν έχετε μια αναπτυσσόμενη λίστα επικύρωσης δεδομένων με μεγάλες τιμές, πρέπει να μετακινηθείτε προς τα κάτω στη λίστα μόνο για να βρείτε την κατάλληλη ή να πληκτρολογήσετε ολόκληρη τη λέξη στο πλαίσιο λίστας απευθείας. Εάν υπάρχει μέθοδος αυτόματης συμπλήρωσης κατά την πληκτρολόγηση του πρώτου γράμματος στην αναπτυσσόμενη λίστα, όλα θα γίνουν ευκολότερα. Αυτό το σεμινάριο παρέχει τη μέθοδο για την επίλυση του προβλήματος.
Δημιουργήστε αναπτυσσόμενη λίστα από άλλο βιβλίο εργασίας στο Excel
Είναι πολύ εύκολο να δημιουργήσετε μια αναπτυσσόμενη λίστα επικύρωσης δεδομένων μεταξύ των φύλλων εργασίας σε ένα βιβλίο εργασίας. Αλλά αν τα δεδομένα της λίστας που χρειάζεστε για την επικύρωση δεδομένων εντοπίζονται σε άλλο βιβλίο εργασίας, τι θα κάνατε; Σε αυτό το σεμινάριο, θα μάθετε πώς μπορείτε να δημιουργήσετε μια αναπτυσσόμενη λίστα από άλλο βιβλίο εργασίας στο Excel λεπτομερώς.
Δημιουργήστε μια αναπτυσσόμενη λίστα με δυνατότητα αναζήτησης στο Excel
Για μια αναπτυσσόμενη λίστα με πολλές τιμές, η εύρεση μιας κατάλληλης δεν είναι εύκολη δουλειά. Προηγουμένως έχουμε εισαγάγει μια μέθοδο αυτόματης συμπλήρωσης της αναπτυσσόμενης λίστας κατά την εισαγωγή του πρώτου γράμματος στο αναπτυσσόμενο πλαίσιο. Εκτός από τη λειτουργία αυτόματης συμπλήρωσης, μπορείτε επίσης να κάνετε αναζήτηση στην αναπτυσσόμενη λίστα για ενίσχυση της αποτελεσματικότητας λειτουργίας στην εύρεση κατάλληλων τιμών στην αναπτυσσόμενη λίστα. Για να κάνετε αναζήτηση στην αναπτυσσόμενη λίστα, δοκιμάστε τη μέθοδο σε αυτό το σεμινάριο.
Αυτόματη συμπλήρωση άλλων κελιών κατά την επιλογή τιμών στην αναπτυσσόμενη λίστα του Excel
Ας υποθέσουμε ότι έχετε δημιουργήσει μια αναπτυσσόμενη λίστα με βάση τις τιμές στην περιοχή κελιών B8: B14. Όταν επιλέγετε οποιαδήποτε τιμή στην αναπτυσσόμενη λίστα, θέλετε οι αντίστοιχες τιμές στην περιοχή κελιών C8: C14 να συμπληρώνονται αυτόματα σε ένα επιλεγμένο κελί. Για την επίλυση του προβλήματος, οι μέθοδοι σε αυτό το σεμινάριο θα σας βοηθήσουν.
Τα καλύτερα εργαλεία παραγωγικότητας γραφείου
Αυξήστε τις δεξιότητές σας στο Excel με τα Kutools για Excel και απολαύστε την αποτελεσματικότητα όπως ποτέ πριν. Το Kutools για Excel προσφέρει πάνω από 300 προηγμένες δυνατότητες για την ενίσχυση της παραγωγικότητας και την εξοικονόμηση χρόνου. Κάντε κλικ εδώ για να αποκτήσετε τη δυνατότητα που χρειάζεστε περισσότερο...
Το Office Tab φέρνει τη διεπαφή με καρτέλες στο Office και κάνει την εργασία σας πολύ πιο εύκολη
- Ενεργοποίηση επεξεργασίας και ανάγνωσης καρτελών σε Word, Excel, PowerPoint, Publisher, Access, Visio και Project.
- Ανοίξτε και δημιουργήστε πολλά έγγραφα σε νέες καρτέλες του ίδιου παραθύρου και όχι σε νέα παράθυρα.
- Αυξάνει την παραγωγικότητά σας κατά 50% και μειώνει εκατοντάδες κλικ του ποντικιού για εσάς κάθε μέρα!
Πίνακας περιεχομένων
- Ενεργοποίηση πολλαπλών επιλογών
- Χρήση κώδικα VBA
- Χρήση Kutools για Excel με μερικά κλικ
- Περισσότερες λειτουργίες
- Επιτρέπονται διπλότυπα στοιχεία
- Αφαίρεση τυχόν υπαρχόντων στοιχείων
- Ρύθμιση προσαρμοσμένου διαχωριστικού
- Ρύθμιση καθορισμένου εύρους
- Εκτέλεση σε προστατευμένο φύλλο εργασίας
- Σχετικά άρθρα
- Τα καλύτερα εργαλεία παραγωγικότητας του Office
- Σχόλια