Екцел формула: Пронађите најближе подударање -

Преглед садржаја

Генеричка формула

(=INDEX(data,MATCH(MIN(ABS(data-value)),ABS(data-value),0)))

Резиме

Да бисте пронашли најближе подударање у нумеричким подацима, можете да користите ИНДЕКС и МАТЦХ, уз помоћ функција АБС и МИН. У приказаном примеру, формула у Ф5, копирана доле, је:

=INDEX(trip,MATCH(MIN(ABS(cost-E5)),ABS(cost-E5),0))

где су путовање (Б5: Б14) и трошак (Ц5: Ц14) именовани опсези.

У Ф5, Ф6 и Ф7, формула враћа путовање најближе по цени на 500, 1000 и 1500, респективно.

Напомена: ово је формула низа и мора се унети са цонтрол + схифт + ентер, осим у програму Екцел 365.

Објашњење

У основи је ово ИНДЕКС и МАТЦХ формула: МАТЦХ лоцира позицију најближег подударања, храни позицију ИНДЕКС и ИНДЕКС враћа вредност на тој позицији у колони Трип. Напоран рад се обавља са функцијом МАТЦХ, која је пажљиво конфигурисана тако да одговара „минималној разлици“ овако:

MATCH(MIN(ABS(cost-E5)),ABS(cost-E5),0)

Узимајући ствари корак по корак, вредност претраживања израчунава се са МИН и АБС овако:

MIN(ABS(cost-E5)

Прво се вредност у Е5 одузима од именоване цене опсега (Ц5: Ц14). Ово је операција низа, а пошто у опсегу има 10 вредности, резултат је низ са 10 вредности попут ове:

(899;199;250;-201;495;1000;450;-101;500;795)

Ови бројеви представљају разлику између сваког трошка у Ц5: Ц15 и трошкова у ћелији Е5, 700. Неке вредности су негативне, јер је трошак нижи од броја у Е5. За претварање негативних вредности у позитивне вредности користимо функцију АБС:

ABS((899;199;250;-201;495;1000;450;-101;500;795))

који се враћа:

(899;199;250;201;495;1000;450;101;500;795)

Тражимо најближе подударање, па користимо функцију МИН да пронађемо најмању разлику, која је 101:

MIN((899;199;250;201;495;1000;450;101;500;795)) // returns 101

Ово постаје вредност претраживања унутар МАТЦХ. Прегледни низ се генерише као и раније:

ABS(cost-E5) // generate lookup array

који враћа исти низ који смо раније видели:

(899;199;250;201;495;1000;450;101;500;795)

Сада имамо оно што нам треба за проналажење положаја најближег подударања (најмања разлика), а део МАТЦХ формуле можемо преписати овако:

MATCH(101,(899;199;250;201;495;1000;450;101;500;795),0) // returns 8

Са 101 као вредност претраживања, МАТЦХ враћа 8, јер је 101 на 8. месту у пољу. Коначно, ова позиција се уводи у ИНДЕКС као аргумент реда, а именовано путовање домета као низ:

=INDEX(trip,8)

и ИНДЕКС враћа осмо путовање у низу, „Шпанија“. Када се формула копира у ћелије Ф6 и Ф7, проналази најближе подударање са 1000 и 1500, „Француска“ и „Тајланд“, као што је приказано.

Напомена: ако постоји нерешено, ова формула враћа први меч.

Уз КСЛООКУП

Функција КСЛООКУП пружа занимљив начин за решавање овог проблема, јер тип подударања 1 (тачно подударање или следеће највеће) или -1 (тачно подударање или следеће најмање) не захтева сортирање података. То значи да можемо написати формулу попут ове:

=XLOOKUP(0,ABS(cost-E5),trip,,1)

Као и горе, користимо апсолутну вредност (цост-Е5) за креирање низа претраживања:

(899;199;250;201;495;1000;450;101;500;795)

Затим конфигуришемо КСЛООКУП да тражи нулу, са типом подударања постављеним на 1, за тачно подударање или следеће највеће. Именовано путовање испоручујемо као повратни низ, тако да је резултат „Шпанија“ као и раније.

Занимљиви Чланци...