【问题标题】:Excel returning a False responseExcel 返回错误响应
【发布时间】:2021-12-20 22:38:33
【问题描述】:

=IF(B12"",(IF(U12="订阅","订阅",IF(U12="TEH","订阅",IF(U12="ESA","订阅",IF (U12="Perpetual","Buy",IF(U12=" "," ")))))))

当 U12 中的值不是选项之一并且我想得到一个空白时,我在包含此公式的单元格中得到一个“假”值 感谢任何帮助 谢谢

【问题讨论】:

  • 将此:IF(U12=" ", " ") 更改为:IF(U12=" ", " ", "")。但是,我认为这并不完全正确。该子句的全部目的是生成空白吗?还是您真的在检查 U12 = " "?
  • 你的第一个 IF( 函数中没有 Else 子句。当 B12 丢失或空白时,什么都没有传递。如何让它IF(B12=""," ", ...

标签: excel if-statement conditional-statements


【解决方案1】:

将这个: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。

【讨论】:

    【解决方案2】:

    这样清楚一点吗?

    =IF(B12=""," ",IfError(VLookup(U12,{"ESA","Subscribe";"Perpetual","Buy";"Subscription",Subscribe";"T.E.H.","Subscribe"},2,false)," "))
    

    这实际上只是一个表查找,因此使用了 VLookup。查找数组是大括号中的二维数组 - 逗号和分号对于为 VLookup 定义 2x4 数组非常重要。 IFError 函数告诉如果查找失败,如何返回您想要的“”结果。

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      • 2016-10-29
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多