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

如何解决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,)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?