Google Sheets - 将多个 IF 函数合并到一个单元格中

问题描述

我正在尝试使用三种变体的值在 Google 表格中为产品生成 SKU标题、颜色和尺寸)

该产品为“轻量运动鞋”,颜色有“红色”和“蓝色”,尺码范围为 5 - 12。

电子表格链接

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

目标

我希望有一个显示产品、颜色变体和鞋码的 SKU。 示例: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 列中的数据时遇到了困难。

任何将来自多个单元格的数据合并为一个的帮助将不胜感激。

解决方法

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",2)&"-"&K2

第 5 步:自动扩展整列

我们将使用 ARRAYFORMULA 将单个公式添加到第一个单元格并使其自动扩展到整个列。我们首先将它添加到我们已有的公式中,然后将范围扩展到整列:

=ARRAYFORMULA(IFS(B2:B="Lightweight Trainers",2)&"-"&K2:K)

记得删除列中的所有值,这样数组公式就不会覆盖它们(它会产生错误)。

如您所见,公式会为没有值的行生成错误。处理这种情况的一个好方法是过滤没有标题的行。在一行中将是:

=IF(B2<>"",[the entire formula],)

注意最后一个逗号。

因此,将所有内容放在一起并将其范围扩展到列,是:

=ARRAYFORMULA(IF(B2:B<>"",))

将此添加到 N2 应该可以工作。

最后说明

当大小不是整数时,您似乎使用了 150。如果您想保留该功能,您可以使用:

IF(K2-int(K2)=0,K2,150)

在最后一个组件上,以同样的方式展开。

您可能还想防止在缺少值时出现两个破折号(LW-5 而不是 LW--5)。为此,我建议将其添加到每个组件中,而不是将它们加在一起的公式。

参考文献

,

试试 N2:

=IFS(I2="Red",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",IF(I2="blue",2,)&IF((K5>=5)*(K5<=12),"-"&K5,)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...