2011-02-04 3 views
1

Я использую Excel для сопоставления оценок склонности (не лучший инструмент для этого, я знаю, но это назначение).MATCH() возвращает только одно из двух значений в Excel

Я использую MATCH(), чтобы найти запись в шкафу colO (это буква O) для входа в colM. Мой вызов работает правильно в libreoffice, но не в Excel. Все значения в colO и colM являются вероятностями (то есть между нулем и одним включительно).

=MATCH(M11, O$11:O$60, 1) 

Если значение в Colm равен нулю, то MATCH() возвращает 28, которая также находится в Colo ноль. Если значение в colM больше нуля, то MATCH() возвращает 50, что является наименьшим ненулевым значением в colO.

Любые идеи? Обычно я не использую Excel. О, а вот верх этих колонок:

propensity health w/o vaccine propensity match 
0     2   0.393115219 28 
0     1   0.280598404 28 
0.747918388  0   0    50 
0.843491818  0   0    50 
0.707782271  0   0    50 
0.829627573  0   0    50 
0.515298454  0   0    50 
0.464636469  0   0    50 
0.705333684  0   0    50 
0     3   0.641132271 28 
0     4   0.366445099 28 
0.590387706  0   0    50 
0.859441341  0   0    50 
0     2   0.304260844 28 
0     3   0.725971617 28 

ответ

1

При использовании 1 или -1 (не ноль) в качестве третьего аргумента MATCH, столбец O должен быть отсортирован. Если вы хотите, чтобы найти ближайший матч на несортированном список, вам нужно использовать формулу массива

=MATCH(MIN(ABS(M11-$O$11:$O$25)),ABS(M11-$O$11:$O$25),FALSE) 

Введите формулу массива с Control + Shift + Enter, а не просто войти. Excel поместит фигурные скобки вокруг формулы.

Первый аргумент находит минимальную разницу между M11 и каждым значением в столбце O. Второй аргумент представляет собой полный список всех различий. MATCH соответствует этому минимальному значению для полного списка и возвращает строку, на которой он найден. Я получаю

3 
3 
15 
15 
15 
15 
1 
1 
15 
3 
3 
10 
15 
3 
3 

Какой на первый взгляд выглядит правильно. Измените $ O $ 25 в формуле до конца ваших данных в столбце O.

+0

Спасибо! Я не знал, что их нужно сортировать. Мне нужно следующее нижнее совпадение, поэтому я должен использовать 'IF()' вместо 'ABS()'. –