excel - Excel 返回错误响应
问题描述
=IF(B12<>"",(IF(U12="订阅","订阅",IF(U12="TEH","订阅",IF(U12="ESA","订阅",IF(U12= "永续","买入",IF(U12=" "," ")))))))
当 U12 中的值不是选项之一并且我想获得空白时,我在单元格中得到一个“假”值,其中包含这个公式,感谢任何帮助谢谢
解决方案
把这个:改成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。
推荐阅读
- jquery - 将 jQuery POST 发送到 ASP.NET Web API
- javascript - 使用 JavaScript 和 Google Tag Manger 更改 html 内容
- c# - Asp.net 图表控件消失
- android - 如何安全删除字符串资源?
- symfony - Doctrine ORM many-to-many find all by taglist
- sql - 如何从 SQL/PLSQL 中的特定周数获取日期?
- c# - 如果结构可以实现 IDisposable,为什么它们不能有析构函数?
- angular - Angular 5:在 ng build --prod 之后没有出现 css 并且无法转到其他页面
- javascript - 使用输入绑定更新类对象
- javascript - Webpack 尝试从子目录加载 build.js