
Общая формула
=XLOOKUP(neworder,oldorder,XLOOKUP(val,lookup,results))
Резюме
XLOOKUP можно использовать для изменения порядка столбцов, вложив один XLOOKUP в другой. В показанном примере формула в G9:
=XLOOKUP(G8:J8,B4:E4,XLOOKUP(G5,E5:E15,B5:E15))
Что возвращает совпадение со значением в G5 со всеми 4 полями в другой последовательности.
Объяснение
В этой формуле XLOOKUP используется дважды, вложив один XLOOKUP в другой. Первый (внутренний) XLOOKUP используется для поиска точного совпадения значения в G5:
XLOOKUP(G5,E5:E15,B5:E15)
- Lookup_value поступает из ячейки G5.
- Lookup_array - E5: E15 (коды)
- Return_array - B5: E15 (все поля)
- Match_mode не указан и по умолчанию равен 1 (точное совпадение)
- Search_mode не предоставляется и по умолчанию равен 1 (от первого до последнего)
Результатом является соответствие "AX-160", возвращенное как массив всех четырех полей в исходном порядке:
(160,130,60,"AX-160")
Этот результат доставляется непосредственно во второй (внешний) XLOOKUP в качестве аргумента возвращаемого массива. Значение поиска предоставляется как диапазон, представляющий новый порядок полей, а массив поиска - это диапазон, содержащий исходный порядок имен полей.
=XLOOKUP(G8:J8,B4:E4,(160,130,60,"AX-160"))
- Lookup_value - это диапазон G8: J8 (новый порядок полей)
- Lookup_array - это диапазон B4: E4 (старый порядок полей)
- Return_array - это результат первого XLOOKUP
Это сложный момент. Мы передаем несколько значений поиска, поэтому XLOOKUP внутренне вычислит несколько позиций совпадений. Для каждого значения в новом диапазоне порядка полей XLOOKUP найдет позицию внутри старого диапазона порядка полей и будет использовать эту позицию для извлечения значения из возвращаемого массива (значений, возвращаемых первой функцией XLOOKUP). Результат - исходный результат поиска с полями, расположенными в новом порядке.