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

Sådan slettes og returneres flere værdier uden duplikater i Excel? 

Nogle gange vil du muligvis slå op og returnere flere matchede værdier i en enkelt celle på én gang. Men hvis der er nogle gentagne værdier, der er befolket i de returnerede celler, hvordan kan du ignorere duplikaterne og kun beholde de unikke værdier, når du returnerer alle matchende værdier som følgende skærmbillede vist i Excel?

doc returnerer flere unikke værdier 1

Vlookup og returner flere matchende værdier uden duplikater ved hjælp af brugerdefineret funktion


Vlookup og returner flere matchende værdier uden duplikater ved hjælp af brugerdefineret funktion

Følgende VBA-kode kan hjælpe dig med at returnere flere matchende værdier uden duplikater, gør venligst som dette:

1. Hold nede Alt + F11 nøgler til at åbne Microsoft Visual Basic til applikationer vindue.

2. Klik indsatte > Moduler, og indsæt følgende kode i Moduler Vindue.

VBA-kode: Vlookup og returner flere unikke matchede værdier:

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. Når du har indsat koden, skal du klikke på Værktøj > Referencer i det åbnede Microsoft Visual Basic til applikationer vindue og derefter i det dukkede ud Referencer - VBAProject dialogboks, tjek Microsoft Scripting Runtime valgmulighed i Tilgængelige referencer listefelt, se skærmbillede:

doc returnerer flere unikke værdier 2

4. Klik derefter på OK for at lukke dialogboksen, gemme og lukke kodevinduet, vende tilbage til regnearket og indtaste denne formel: =MultipleLookupNoRept(E2,A2:C17,3) i en tom celle, hvor du vil sende resultatet, skal du trykke på Indtast nøgle for at få det korrekte resultat, som du har brug for. Se skærmbillede:

doc returnerer flere unikke værdier 3

Bemærk: I ovenstående formel E2 er de kriterier, som du vil oplyse, A2: C17 er det dataområde, du vil bruge, nummeret 3 er kolonnetallet, der indeholder de returnerede værdier.


De bedste Office-produktivitetsværktøjer

Kutools til Excel løser de fleste af dine problemer og øger din produktivitet med 80%

  • Genbruge: Indsæt hurtigt komplekse formler, diagrammer og alt, hvad du har brugt før; Krypter celler med adgangskode Opret postliste og send e-mails ...
  • Super formel bar (let redigere flere linjer med tekst og formel); Læsning Layout (let at læse og redigere et stort antal celler); Indsæt til filtreret rækkevidde...
  • Flet celler / rækker / kolonner uden at miste data; Split celler indhold; Kombiner duplikerede rækker / kolonner... Forhindre duplikerede celler; Sammenlign områder...
  • Vælg Duplicate eller Unique Rækker; Vælg tomme rækker (alle celler er tomme); Super Find og Fuzzy Find i mange arbejdsbøger; Tilfældig valg ...
  • Præcis kopi Flere celler uden at ændre formelreference; Auto Opret referencer til flere ark; Indsæt kugler, Afkrydsningsfelter og mere ...
  • Uddrag tekst, Tilføj tekst, Fjern efter position, Fjern mellemrum; Opret og udskriv personsøgningssubtotaler; Konverter mellem celler indhold og kommentarer...
  • Superfilter (gem og anvend filterskemaer på andre ark); Avanceret sortering efter måned / uge / dag, hyppighed og mere; Specielt filter af fed, kursiv ...
  • Kombiner arbejdsbøger og arbejdsark; Fletabeller baseret på nøglekolonner; Opdel data i flere ark; Batch Konverter xls, xlsx og PDF...
  • Mere end 300 kraftfulde funktioner. Understøtter Office / Excel 2007-2021 og 365. Understøtter alle sprog. Nem implementering i din virksomhed eller organisation. Fuld funktioner 30-dages gratis prøveperiode. 60 dages pengene tilbage garanti.
kte-fane 201905

Fanen Office bringer en grænseflade til et kontor med Office, og gør dit arbejde meget lettere

  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver dag!
officetab bund
Sorter kommentarer efter
Kommentarer (13)
Ingen vurderinger endnu. Vær den første til at bedømme!
Denne kommentar blev minimeret af moderatoren på webstedet
hvad hvis jeg ville oprette en liste i en tabel ud fra dette i stedet for alle resultater i én celle?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Tom,
Hvis du vil udtrække de unikke værdier i en liste over celler i stedet for en celle, kan følgende formel måske hjælpe dig:

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

Prøv det venligst.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Skyyang,

Mange tak for denne formel.
Det her virker for mig. Det tager dog lang tid at behandle fra et stort datasæt.
Kan vi ændre denne formel, så den virker så lidt hurtigere?
Tak igen
Rasike
Denne kommentar blev minimeret af moderatoren på webstedet
Hej skyyang hvad hvis du vil have resultatet som en kolonne?
Denne kommentar blev minimeret af moderatoren på webstedet
Er der en måde at tilføje et mellemrum mellem de flere værdier hentet i resultaterne uden at indføre et komma i slutningen af ​​listen? For eksempel vil dit resultat ovenfor blive vist som: "Emily, James, Daisy, Gary" i stedet for som dette: "Emily, James, Daisy, Gary"

Jeg forsøgte at redigere denne del af VBA-koden: xStr = xStr & xDic.Keys(I) & "," til at være dette: xStr = xStr & xDic.Keys(I) & ", "

Det tilføjede mellemrummet mellem værdierne, men det tilføjede også et komma efter den sidste værdi. "Emily, James, Daisy, Gary,"

Er der en måde at få det til at fungere med mellemrummet, men uden det ekstra komma efter den sidste værdi?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Demetre,
Brug mellemrummet til at adskille værdierne, du skal bare ændre vba-koden:
fra xStr = xStr & xDic.Keys(i) & "," for at være dette: xStr = xStr & xDic.Keys(i) & " "

Prøv det venligst.
Denne kommentar blev minimeret af moderatoren på webstedet
xStr = xStr & xDic.Keys(I) & "," for at være dette: xStr = xStr & xDic.Keys(I) & ", "

Er der en måde at erstatte "," med ALT+ENTER i cellen, så resultaterne vil være i den samme celle, men på forskellige linjer? Skal jeg introducere et ekstra VBA-modul til det og kombinere dem?

Denne kode er også ret langsom, når den går over store borde. Nogen der kender nogle hurtigere løsninger?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Imre,
For at adskille resultatværdierne med Alt + Enter-tasterne skal du anvende følgende brugerdefinerede funktion:

Funktion MultipleLookupNoRept(Opslagsværdi som streng, opslagsområde som område, kolonnenummer som heltal)
Dim xDic som ny ordbog
Dim x Rows As Long
Dim xStr As String
Dim jeg så længe
On Error Resume Next
xRows = LookupRange.Rows.Count
For i = 1 Til xRows
Hvis LookupRange.Columns(1).Cells(i).Value = Lookupvalue Så
xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Value, ""
End If
Næste
xStr = ""
MultipleLookupNoRept = xStr
Hvis xDic.Count > 0 Så
For i = 0 Til xDic.Count - 1
xStr = xStr & xDic.Keys(i) & Chr(10) + Chr(13)
Næste
MultipleLookupNoRept = Venstre(xStr, Len(xStr) - 1)
End If
Debug.Print xStr
End Function

Og gør derefter med ovenstående trin i denne artikel, til sidst, efter at have indtastet formlen, skal du klikke på Wrap Text under fanen Hjem.
Denne kommentar blev minimeret af moderatoren på webstedet
Hi

Jeg ønskede at oprette en liste i en tabel ud fra dette i stedet for alle resultater i én celle. Så jeg har brugt en formel lignende nedenfor (det du har foreslået)

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

Dette tager dog lang tid at behandle fra et stort sæt data.
Er der nogen alternativ metode til at behandle dette hurtigere?
Tak igen
Rasike
Denne kommentar blev minimeret af moderatoren på webstedet
hej,
mens tidspunktet for lot værdi multivlooks mit regneark fik hænge. er der andre måder at multivlookupwithoutrepeation????

og jeg brugte også på et nyt skrivebord, og det bliver kun hængende...

min dataværdi er omkring 10,000 rækker
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, jeg gjorde som du sagde, og det var fantastisk, men det har stadig ikke løst et af mine problemer, hvad sker der, når du har en unik værdi i hver måned? =MultipleLookupNoRept(E2,A2:C17,3), jeg prøver at E2&1 for januar, men det virker ikke
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, Jame,
Kan du give dit problem som et skærmbillede her, så jeg kan forstå dine behov?
Denne kommentar blev minimeret af moderatoren på webstedet
Dette er godt! Hvordan skal jeg tilpasse dette for ikke at tilføje nulværdier til ordbogen? Jeg har forsøgt at tilføje fed skrift nedenfor, men den sidste streng vender stadig tilbage med "", forekomster.


xRows = LookupRange.Rows.Count
For i = 1 Til xRows
Hvis LookupRange.Columns(1).Cells(i).Value = Lookupvalue And Not IsEmpty(LookupRange.Columns(1).Cells(i).Value) Så
xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Value, ""
End If
Næste

Tak,
Der er endnu ingen kommentarer her
Efterlad dine kommentarer
Sender som gæst
×
Bedøm dette indlæg:
0   Tegn
Foreslåede steder

Følg os

Copyright © 2009 - www.extendoffice.com. | Alle rettigheder forbeholdes. Drevet af ExtendOffice. | | Sitemap
Microsoft og Office-logoet er varemærker eller registrerede varemærker tilhørende Microsoft Corporation i USA og / eller andre lande.
Beskyttet af Sectigo SSL