我有一张表格,用户可以通过逐个添加元素来添加化学式(表格有 5 行),我尝试用两种方式计算不饱和度。用户必须通过在单元格中写入 1 或 2 来指定方式,然后有这个 if 语句:
=IF(N16=1,((2*IF(ISBLANK(C8),0,(C8*(D8-2)))-(IF(ISBLANK(C9),0,(C9*(D9-2))-IF(ISBLANK(C11),0,(C11*(D11-2))+IF(ISBLANK(C12),0,(C12*(D12-2)))/2),(2+(IF(ISBLANK(C8),0,(C8*(D8-2))+IF(ISBLANK(C9),0,(C9*(D9-2))+IF(ISBLANK(C11),0,(C11*(D11-2))+IF(ISBLANK(C12),0,(C12*(D12-2)))))))))
这些 ISBLANK 用于检查单元格中是否写入了元素
答案1
嗯,仅通过这个公式很难看出你所做的事情的意义。
如果它本质上被视为您的计划,除了错误 Excel 报告之外,那么您的公式中就有以下概念:
如果某个条件(在本例中为 N16=1)为真,则报告此情况(无论“此情况”是什么),如果不为真,则无论如何报告此情况(无论“此情况”是什么)。
归根结底,这与以下内容相同:
=IF(A1=1,50,50)
关键在于,如果您对 TRUE 和 FALSE 得到相同的结果,那么 就没有意义了IF()
。请注意,在这种情况下,可能存在逻辑之外的原因,谁知道呢,其中一个可能适用。由于您没有提供任何有意义的信息来解决该问题,所以无法判断。但如果没有,而且这似乎很有可能,那么为什么要使用IF()
呢?
因此,这里只有 TRUE 或 FALSE 的结果才重要(因为它们相同)。您只需使用公式中的其中一个部分即可简化公式。
如果你想“简化”它。如果你更愿意大大简化然后考虑一下每个测试的作用。每个测试的基本结果是从某个单元格中减去 2,然后将其乘以测试单元格。很酷。如果该测试单元格为空白,Excel 会将其视为 0,并且乘法将得出 0。那么,如果这样做的原因是为了让结果为 0,那么为什么还要测试它是否为空白呢?只需实际的乘法就可以为您做到这一点,无需任何其他操作。如果你放弃额外的工作和整个IF()
想法,你会得到以下结果:
=(2 * C8*(D8-2) - C9*(D9-2) - C11*(D11-2) + C12*(D12-2) ) /2
因为似乎没有理由将其乘以 2,然后除以 2,也将其取出:
=C8*(D8-2) - C9*(D9-2) - C11*(D11-2) + C12*(D12-2)
我认为预期的“C10*(D10-2)”不存在是有充分理由的,因此继续。
此时停止简化(因为无论如何,从技术上讲,在这种情况下,任何更多的事情都恰好是“精简”而不是“简化”),我想指出使用上述公式而不是您的公式的一个巨大优势:
它非常简单,易于输入或生成,因此很难出现愚蠢的输入错误,如果出现错误,也应该非常容易发现。对比一下您的公式,优势应该很容易看出。
这一点,而不是上述的具体行业技巧,才是这个答案的重要部分。