将这个:IF(U12=" ", " ") 更改为这个:IF(U12=" ", " ", "")。这是 Google 表格中的演示,但公式相同。
https://docs.google.com/spreadsheets/d/10iFqq0PNt9VhGKMPLCxsI1df0x4nDSxCaCGSdEEktO8/edit#gid=0
但是,我认为这并不完全正确。一方面,它看起来像这样的子句:
IF(U12=" ", " ")
只是在那里尝试生成您正在寻找的空白。如果是这种情况,则将其更改为:
IF(U12=" ", " ", "")
但是,我想我可能会使用一些数组常量,如下所示:
=IF(B12<>"", CHOOSE(SUM(--(U12={"Subscription","T.E.H","ESA"})) + IF(U12="Perpetual", 2) +1, "", "Subscribe", "Buy"))
为了稍微分解一下,让我重新格式化以便更容易看到:
=IF(
B12 <> "",
CHOOSE(
SUM(--(U12={"Subscription","T.E.H","ESA"})) +
IF(U12="Perpetual", 2) + 1
"", "Subscribe", "Buy"
)
)
我将使用 CHOOSE,它接受一个索引号 N 和一个选项列表,并返回选项列表中的第 N 个元素。为了生成索引,我将使用几种技术。先看看这个:
U12 = {"Subscription", "T.E.H", "ESA"})
这将针对列表中的所有选项测试 U12,并返回一个 TRUE/FALSE 值数组。如果 U12 匹配数组常量中的任何元素,则其中一个值为 TRUE。我们使用 -- 将该数组从 TRUE/FALSE 强制为 0/1,然后使用 SUM 将数组转换为单个值。如果 U12 不匹配任何选项,则为 0,如果匹配,则为 1。
然后我将使用标准 IF 来检查 U12 = Perpetual,如果是则返回 2。将该结果与之前的总和相加将得到一个最终数字,即 0、1 或 2。
CHOOSE 是 1 索引,这意味着它期望索引为 1 或更大,因此我们将 1 加到我们刚刚生成的数字上,并将其与选项列表一起传递给 CHOOSE。
这里的好处是,如果订阅选项发生变化,您可以只更改列表,而不必更改一堆嵌套的 IF。此外,如果您需要支持多种购买选项,您可以使用类似的结构:
SUM(--(U12 = {"Subscription", "T.E.H", "ESA"})) +
IF(SUM(--(U12 = {"Perpetual", "Buy Now"})), 2) + 1
如果您需要添加返回值,请继续扩展:
CHOOSE(
SUM(--(U12 = {"Subscription", "T.E.H", "ESA"})) +
IF(SUM(--(U12 = {"Perpetual", "Buy Now"})), 2) +
IF(SUM(--(U12 = {"Release", "Dropping"})), 3) + 1,
"", "Subscribe", "Buy", "Sell"
)
如果您认为这可能需要维护或选项可能会更改,我会这样设置,而不是嵌套 IF。