Нахождение следующего более высокого значения в столбце

389
Monika Grigorova

У меня есть две колонки, Aи B. Столбец Bимеет значения, которые мне нужно посмотреть в столбце A. Однако мне не нужно находить точное соответствующее значение, мне нужно следующее более высокое значение.

Например:

Column A Column B   2 3 4 4 5 5 7 6 8 8 9 9 

Итак, для значения 5в столбце Bя хочу вернуться 7из столбца A.

Я думаю, что мне, вероятно, нужна какая-то функция поиска / сопоставления индекса, но я не смог написать формулу сам.

1
Ваши данные всегда будут отсортированы? BruceWayne 6 лет назад 1
Я думаю, что вы ищете значение в столбце A, которое является следующим значением больше, чем значение, которое вы ищете. Если все значения являются целыми числами, и вы не можете сортировать, вы можете вычислить B + 1-A и искать наименьшее значение> = 0. Xalorous 6 лет назад 0
@Xalorous Это немного сложнее, чем для несортированного столбца `A`. Нахождение наименьшего значения с помощью функции поиска или `MATCH ()` *** требует *** столбца для сортировки. Это * можно * сделать, но вам нужно использовать формулу массива, функцию `SMALL ()` и некоторые хитрости. robinCTS 6 лет назад 0
Привет всем, столбцы действительно могут быть отсортированы, для них не требуется, чтобы они оставались в том же порядке. Monika Grigorova 6 лет назад 0

2 ответа на вопрос

2
robinCTS

отсортированный

Самая простая формула для случая, когда столбец Aотсортирован в порядке возрастания:

Worksheet Screenshot

Введите следующую формулу C1и ctrl-enter / copy-paste / fill-down / auto-fill в оставшуюся часть столбца таблицы:

=INDEX(A:A,1+MATCH(B1,A:A,1)) 

Объяснение:

1В качестве третьего аргумента MATCH()означает, что он находит наибольшее значение, которое меньше или равно первый аргумент. Добавление 1к этому индексу приводит к индексу следующего более высокого числа. Затем INDEX()функция извлекает номер.

Обратите внимание, что я добавил дополнительное значение в конце столбца A. Это для особого случая, когда нет следующего более высокого значения.


несортированный

Для случая, когда столбец Aне отсортирован (также работает, если отсортирован), формула немного сложнее:

Массив введите ( Ctrl+ Shift+ Enter) следующую формулу в C1и скопируйте-вставьте / заполните в оставшуюся часть столбца таблицы (не забудьте удалить {и }):

{=SMALL(IF($A$1:$A$6>B1,$A$1:$A$6),1)} 

Объяснение:

Функция возвращает п - ю наименьшее значение массива, игнорируя логические значения . По умолчанию для третьего аргумента функции проверяются только значения, превышающие значение в столбце, что приводит к следующему более высокому значению.SMALL(array,n)IF()FALSEB

Обратите внимание, что специальное завершающее значение для столбца Aне требуется, так как #NUM!ошибка является результатом, если в столбце нет значений, Aпревышающих значение в столбце B.


Наконец, как указал авантюрин, существует альтернативная, аналогичная формула, которая работает независимо от сортировки (но с важным предостережением).

Для Excel 2016+:

=MINIFS($A$1:$A$6,$A$1:$A$6,">"&B1) 

Это работает, потому что MINIFS()функция отфильтровывает значения, которые не соответствуют критериям, перед извлечением минимального значения.

Для более ранних версий Excel:

{=MIN(IF($A$1:$A$6>B1,$A$1:$A$6))} 

Это работает по той же причине, что и SMALL()функция - она ​​игнорирует логические значения, сгенерированные IF()функцией.

Предостережение:

Как =MINIFS()и {=MIN(IF())}формулы не будут работать правильно, если ноль может быть правильным следующее более высокое значение, так как ноль и возвращается, когда нет нет рядом более высокое значение. (Это та же самая причина добавления дополнительного значения в конце столбца Aдля первой формулы - эта формула также возвращает ноль, если нет более высоких значений.)

Возвращает ли `MATCH ()` адрес ячейки или значение? Xalorous 6 лет назад 0
@Xalorous - `MATCH ()` возвращает номер строки. Index возвращает значение из этого номера строки. BruceWayne 6 лет назад 1
@Xalorous `MATCH ()` возвращает основанный на 1 индекс в диапазоне второго аргумента. Это оказывается номером строки, если диапазон представляет собой целый столбец. robinCTS 6 лет назад 1
0
aventurin

Вы можете использовать, например, функцию массива {=MIN(IF(A1:A6 > B1; A1:A6))}или {=MIN(IF(A1:A6 > B1; A1:A6; 1000))}(с 1000 в качестве запасного значения).

Он принимает минимум всех значений из столбца A, превышающих значение текущей ячейки из столбца B (здесь B1). Поэтому ни один из столбцов не должен быть отсортирован.

С Excel> = 2016 вы также можете использовать эту MINIFSфункцию.

Обратите внимание, что функции массива должны быть вставлены нажатием Ctrl+Shift+Enter.

Похожие вопросы