Как получить второе по величине значение в столбце - PullRequest
0 голосов
/ 24 января 2020

Недавно я обнаружил функции листа LARGE и SMALL, которые можно использовать для определения первого, второго, третьего, ... значений наименьшего значения в массиве.

По крайней мере, это то, что я думал:
При взгляде на массив [1, 3, 5, 7, 9] (в одном столбце или строке), LARGE(...;2) дает 7, как и ожидалось, но:
При взгляде на массив [1, 1, 5, 9, 9], Я ожидаю, что LARGE(...;2) даст 5, но вместо этого я получу 9.

Теперь это имеет смысл: кажется, что функция LARGE(...;2) принимает самую большую запись в массиве (значение 9 в последнем, но одном месте), удаляет это и дает доступ к записи сокращенного массива (который все еще содержит еще 9), но это не то, чего можно ожидать интуитивно.

Для того, чтобы получить 5 из [1, 1, 5, 9, 9], мне нужно что-то вроде:

=LARGE_OF_UNIQUE_VALUES_OF(...;2))

Я не нашел этого в LARGE документации.

Кто-нибудь знает простой способ добиться этого

Ответы [ 2 ]

2 голосов
/ 24 января 2020

Если у вас есть новые формулы Dynami c Array:

=LARGE(UNIQUE(...),2)

Если не использовать AGGREGATE:

=AGGREGATE(14,7,A1:A5/(MATCH(A1:A5,A1:A5)=ROW(A1:A5)),2)

enter image description here

0 голосов
/ 24 января 2020

Это что-то вроде хака.

=LARGE(IF(YOUR_DATA=LARGE(YOUR_DATA,1),SMALL(YOUR_DATA,1)-1,YOUR_DATA),1)

Идея состоит в том, чтобы (а) взять любое значение в ваших данных, равное наибольшему элементу, и установить для него значение меньше, чем наименьший элемент, а затем (б) найти (новый) наибольший элемент , Это нормально, если вы хотите 2-й по величине, но простирающийся до 3-го по величине et c. становится все хуже и хуже.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...