Ошибка совпадения Excel в разреженном диапазоне с дублирующимися ключами - PullRequest
0 голосов
/ 02 марта 2010

Данные в TheRange равны {1,"",1,"",1,"",1,"",2}.

  • =Match(2, TheRange, 1) возвращает 9 как ожидалось.

  • =Match(1.5, TheRange, 1) возвращает 7 как ожидалось.

  • =Match(1, TheRange, 1) возвращает 5, что не ожидается.

Кто-нибудь сталкивался с этим? У кого-нибудь есть починка?

Кроме того, если я использую Worksheet.Function.Match в VBA, я получаю более неожиданные результаты.

Ответы [ 2 ]

3 голосов
/ 02 марта 2010

Если вы укажете 1 для аргумента «match_type» (3-й аргумент для MATCH), то Excel ожидает сортировки массива. Очевидно, Excel выполняет двоичный поиск значения - начиная с середины и находя среднее значение (которое является 5-м значением в вашем случае) при поиске 1.

Если вы укажете 0 для «match_type», вы получите то, что ожидаете - по крайней мере, для этого случая. См. Документацию для функции MATCH для получения дополнительной информации.

0 голосов
/ 06 апреля 2010

Один из способов решить эту проблему - превратить пробелы в ошибки.

Попробуйте эту формулу:

=MATCH(1/(2),1/$A$1:$A$9,-1)
=MATCH(1/(1.5),1/$A$1:$A$9,-1)
=MATCH(1/(1),1/$A$1:$A$9,-1)

Это формулы массива, поэтому, когда вы вводите их, вы должны подтвердить их нажатием «ctrl + shift + enter» вместо «enter».

...