Excel-formel: Tvåvägs ungefärliga matchning flera kriterier -

Innehållsförteckning

Sammanfattning

För att utföra en tvåvägs ungefärlig matchning med flera kriterier kan du använda en matrisformel baserad på INDEX och MATCH, med hjälp av IF-funktionen för att tillämpa kriterier. I exemplet som visas är formeln i K8:

=INDEX(data,MATCH(K6,IF(material=K5,hardness),1),MATCH(K7,diameter,1))

där data (D6: H16), diameter (D5: H5), material (B6: B16) och hårdhet (C6: C16) är angivna områden som endast används för bekvämlighet.

Obs: detta är en matrisformel och måste anges med Control + Shift + Enter

Förklaring

Målet är att leta efter en matningshastighet baserat på material, hårdhet och borrdiameter. Matningstaktvärden är i de nämnda avståndsuppgifter (D6: H16).

Detta kan göras med en tvåvägs INDEX- och MATCH-formel. En MATCH-funktion räknar ut radnumret (material och hårdhet), och den andra MATCH-funktionen hittar kolumnnumret (diameter). INDEX-funktionen returnerar det slutliga resultatet.

I exemplet som visas är formeln i K8:

=INDEX(data, MATCH(K6,IF(material=K5,hardness),1), // get row MATCH(K7,diameter,1)) // get column

(Radbrytningar har lagts till för läsbarhet endast).

Det knepiga är att material och hårdhet måste hanteras tillsammans. Vi måste begränsa MATCH till hårdhetsvärdena för ett visst material (lågkolstål i exemplet som visas).

Vi kan göra detta med IF-funktionen. I huvudsak använder vi IF för att "kasta bort" irrelevanta värden innan vi letar efter en matchning.

Detaljer

INDEX funktionen ges de nämnda avståndsuppgifter (D6: H16) som för array. Den första MATCH-funktionen räknar ut radnumret:

MATCH(K6,IF(material=K5,hardness),1) // get row num

För att hitta rätt rad måste vi göra en exakt matchning på material och en ungefärlig matchning på hårdhet. Vi gör detta genom att använda IF-funktionen för att först filtrera bort irrelevant hårdhet:

IF(material=K5,hardness) // filter

Vi testar alla värden i material (B6: B16) för att se om de matchar värdet i K5 ("Low Carbon Steel"). I så fall skickas hårdhetsvärdet igenom. Om inte, returnerar FALSKT. Resultatet är en array som denna:

(FALSE;FALSE;FALSE;85;125;175;225;FALSE;FALSE;FALSE;FALSE)

Observera att de enda överlevande värdena är de som är associerade med lågkolstål. De andra värdena är nu FALSE. Denna matris returneras direkt till MATCH-funktionen som uppslagningsmatris.

Sökningsvärdet för matchning kommer från K6, som innehåller den givna hårdheten, 176. MATCH konfigureras för ungefärlig matchning genom att ställa in match_type till 1. Med dessa inställningar ignorerar MATCH FALSE-värden och returnerar positionen för en exakt matchning eller nästa minsta värde .

Obs: hårdhetsvärdena måste sorteras i stigande ordning för varje material.

Med hårdhet angiven 176 returnerar MATCH 6, levereras direkt till INDEX som radnummer. Vi kan nu skriva om den ursprungliga formeln så här:

=INDEX(data,6,MATCH(K7,diameter,1))

Den andra MATCH-formeln hittar rätt kolumnnummer genom att utföra en ungefärlig matchning på diametern:

MATCH(K7,diameter,1) // get column num

Obs: värden i diameter D5: H5 måste sorteras i stigande ordning.

Uppslagsvärdet kommer från K7 (0,75), och uppslagnings är det namngivna området diameter (D5: H5).

Som tidigare är MATCH inställd på ungefärlig matchning genom att ställa match_type till 1.

Med diametern 0,75 returnerar MATCH 3, levereras direkt till INDEX-funktionen som kolumnnummer. Den ursprungliga formeln löser nu:

=INDEX(data,6,3) // returns 0.015

INDEX returnerar ett slutresultat på 0,015, värdet från F11.

Intressanta artiklar...