Google 工作表 - 将多个 IF 函数合并到一个单元格中
Google Sheets - Combine multiple IF Functions into one cell
我正在尝试使用三个变体的值在 Google 表格中为产品生成 SKU (标题、颜色和尺寸)
该产品是 'Lightweight trainers',颜色有 'Red' 和 'Blue',尺码范围为 5 - 12。
Link 到电子表格
https://docs.google.com/spreadsheets/d/1trq0X3MjR-n2THFnT8gYYlwKscnQavCeeZ8L-ifYaHw/edit?usp=sharing
瞄准
我希望有一个显示产品、颜色变体和鞋码的 SKU。
示例:LW-1-8
(轻便运动鞋,红色,尺码 8)
产品是价值 LW 的轻量级运动鞋。
颜色变体 'Red' 值为 1,'Blue' 值为 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 列中的数据。
对于将来自多个单元格的这些数据合并为一个单元格的任何帮助,我们将不胜感激。
在 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, )
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 步:标题
对于第一部分 - 标题 - 我们需要将值与 shorthand 相匹配。 IFS
中的一个简单列表就足够了。
IFS(B2="Lightweight Trainers", "LW")
显然现在它只有一个值(轻量级训练师),但您可以添加更多:
IFS(B2="Lightweight Trainers", "LW", B2="Heavyweight Trainers", "HW")
第二步:色号
和上一步类似,是使用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
)。为此,我建议将它添加到每个组件中,而不是将它们添加到一起的公式。
参考资料
我正在尝试使用三个变体的值在 Google 表格中为产品生成 SKU (标题、颜色和尺寸)
该产品是 'Lightweight trainers',颜色有 'Red' 和 'Blue',尺码范围为 5 - 12。
Link 到电子表格
https://docs.google.com/spreadsheets/d/1trq0X3MjR-n2THFnT8gYYlwKscnQavCeeZ8L-ifYaHw/edit?usp=sharing
瞄准
我希望有一个显示产品、颜色变体和鞋码的 SKU。
示例:LW-1-8
(轻便运动鞋,红色,尺码 8)
产品是价值 LW 的轻量级运动鞋。
颜色变体 'Red' 值为 1,'Blue' 值为 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 列中的数据。
对于将来自多个单元格的这些数据合并为一个单元格的任何帮助,我们将不胜感激。
在 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, )
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 步:标题
对于第一部分 - 标题 - 我们需要将值与 shorthand 相匹配。 IFS
中的一个简单列表就足够了。
IFS(B2="Lightweight Trainers", "LW")
显然现在它只有一个值(轻量级训练师),但您可以添加更多:
IFS(B2="Lightweight Trainers", "LW", B2="Heavyweight Trainers", "HW")
第二步:色号 和上一步类似,是使用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
)。为此,我建议将它添加到每个组件中,而不是将它们添加到一起的公式。