Note: The other languages of the website are Google-translated. Back to English

Πώς να δείτε και να επιστρέψετε πολλές τιμές χωρίς διπλότυπα στο Excel; 

Μερικές φορές, μπορεί να θέλετε να δείτε και να επιστρέψετε πολλές αντιστοιχισμένες τιμές σε ένα κελί ταυτόχρονα. Αλλά, εάν υπάρχουν μερικές επαναλαμβανόμενες τιμές που συμπληρώνονται στα επιστρεφόμενα κελιά, πώς θα μπορούσατε να αγνοήσετε τα διπλότυπα και να διατηρήσετε μόνο τις μοναδικές τιμές όταν επιστρέφετε όλες τις αντίστοιχες τιμές όπως ακολουθεί το στιγμιότυπο οθόνης που εμφανίζεται στο Excel;

doc επιστρέφει πολλές μοναδικές τιμές 1

Vlookup και επιστροφή πολλαπλών τιμών αντιστοίχισης χωρίς διπλότυπα χρησιμοποιώντας τη λειτουργία καθορισμένη από το χρήστη


Vlookup και επιστροφή πολλαπλών τιμών αντιστοίχισης χωρίς διπλότυπα χρησιμοποιώντας τη λειτουργία καθορισμένη από το χρήστη

Ο παρακάτω κώδικας VBA μπορεί να σας βοηθήσει να επιστρέψετε πολλές τιμές αντιστοίχισης χωρίς διπλότυπα, κάντε το ως εξής:

1. Κρατήστε πατημένο το Alt + F11 για να ανοίξετε το Microsoft Visual Basic για εφαρμογές παράθυρο.

2. Κλίκ Κύριο θέμα > Μονάδα μέτρησηςκαι επικολλήστε τον ακόλουθο κώδικα στο Μονάδα μέτρησης Παράθυρο.

Κωδικός VBA: Vlookup και επιστροφή πολλαπλών μοναδικών αντιστοιχισμένων τιμών:

Function MultipleLookupNoRept(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer)
    Dim xDic As New Dictionary
    Dim xRows As Long
    Dim xStr As String
    Dim i As Long
    On Error Resume Next
    xRows = LookupRange.Rows.Count
    For i = 1 To xRows
        If LookupRange.Columns(1).Cells(i).Value = Lookupvalue Then
            xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Value, ""
        End If
    Next
    xStr = ""
    MultipleLookupNoRept = xStr
    If xDic.Count > 0 Then
        For i = 0 To xDic.Count - 1
            xStr = xStr & xDic.Keys(i) & ","
        Next
        MultipleLookupNoRept = Left(xStr, Len(xStr) - 1)
    End If
End Function

3. Αφού εισαγάγετε τον κωδικό, κάντε κλικ στο Εργαλεία > αναφορές στο άνοιξε Microsoft Visual Basic για εφαρμογές παράθυρο, και στη συνέχεια, στο αναδυόμενο Αναφορές - VBAProject πλαίσιο διαλόγου, επιλέξτε Χρόνος εκτέλεσης δέσμης ενεργειών Microsoft επιλογή του Διαθέσιμες αναφορές πλαίσιο λίστας, δείτε το στιγμιότυπο οθόνης:

doc επιστρέφει πολλές μοναδικές τιμές 2

4. Στη συνέχεια κάντε κλικ στο κουμπί OK για να κλείσετε το παράθυρο διαλόγου, να αποθηκεύσετε και να κλείσετε το παράθυρο κώδικα, να επιστρέψετε στο φύλλο εργασίας και να εισαγάγετε αυτόν τον τύπο: =MultipleLookupNoRept(E2,A2:C17,3) σε ένα κενό κελί όπου θέλετε να εξάγετε το αποτέλεσμα, πατήστε εισάγετε κλειδί για να λάβετε το σωστό αποτέλεσμα όπως χρειάζεστε. Δείτε το στιγμιότυπο οθόνης:

doc επιστρέφει πολλές μοναδικές τιμές 3

Note: Στον παραπάνω τύπο, E2 είναι τα κριτήρια που θέλετε να δείτε, Α2: Γ17 είναι το εύρος δεδομένων που θέλετε να χρησιμοποιήσετε, ο αριθμός 3 είναι ο αριθμός στήλης που περιέχει τις επιστρεφόμενες τιμές.


Τα καλύτερα εργαλεία παραγωγικότητας του Office

Το Kutools για Excel λύνει τα περισσότερα από τα προβλήματά σας και αυξάνει την παραγωγικότητά σας κατά 80%

  • Επαναχρησιμοποίηση: Εισαγάγετε γρήγορα σύνθετοι τύποι, γραφήματα και οτιδήποτε έχετε χρησιμοποιήσει στο παρελθόν. Κρυπτογράφηση κυττάρων με κωδικό πρόσβασης Δημιουργία λίστας αλληλογραφίας και στείλτε email ...
  • Super Formula Bar (επεξεργαστείτε εύκολα πολλές γραμμές κειμένου και τύπου). Διάταξη ανάγνωσης (εύκολη ανάγνωση και επεξεργασία μεγάλου αριθμού κελιών). Επικόλληση σε φιλτραρισμένο εύρος...
  • Συγχώνευση κελιών / σειρών / στηλών χωρίς απώλεια δεδομένων · Περιεχόμενο διαχωρισμού κελιών Συνδυάστε διπλές σειρές / στήλες... Αποτροπή διπλών κυττάρων; Συγκρίνετε τα εύρη...
  • Επιλέξτε Διπλότυπο ή Μοναδικό Σειρές; Επιλέξτε Κενές σειρές (όλα τα κελιά είναι κενά). Σούπερ εύρεση και ασαφής εύρεση σε πολλά βιβλία εργασίας. Τυχαία επιλογή ...
  • Ακριβές αντίγραφο Πολλαπλά κελιά χωρίς αλλαγή της αναφοράς τύπου. Αυτόματη δημιουργία αναφορών σε πολλαπλά φύλλα? Εισαγωγή κουκκίδων, Πλαίσια ελέγχου και άλλα ...
  • Εξαγωγή κειμένου, Προσθήκη κειμένου, Κατάργηση κατά θέση, Αφαιρέστε το διάστημα; Δημιουργία και εκτύπωση υποσύνολων σελιδοποίησης. Μετατροπή περιεχομένου και σχολίων μεταξύ κελιών...
  • Σούπερ φίλτρο (αποθηκεύστε και εφαρμόστε σχήματα φίλτρων σε άλλα φύλλα). Προηγμένη ταξινόμηση ανά μήνα / εβδομάδα / ημέρα, συχνότητα και άλλα. Ειδικό φίλτρο με έντονη, πλάγια ...
  • Συνδυάστε βιβλία εργασίας και φύλλα εργασίας; Συγχώνευση πινάκων βάσει βασικών στηλών. Διαχωρίστε τα δεδομένα σε πολλά φύλλα; Μαζική μετατροπή xls, xlsx και PDF...
  • Περισσότερα από 300 ισχυρά χαρακτηριστικά. Υποστηρίζει Office / Excel 2007-2019 και 365. Υποστηρίζει όλες τις γλώσσες. Εύκολη ανάπτυξη στην επιχείρηση ή τον οργανισμό σας. Πλήρεις δυνατότητες δωρεάν δοκιμής 30 ημερών. Εγγύηση επιστροφής χρημάτων 60 ημερών.
kte καρτέλα 201905

Το Office Tab φέρνει τη διεπαφή με καρτέλες στο Office και κάνει την εργασία σας πολύ πιο εύκολη

  • Ενεργοποίηση επεξεργασίας και ανάγνωσης καρτελών σε Word, Excel, PowerPoint, Publisher, Access, Visio και Project.
  • Ανοίξτε και δημιουργήστε πολλά έγγραφα σε νέες καρτέλες του ίδιου παραθύρου και όχι σε νέα παράθυρα.
  • Αυξάνει την παραγωγικότητά σας κατά 50% και μειώνει εκατοντάδες κλικ ποντικιού για εσάς κάθε μέρα!
κάτω μέρος γραφείου
Σχόλια (13)
Δεν υπάρχουν ακόμη βαθμολογίες. Γίνε ο πρώτος που θα αξιολογήσετε!
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Τι θα γινόταν αν ήθελα να δημιουργήσω μια λίστα σε έναν πίνακα από αυτό αντί για όλα τα αποτελέσματα σε ένα κελί;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου, Τομ,
Εάν θέλετε να εξαγάγετε τις μοναδικές τιμές σε μια λίστα κελιών αντί για ένα κελί, ο ακόλουθος τύπος μπορεί να σας βοηθήσει:

=LOOKUP(2, 1/((COUNTIF($E$1:E1, $B$2:$B$12)=0)*($D$2=$A$2:$A$12)), $B$2:$B$12)

Παρακαλώ δοκιμάστε το.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου Skyyang,

Σας ευχαριστώ πολύ για αυτή τη φόρμουλα.
Αυτό λειτουργεί για μένα. Ωστόσο, χρειάζεται πολύς χρόνος για την επεξεργασία από ένα μεγάλο σύνολο δεδομένων.
Μπορούμε να τροποποιήσουμε αυτόν τον τύπο για να λειτουργεί λίγο πιο γρήγορα;
Ευχαριστώ και πάλι
Ρασίκε
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου skyyang τι γίνεται αν θέλεις το αποτέλεσμα ως στήλη;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Υπάρχει τρόπος να προσθέσετε ένα κενό μεταξύ των πολλαπλών τιμών που ανακτήθηκαν στα αποτελέσματα χωρίς να εισάγετε κόμμα στο τέλος της λίστας; Για παράδειγμα, το παραπάνω αποτέλεσμα θα εμφανίζεται ως: "Emily, James, Daisy, Gary" αντί για το εξής: "Emily,James,Daisy,Gary"

Προσπάθησα να επεξεργαστώ αυτό το τμήμα του κώδικα VBA: xStr = xStr & xDic.Keys(I) & "," ώστε να είναι αυτό: xStr = xStr & xDic.Keys(I) & ", "

Αυτό όντως πρόσθεσε το κενό μεταξύ των τιμών, αλλά πρόσθεσε επίσης ένα κόμμα μετά την τελευταία τιμή. «Έμιλυ, Τζέιμς, Νταίζη, Γκάρι»

Υπάρχει τρόπος να λειτουργήσει με το διάστημα αλλά χωρίς το επιπλέον κόμμα μετά την τελευταία τιμή;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σου Δημήτρη,
Χρησιμοποιήστε το διάστημα για να διαχωρίσετε τις τιμές, απλά πρέπει να αλλάξετε τον κωδικό vba:
από xStr = xStr & xDic.Keys(i) & "," να είναι αυτό: xStr = xStr & xDic.Keys(i) & " "

Παρακαλώ δοκιμάστε το.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
xStr = xStr & xDic.Keys(I) & "," να είναι αυτό: xStr = xStr & xDic.Keys(I) & ", "

Υπάρχει τρόπος αντικατάστασης του "," με ALT+ENTER εντός κελιών, ώστε τα αποτελέσματα να είναι στο ίδιο κελί αλλά σε διαφορετικές γραμμές; Χρειάζεται να εισαγάγω πρόσθετη μονάδα VBA για αυτό και να τα συνδυάσω;

Επίσης, αυτός ο κώδικας είναι αρκετά αργός όταν κάνει βρόχο σε τεράστιους πίνακες. Ξέρει κανείς πιο γρήγορες λύσεις;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, Imre,
Για να διαχωρίσετε τις τιμές των αποτελεσμάτων με τα πλήκτρα Alt + Enter, εφαρμόστε την ακόλουθη συνάρτηση που καθορίζεται από το χρήστη:

Συνάρτηση MultipleLookupNoRept (τιμή αναζήτησης ως συμβολοσειρά, εύρος αναζήτησης ως εύρος, αριθμός στήλης ως ακέραιος αριθμός)
Dim xDic ως νέο λεξικό
Dim xRows As Long
Dim xStr ως συμβολοσειρά
Dim i As Long
On Error Συνέχιση Επόμενη
xRows = LookupRange.Rows.Count
Για i = 1 έως xRows
Αν LookupRange.Columns(1).Cells(i).Value = Lookupvalue Τότε
xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Τιμή, ""
End If
επόμενος
xStr = ""
MultipleLookupNoRept = xStr
Αν xDic.Count > 0 Τότε
Για i = 0 σε xDic.Count - 1
xStr = xStr & xDic.Keys(i) & Chr(10) + Chr(13)
επόμενος
MultipleLookupNoRept = Left(xStr, Len(xStr) - 1)
End If
Εντοπισμός σφαλμάτων.Εκτύπωση xStr
Τέλος Λειτουργία

Και, στη συνέχεια, κάντε τα παραπάνω βήματα σε αυτό το άρθρο, επιτέλους, αφού εισαγάγετε τον τύπο, θα πρέπει να κάνετε κλικ στο Wrap Text στην καρτέλα Home.
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Hi

Ήθελα να δημιουργήσω μια λίστα σε έναν πίνακα από αυτό αντί για όλα τα αποτελέσματα σε ένα κελί. Οπότε χρησιμοποίησα έναν τύπο παρόμοιο παρακάτω (αυτό που προτείνατε)

=LOOKUP(2, 1/((COUNTIF($E$1:E1, $B$2:$B$12)=0)*($D$2=$A$2:$A$12)), $B$2:$B$12)

Ωστόσο, χρειάζεται πολύς χρόνος για την επεξεργασία από ένα μεγάλο σύνολο δεδομένων.
Υπάρχει κάποια εναλλακτική μέθοδος για να το επεξεργαστείτε πιο γρήγορα;
Ευχαριστώ και πάλι
Ρασίκε
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
γεια,
ενώ ο χρόνος της αξίας της παρτίδας multivlooks έπεσε στο φύλλο εργασίας μου. υπάρχει κανένας άλλος τρόπος για multivlook χωρίς επανάληψη;;;

και επίσης χρησιμοποίησα σε νέο επιτραπέζιο υπολογιστή επίσης κολλάει μόνο...

Η τιμή των δεδομένων μου είναι περίπου 10,000 σειρές
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια σας, έκανα όπως είπατε και είναι υπέροχο, αλλά ακόμα δεν έχει λύσει ένα από τα προβλήματά μου, τι συμβαίνει όταν έχετε μοναδική αξία κάθε μήνα; =MultipleLookupNoRept(E2,A2:C17,3), προσπαθώ να κάνω E2&1 για τον Ιανουάριο αλλά δεν λειτουργεί
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Γεια, Τζέιμς,
Θα μπορούσατε να δώσετε το πρόβλημά σας ως στιγμιότυπο εδώ, ώστε να καταλάβω τις απαιτήσεις σας;
Αυτό το σχόλιο ελαχιστοποιήθηκε από τον συντονιστή του ιστότοπου
Αυτό είναι υπέροχο! Πώς θα το προσαρμόσω για να μην προσθέσω μηδενικές τιμές στο λεξικό; Δοκίμασα να προσθέσω την έντονη γραφή παρακάτω, αλλά η τελική συμβολοσειρά εξακολουθεί να επιστρέφει με τις περιπτώσεις "".


xRows = LookupRange.Rows.Count
Για i = 1 έως xRows
Αν LookupRange.Columns(1).Cells(i).Value = Lookupvalue And Not IsEmpty(LookupRange.Columns(1).Cells(i).Value) Τότε
xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Τιμή, ""
End If
επόμενος

Ευχαριστώ,
Δεν υπάρχουν σχόλια δημοσιεύτηκε ακόμα
Αφήστε τα σχόλιά σας
Δημοσίευση ως επισκέπτης
×
Αξιολογήστε αυτήν την ανάρτηση:
0   Χαρακτήρες
Προτεινόμενες τοποθεσίες