Excel-formel: Indeks og samsvar på flere kolonner -

Generisk formel

(=INDEX(rng1,MATCH(1,MMULT(--(rng2=critera),TRANSPOSE(COLUMN(rng2)^0)),0)))

Sammendrag

For å slå opp en verdi ved å matche på tvers av flere kolonner, kan du bruke en matriseformel basert på MMULT, TRANSPOSE, COLUMN og INDEX. I eksemplet vist er formelen i H4:

(=INDEX(groups,MATCH(1,MMULT(--(names=G4),TRANSPOSE(COLUMN(names)^0)),0)))

der "navn" er det navngitte området C4: E7, og "grupper" er det navngitte området B4: B7. Formelen returnerer gruppen som hvert navn tilhører.

Merk: dette er en matriseformel og må angis med kontrollskift.

Forklaring

Arbeidet fra innsiden og ut, de logiske kriteriene som brukes i denne formelen er:

--(names=G4)

hvor navn er det navngitte området C4: E7. Dette genererer et SANT / FALSE-resultat for hver verdi i data, og det dobbelte negative tvinger de SANNE FALSE-verdiene til 1 og 0 for å gi en matrise som dette:

(0,0,0;1,0,0;0,0,0;0,0,0)

Denne matrisen er 4 rader med 3 kolonner, som samsvarer med strukturen til "navn".

En annen matrise opprettes med dette uttrykket:

TRANSPOSE(COLUMN(names)^0))

COLUMN-funksjonen brukes til å lage en numerisk matrise med 3 kolonner og 1 rad, og TRANSPOSE konverterer denne matrisen til 1 kolonne og 3 rader. Å heve til kraften null konverterer ganske enkelt alle tall i matrisen til 1. MMULT-funksjonen brukes deretter til å utføre matrisemultiplikasjon:

MMULT((0,0,0;1,0,0;0,0,0;0,0,0),(1;1;1))

og det resulterende går inn i MATCH-funksjonen som matrise, med 1 som oppslagsverdi:

MATCH(1,(0;1;0;0),0)

MATCH-funksjonen returnerer posisjonen til den første kampen, som tilsvarer raden i den første matchende raden som oppfyller kriteriene. Dette mates inn i INDEX som radnummer, med det navngitte området "grupper" som matrise:

=INDEX(groups,2)

Til slutt returnerer INDEX "Bear", gruppen Adam tilhører.

Bokstavelig inneholder for kriterier

For å se etter spesifikke tekstverdier i stedet for en eksakt samsvar, kan du bruke funksjonene ISNUMBER og SØK sammen. For eksempel, for å matche celler som inneholder "apple", kan du bruke:

=ISNUMBER(SEARCH("apple",data))

Denne formelen er forklart her.

Gode ​​lenker

Stackoverflow svar av XOR LX

Interessante artikler...