TL;DR
=ARRAYFORMULA(IF(B2:B<>"", IFS(B2:B="Lightweight Trainers", "LW")&"-"&IFS(I2:I="Blue", 1, I2:I="Red", 2)&"-"&K2:K,))
Отвечать
В основном вы хотите:
<title>-<color number>-<shoe size>
Чтобы преобразовать это в функцию, мы можем разделить ее на каждую часть и выполнить ее шаг за шагом:
Шаг 1: Заголовок. Для первой части - заголовка - нам нужно сопоставить значение с сокращением. Достаточно простого списка в IFS
.
IFS(B2="Lightweight Trainers", "LW")
Очевидно, что на данный момент у него есть только одно значение (Легкие тренеры), но вы можете добавить больше:
IFS(B2="Lightweight Trainers", "LW", B2="Heavyweight Trainers", "HW")
Шаг 2: номер цвета Как и в предыдущем шаге, это сопоставление с использованием ifs:
IFS(I2="Blue", "-1", I2="Red", "-2")
Тире добавляется, поэтому при добавлении всего он будет только в том случае, если
Шаг 3: размер обуви. В этом случае мы можем просто получить значение:
K2
Шаг 4. Сложение всего вместе Нам нужно только добавить это с дефисами между ними:
=IFS(B2="Lightweight Trainers", "LW")&"-"&IFS(I2="Blue", 1, I2="Red", 2)&"-"&K2
Шаг 5. Автоматическое расширение на весь столбец
Мы будем использовать ARRAYFORMULA
, чтобы добавить одну формулу в первую ячейку и автоматически расширить ее на весь столбец. Сначала мы добавляем его к уже имеющейся формуле, а затем расширяем диапазоны на весь столбец:
=ARRAYFORMULA(IFS(B2:B="Lightweight Trainers", "LW")&"-"&IFS(I2:I="Blue", 1, I2:I="Red", 2)&"-"&K2:K)
Не забудьте удалить все значения в столбце, чтобы формула массива не переопределяла их (это привело бы к ошибке).
Как видите, формула генерирует ошибки для строк, у которых нет значений. Хороший способ справиться с этим случаем - отфильтровать строки без заголовка. В одной строке будет:
=IF(B2<>"", [the entire formula],)
Обратите внимание на последнюю запятую.
Итак, собрать все вместе и расширить диапазон до столбца:
=ARRAYFORMULA(IF(B2:B<>"", IFS(B2:B="Lightweight Trainers", "LW")&"-"&IFS(I2:I="Blue", 1, I2:I="Red", 2)&"-"&K2:K,))
Добавление этого в N2
должно работать.
Заключительные примечания
Кажется, что вы используете 150, когда размер - это не целое число. Если вы хотите сохранить эту функциональность, вы можете использовать:
IF(K2-int(K2)=0, K2, 150)
На последнем компоненте так же разверните его.
Вы также можете предотвратить появление двух тире при отсутствии значения (LW-5
вместо LW--5
). Для этого я бы рекомендовал добавлять его к каждому компоненту, а не к формуле, которая их складывает.
использованная литература
person
Martí
schedule
20.01.2021