【问题标题】:Google Sheets - Combine multiple IF Functions into one cellGoogle 表格 - 将多个 IF 函数合并到一个单元格中
【发布时间】:2021-04-24 15:26:06
【问题描述】:

我正在尝试使用三种变体的值在 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 列中的数据时遇到了困难。

如果能帮助您将多个单元格中的数据合并为一个单元格,我们将不胜感激。

【问题讨论】:

    标签: function if-statement google-sheets ifs


    【解决方案1】:

    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")
    

    显然,目前它只有一个值(Lightweight Trainers),但您可以添加更多:

    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)。为此,我建议将其添加到每个组件中,而不是将它们添加到一起的公式中。

    参考文献

    【讨论】:

      【解决方案2】:

      在 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, )
      

      【讨论】:

      • 感谢您的帮助 - =IFS(I2="Red",1,I2="Blue",2)&amp;"-"&amp; 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
      • 试试:=IF(B2="Lightweight Trainers", "LW-"&amp;IFS(I2="Red",1,I2="Blue",2)&amp;"-"&amp; 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)
      猜你喜欢
      • 1970-01-01
      • 2021-12-21
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多