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

Hvordan returneres flere matchende værdier baseret på et eller flere kriterier i Excel?

Normalt er det let for de fleste af os at søge efter en bestemt værdi og returnere den matchende vare ved hjælp af funktionen VLOOKUP. Men har du nogensinde forsøgt at returnere flere matchende værdier baseret på et eller flere kriterier som vist nedenstående skærmbillede? I denne artikel vil jeg introducere nogle formler til løsning af denne komplekse opgave i Excel.

Returner flere matchende værdier baseret på et eller flere kriterier med matrixformler


Returner flere matchende værdier baseret på et eller flere kriterier med matrixformler

For eksempel vil jeg udtrække alle navne, hvis alder er 28 og kommer fra USA, skal du anvende følgende formel:

1. Kopier eller indtast nedenstående formel i en tom celle, hvor du vil finde resultatet:

=INDEX($B$2:$B$11, SMALL(IF(COUNTIF($F$2, $C$2:$C$11)*COUNTIF($G$2, $D$2:$D$11), ROW($A$2:$D$11)-MIN(ROW($A$2:$D$11))+1), ROW(A1)), COLUMN(A1))

Bemærk: I ovenstående formel B2: B11 er den kolonne, som den matchende værdi returneres fra; F2, C2: C11 er den første betingelse og kolonnedataene, der indeholder den første betingelse; G2, D2: D11 er den anden betingelse, og kolonnedataene, der indeholder denne betingelse, skal du ændre dem til dit behov.

2. Tryk derefter på Ctrl + Skift + Enter nøgler for at få det første matchende resultat, og vælg derefter den første formelcelle og træk fyldhåndtaget ned til cellerne, indtil fejlværdien vises, nu returneres alle matchende værdier som vist nedenstående skærmbillede:

Tips: Hvis du bare har brug for at returnere alle de matchende værdier baseret på en betingelse, skal du anvende nedenstående arrayformel:

=IFERROR(INDEX($B$2:$B$11, SMALL(IF($F$2=$D$2:$D$11, ROW($D$2:$D$11)-ROW($D$2)+1), ROW(1:1))),"" )


Flere relative artikler:

  • Returner flere opslagsværdier i en kommaadskilt celle
  • I Excel kan vi anvende VLOOKUP-funktionen til at returnere den første matchede værdi fra en tabelceller, men nogle gange er vi nødt til at udtrække alle matchende værdier og derefter adskilles af en bestemt afgrænser, såsom komma, bindestreg osv ... i en enkelt celle som følgende skærmbillede vist. Hvordan kunne vi få og returnere flere opslagsværdier i en kommasepareret celle i Excel?
  • Vlookup og returner flere matchende værdier på én gang i Google Sheet
  • Den normale Vlookup-funktion i Google-ark kan hjælpe dig med at finde og returnere den første matchende værdi baseret på en given data. Men nogle gange skal du muligvis vlookup og returnere alle matchende værdier som vist nedenstående skærmbillede. Har du gode og nemme måder at løse denne opgave på Google-ark?
  • Vlookup og returner flere værdier fra rullelisten
  • I Excel, hvordan kunne du oprette og returnere flere tilsvarende værdier fra en rulleliste, hvilket betyder, at når du vælger et element fra rullelisten, vises alle dets relative værdier på én gang som vist nedenstående skærmbillede. Denne artikel vil jeg introducere løsningen trin for trin.
  • Vlookup og returner flere værdier lodret i Excel
  • Normalt kan du bruge Vlookup-funktionen til at få den første tilsvarende værdi, men nogle gange vil du returnere alle matchende poster baseret på et specifikt kriterium. Denne artikel vil jeg tale om, hvordan man vlookup og returnerer alle matchende værdier lodret, vandret eller i en enkelt celle.
  • Vlookup og returner matchende data mellem to værdier i Excel
  • I Excel kan vi anvende den normale Vlookup-funktion for at få den tilsvarende værdi baseret på en given data. Men nogle gange vil vi vlookup og returnere den matchende værdi mellem to værdier som det følgende skærmbillede vist, hvordan kunne du håndtere denne opgave i Excel?

 


  • 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 og opbevaring af data; Split celler indhold; Kombiner duplikatrækker og sum / gennemsnit... 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 ...
  • Foretrukne og hurtigt indsætte formler, Områder, diagrammer og billeder; Krypter celler med adgangskode Opret postliste og send e-mails ...
  • 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...
  • Pivottabelgruppering efter ugenummer, ugedag og mere ... Vis ulåste, låste celler ved forskellige farver; Fremhæv celler, der har formel / navn...
kte-fane 201905
  • 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 (25)
Ingen vurderinger endnu. Vær den første til at bedømme!
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg prøvede præcis den samme formel; kopieret 100%. Det eneste, jeg ændrede, var, at dataene blev matchet og returneret. Når jeg bruger denne formel, siger Excel "Du har indtastet for mange argumenter til denne funktion).=INDEX('2020 Volume Report'!$B$3:$B$100,SMALL(IF(COUNTIF($A$1,'2020 Volume Report" Rapport'!$A$3:$A$100)*COUNTIF($A$3,'2020 Volume Report'!$D$3:$D$100),ROW('2020 Volume Report'!$A$3:$G$100)- MIN(ROW('2020 Volume Report'!$A$3:$G$100))+1,"0"),ROW(A1),COLUMN(A1))
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, Kan du give din data- og formelfejl som et skærmbillede her?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, hvordan kan jeg bruge det til vandret tilstand.
Denne kommentar blev minimeret af moderatoren på webstedet
Hvad er "0" efter +1 i formlen? Det er ikke i eksemplet.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej jeg havde prøvet samme formel. Jeg får et resultat, men når du giver CSE, giver det ikke flere svar
Denne kommentar blev minimeret af moderatoren på webstedet

Denne kommentar blev minimeret af moderatoren på webstedet
Angående returnering af flere matchende værdier baseret på et eller flere kriterier med matrixformler: Hvorfor er det, hvis jeg har dataene andre steder end at starte i A1, at det ikke virker, selvom jeg opdaterer alle cellereferencer i formlen?
Denne kommentar blev minimeret af moderatoren på webstedet
I det første eksempel, hvilken ændring af formlen ville være nødvendig for at returnere alle, der var mindre end 28 år gamle?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,

Jeg tænkte på, om det overhovedet er muligt at indtaste et 2. kriterium, men fra samme område som 1. kriteriet,

For eksempel med det brugte eksempel ovenfor vil jeg gerne søge efter navne på personer fra både Amerika og Frankrig. Så celle F3 ville have Frankrig, Scarlett & Andrew ville også udfyldes på listen i kolonne G

På forhånd tak for hjælpen.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej nick

Glad for at hjælpe. Hvis du ønsker at få navne på personer fra både Amerika og Frankrig, råder jeg dig til at bruge vores formel to gange for at få resultatet. Se venligst skærmbilledet, I F2 og G2 er værdierne "USA" og "Frankrig". Anvend formel =IFERROR(INDEX($B$2:$B$11, SMALL(IF($F$2=$D$2:$D$11, ROW($D$2:$D$11)-ROW($D$2)+1 ), ROW(1:1))),"" ) for at få resultaterne for Amerika. Og anvend formel =IFERROR(INDEX($B$2:$B$11, SMALL(IF($G$2=$D$2:$D$11, ROW($D$2:$D$11)-ROW($D$2)+ 1), ROW(1:1))),"" ) for at få resultaterne for Frankrig. Det er simpelt. Prøv venligst.

Med venlig hilsen,
Mandy
Denne kommentar blev minimeret af moderatoren på webstedet
Når jeg bruger den anden formel og trækker ned, vises der ikke noget. Formelresultatet (fx) siger, at det burde returnere noget, men det er tomt. Hvordan retter jeg dette?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Alysia,

Glad for at hjælpe. Jeg prøvede den anden formel i artiklen og træk formlen ned, resten af ​​resultaterne blev returneret. Jeg tror, ​​der kan være to årsager til dit problem. For det første glemmer du måske at trykke på Ctrl + Shift + Enter-tasterne for at indtaste formlen. For det andet er det matchende resultat kun ét, så ingen andre resultater returneres ikke. Få venligst en check.

Med venlig hilsen,
Mandy
Denne kommentar blev minimeret af moderatoren på webstedet
hej,
Jeg har prøvet at bruge formlen, og den genererer enten en værdi på 0 eller det vedhæftede billede
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Milku
Dit skærmbillede viste WPS-software af MAC-version, så jeg er ikke sikker på, om vores formel er tilgængelig.
Jeg har uploadet en Excel-fil her, du kan prøve at se om den kan beregne korrekt i dit miljø.
Tak!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
hvad der ville være nødvendigt for at udvide den første formel i følgende tilfælde:
Nogle ID'er er tomme (f.eks. er celle A5 tom), og jeg vil gerne have en ekstra betingelse, der kun udskriver linjer, når ID'erne ikke er tomme. (Så outputtet skulle da være James og Abdul.
Tak!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Jo,
For at løse dit problem skal du anvende nedenstående formel:
=INDEX($B$2:$B$11, SMALL(IF(COUNTIF($F$2, $C$2:$C$11)*COUNTIF($G$2, $D$2:$D$11)*($A$2:$A$11<>0), ROW($A$2:$D$11)-MIN(ROW($A$2:$D$11))+1), ROW(A1)), COLUMN(A1))

Tag en ry, håber det kan hjælpe dig!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,

Hvis jeg i celle H1 skriver "Navn" og ville forbinde det med formlen, hvordan ville det så virke?
Så kunne jeg skrive "ID" i celle H1 og ville automatisk få som et resultat: AA1004; DD1009; PP1023 (for den første formel)

På forhånd tak!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Marie
Beklager, jeg kan ikke forstå meningen med dit første problem. Kan du forklare dit problem mere klart og detaljeret? Eller du kan indsætte et skærmbillede her for at beskrive dit problem.
Hvad angår det andet spørgsmål, skal du bare ændre cellereferencen som denne:
=INDEX($A$2:$A$11, SMALL(IF(COUNTIF($F$2, $C$2:$C$11)*COUNTIF($G$2, $D$2:$D$11), ROW($A$2:$D$11)-MIN(ROW($A$2:$D$11))+1), ROW(A1)), COLUMN(A1))

Husk at trykke Ctrl + Skift + Enter nøgler sammen.
Prøv venligst, håber det kan hjælpe dig!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, tak for formlen. Det fungerede for "faste" værdier / tekst som kriterier. Et af de kriterier, jeg prøver at bruge, er imidlertid en betingelse (værdier <>0 ), men den fungerer ikke med den beskrevne formel. Ved I, hvad jeg skal ændre for at tilpasse formlen, så jeg kan have en betingelse som et af kriterierne, tak?

Bedst,

John
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Marcus
For at løse dit problem, se venligst denne artikel:
https://www.extendoffice.com/documents/excel/6393-excel-vlookup-function.html#b3-2
Der er nogle detaljerede forklaringer på denne opgave. Du skal bare ændre criteira til din egen.
Tak!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,

Først, tak fordi du deler!

Kan du give en løsning på sagen nedenfor:

Jeg har 3 kolonner (A: Indeholder referenceoplysninger, B: Indeholder information, der skal søges i, C: Søgeresultat)

Billed-url er angivet nedenfor

https://ibb.co/VHCd09K

Kolonne A-------------------------Søjle B------------Søjle C
Filnavn-------------------------Navn----------------Filnavn, Dokumentnavn, Elementnavn, navn
Ændret element-----------------Element--------------Ændret element, elementnavn, element-id
Kolonneplacering
dokumentnavn
Elementnavn
Navn
Boligtype
Garanti
Slope
Element-id

Det, jeg har brug for, er at søge i kolonne A efter ethvert partielt match med celle B2 (navn) eller B3 (element) og få resultatet i én celle,

Tak, Behzad
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Behzad
Måske kan nedenstående brugerdefinerede funktion hjælpe dig.
Public Function ConcatPartLookUp(rngInput As Range, rngSource As Range, Optional strDelimiter As String, Optional blCaseSensitive)
Dim rng As Range
If strDelimiter = "" Then strDelimiter = ","
If IsMissing(blCaseSensitive) Then
    blCaseSensitive = False
Else
    blCaseSensitive = True
End If
For Each rng In rngSource
    If blCaseSensitive Then
        If InStr(1, rng.Value, rngInput.Value, vbBinaryCompare) > 0 Then ConcatPartLookUp = ConcatPartLookUp & strDelimiter & rng.Value
    Else
        If InStr(1, rng.Value, rngInput.Value, vbTextCompare) > 0 Then ConcatPartLookUp = ConcatPartLookUp & strDelimiter & rng.Value
    End If
Next
If Len(ConcatPartLookUp) > 0 Then ConcatPartLookUp = Mid(ConcatPartLookUp, 2, Len(ConcatPartLookUp))
End Function


Efter at have kopieret og indsat denne kode, og brug derefter denne formel:=ConcatPartLookUp(B2,$A$2:$A$8) for at få det resultat, du har brug for.
Prøv venligst, håber det kan hjælpe dig!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,

Tak for at poste disse eksempler.
Jeg forsøger at implementere dette i mit eget ark, men får det ikke til at virke (måske fordi jeg bruger en europaversion af excel)?

Jeg vil gerne have datoen for de dage, hvor jeg havde mine vagter, eller at jeg har arbejdet 'nogle' (>0) timer for en klient.

Så i I3 er navnet og i J3 måneden. K3 og L3 er skift (1 er arbejdet) og timer (ved ikke hvordan man indstiller dette, bør være mere end nul)

Mine forventede resultater er i:
Skift: I7 og I8
timer: J7

Så jeg arbejdede mere end 0 timer for 'person 2' i oktober den 3-10-2022
havde vagter for person 2 den '10-10-2022' og 28-10-2022

Når jeg tilføjer '=INDEX($B$2:$B$11, SMALL(IF(COUNTIF($F$2, $C$2:$C$11)*COUNTIF($G$2, $D$2:$D$11), ROW ($A$2:$D$11)-MIN(ROW($A$2:$D$11))+1), ROW(A1)), COLUMN(A1))' i mit excel-ark, tillader det ikke komma mellem de forskellige dele af formlen.
Så jeg er nødt til at ændre dem til ';'.
Men når jeg prøver det står der altid: '#NAVN?'

Så kan nogen hjælpe mig med dette?

Med venlig hilsen

Bas
[img]https://drive.google.com/file/d/1iIPQKuj_PNhqWyWlwJ4IQTqGNEd6B9Hw/view?usp=share_link[/img]
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, hvis der er duplikerede værdier (f.eks. to adams), hvordan sikrer jeg mig, at det kun returnerer 1 adam og ikke 2?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, Bobby,
For kun at udtrække unikke matchende værdier, skal du anvende nedenstående formel:
Når du har indsat formlen, skal du trykke på Ctrl + Skift + Enter tasterne sammen for at få det korrekte resultat.
=IFERROR(INDEX($B$2:$B$5, MATCH(0, COUNTIF(H1:$H$1, $B$2:$B$5)+IF($D$2:$D$5<>$G$2, 1 , 0)+IF($C$2:$C$5<>$F$2, 1, 0), 0)), "")

Prøv venligst, håber det kan hjælpe dig!
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