=INDEX($H:$H,AGGREGATE(15,6,ROW($G$1:$G$7)/(--(FIND($G$1:$G$7,$A2)=1)*--(LEN($G$1:$G$7)>0)),1),1)
При разборе этого значения INDEX
получает элемент N th из столбца H (название компании). Чтобы найти значение N , мы используем AGGREGATE
функция
AGGREGATE
- странная функция - она позволяет нам используйте такие вещи, как MAX
или LARGE
или SUM
, игнорируя любые значения ошибок. В этом случае мы будем использовать его для SMALL
(первый аргумент, 15
), игнорируя значения ошибок (второй аргумент, 6
). Нам понадобится очень наименьшее значение, поэтому четвертый аргумент будет 1
. (Если бы мы хотели второе наименьшее, это было бы 2
и т. Д.)
=INDEX($H:$H,AGGREGATE(15,6, <SOMETHING> ,1),1)
Итак, все, что нам сейчас нужно, это список значений для сравнения! Чтобы упростить задачу немного , я выделю вам этот фрагмент кода здесь:
ROW($G$1:$G$7) / (--(FIND($G$1:$G$7,$A2)=1) * --(LEN($G$1:$G$7)>0))
Здесь есть 3 части. Первое, ROW($G$1:$G$7)
- это фактическое значение, которое мы хотим получить - это будут номера строк для каждого префикса, соответствующего вашему значению. Однако сам по себе это будет все номеров строк. Поскольку мы пропускаем ошибки, мы хотим, чтобы любые строки, которые не соответствовали префиксу, выдавали ошибку. Самый простой способ сделать это - разделить на ноль
В начале --(FIND($G$1:$G$7,$A2)=1)
и --(LEN($G$1:$G$7)>0)
мы имеем двойной отрицательный результат. Это быстрый способ конвертировать True
и False
в 1
и 0
. Только когда оба теста равны True
, мы не разделим на 0
, как показано в этой таблице:
A | B | A*B
1 | 1 | 1
1 | 0 | 0
0 | 1 | 0
0 | 0 | 0
Начиная сначала со второго теста (это проще), мы имеем LEN($G$1:$G$7)>0
- в основном "не смотрите на пустые ячейки".
Другой тест (FIND($G$1:$G$7,$A2)=1
) будет искать префикс в Con No и возвращать, где он найден (или * 1061). * ошибка, если не ). Затем мы проверяем «это в позиции 1» - другими словами, «Это в начале« Кон номер », а не в середине». Мы не хотим говорить, что Con No CNQ6060
является частью Company AA вместо Company BB по ошибке!
Итак, если префикс находится в начале номера Con, И он не пустой (потому что существует бесконечное количество ничего до, после и между каждым числом и буквой), тогда мы добавляем его в наш список строк. Затем мы берем наименьшую строку (т. Е. Ближайшую к верху - изменим AGGREGATE(15
на AGGREGATE(14
, если вы хотите ближайшую к нижней части!) И используем ее для получения названия компании