Таблицы Google - объедините несколько функций ЕСЛИ в одну ячейку

Я пытаюсь создать артикул в Google Таблицах для продукта, используя значения трех вариантов (Заголовок, Цвет и Размер)

Это «Легкие кроссовки» в цветовых вариантах «Красный» и «Синий», а также в размерах от 5 до 12.

Ссылка на таблицу

https://docs.google.com/spreadsheets/d/1trq0X3MjR-n2THFnT8gYYlwKscnQavCeeZ8L-ifYaHw/edit?usp=sharing

Цель

Я надеюсь, что у меня будет артикул, в котором будет отображаться товар, цветовой вариант и размер обуви. Пример: LW-1-8 (Легкие кроссовки, красный цвет, размер 8)

Продукт представляет собой легкие кроссовки стоимостью LW.

Вариант цвета «Красный» со значением 1 и «Синий» со значением 2.

Вариант размера обуви = число от 5 до 12.

Вот что у меня есть до сих пор, объединяя варианты цвета и размера.

=IFS(I2="Red",1,I2="Blue",2)&"-"& IFS(K2="5",5,K2="6",6,K2="7",7,K2="8",8,K2="9",9,K2="10",10,K2="11",11,K2="12",12)

Однако я застреваю при объединении данных в столбце B с помощью этой функции.

Мы будем очень благодарны за любую помощь в объединении этих данных из нескольких ячеек в одну.


person Tom    schedule 20.01.2021    source источник


Ответы (2)


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

попробуйте в N2:

=IFS(I2="Red",1,I2="Blue",2)&"-"& 
 IFS(K2=5,5,K2=6,6,K2=7,7,K2=8,8,K2=9,9,K2=10,10,K2=11,11,K2=12,12)

или используйте:

=IF(I2="red", 1, IF(I2="blue", 2, )&IF((K5>=5)*(K5<=12), "-"&K5, )
person player0    schedule 20.01.2021
comment
Спасибо за вашу помощь - =IFS(I2="Red",1,I2="Blue",2)&"-"& IFS(K2=5,5,K2=6,6,K2=7,7,K2=8,8,K2=9,9,K2=10,10,K2=11,11,K2=12,12) отлично работает, чтобы объединить данные в столбцах «I» и «K» - Как мне объединить это с данными (название продукта) в столбце «B»? Пример токового выхода 2-5 Пример желаемого выхода LW-2-5 - person Tom; 20.01.2021
comment
попробуйте: =IF(B2="Lightweight Trainers", "LW-"&IFS(I2="Red",1,I2="Blue",2)&"-"& IFS(K2=5,5,K2=6,6,K2=7,7,K2=8,8,K2=9,9,K2=10,10,K2=10.5, 150,K2=11,11,K2=11.5, 150,K2=12,12) - person player0; 20.01.2021
comment
Большое спасибо @ player0! - person Tom; 20.01.2021