Интересная проблема, решаемая без добавления вспомогательных столбцов ...
Вот что я бы сделал:
=INDEX(
FREQUENCY(
$A$2:$A$10,
RIGHT($C$2:$C$13,LEN($C$2:$C$13)-1)-1
),
MATCH($C2,$C$2:$C$13,0)
)
Я начну с внутренней функции и буду работать наружу.
RIGHT($C$2:$C$13,LEN($C$2:$C$13)-1)-1
Это берет строки в столбце "Weight (upto)" (например, "<1000"), удаляет символ "<" и минус 1 из результата (999, потому что мы хотим, чтобы "меньше" 1000, не "меньше или равно" 1000). </p>
Затем функция FREQUENCY принимает 2 аргумента.
Первый - это наш диапазон фактических весов.
Второе - это массив различных значений отсечения для групп, в которые нужно поместить эти веса (это то, что мы только что создали с помощью приведенной выше формулы).
Поскольку FREQUENCY возвращает массив счетчиков, мы должны использовать INDEX, чтобы выбрать, какое именно значение в массиве мы хотим вернуть.
Первым аргументом INDEX является массив значений, возвращаемых по частоте.
Второй - это индекс значения, которое мы хотим вернуть. Есть несколько способов, которыми мы могли бы достичь этого:
Мы могли бы использовать ROW () - 1, но тогда, если вы каждый раз переместите свой стол с вершины листа, он сломается.
Мы могли бы добавить вспомогательный столбец (содержащий инкрементные числа) для записи «Индекса веса», однако я хотел бы свести к минимуму количество вспомогательных столбцов, где это возможно, и в этом случае существует довольно простой обход: MATCH
Мы просто используем MATCH, чтобы вернуть индекс текущей группы весов в списке весов:
MATCH(<the current weight group>, <the complete weight group range>, <0 means we are looking for an exact match>)
Надеюсь, это имеет смысл. Все становится сложнее, когда вы попадаете в массивы. Если вам нужны дальнейшие разъяснения, пожалуйста, дайте мне знать.