我有一个具有以下结构的长公式:
=IF(!X!<>0,!X!+A1,"")
Run Code Online (Sandbox Code Playgroud)
哪里!X!是一个很长的公式。
有什么解决方案可以避免重复 !X! 两次?我需要它有两个原因:
我很感激任何帮助。
谢谢,迪奥
IFERROR效果很好,因为它通过默认行为显着缩短了公式,如果不满足条件(无错误)则返回结果。我正在寻找IFBLANK此行为的版本,即如果不满足条件(非空白)则返回结果。
假设我有一个复杂的多行公式作为“核心公式”。我可以用来=IFERROR(Core Formula, "")处理错误。
我想要类似的东西=IFBLANK(Core Formula, "")。
我知道我可以用 来做到这一点=IF(Core Formula="","",Core Formula),但如果我的“核心公式”确实很复杂且冗长,“如果公式”会使我的公式长度加倍,并使遵循/跟踪/修改变得极其困难,特别是当需要审查公式时由其他贡献者提供。
PS 我总是必须处理由具有不同含义的零和空格组成的数据。
worksheet-function microsoft-excel microsoft-excel-2016 blank
我喜欢保持我的 Excel 电子表格相当干净。所以,很多时候我最终会写出这样的语句:
IF([formula x]=[value],"",[formula x])
Run Code Online (Sandbox Code Playgroud)
本质上说的是,如果公式与给定的条件匹配,则不显示结果 - 否则,显示结果。
在某些情况下,[formula x]向下重复一整列单元格,并且每个单元格都有一个[formula x]指向其上方单元格的引用。为了避免公式错误,我必须添加另一个图层,如下所示:
IF(C2="","",IF([formula x]=[value],"",[formula x])
Run Code Online (Sandbox Code Playgroud)
但是,特别是当[formula x]很长时,这可能导致最终公式看起来比实际复杂得多,并且比应有的情况更难进行故障排除和维护。
这是一个可怕的例子......
基本公式:
=IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7)
Run Code Online (Sandbox Code Playgroud)
添加条件消隐:
=IF(C2="","",IF(IF(A3>=$E$11,C2+(C2*($F$2/12)-$E$9),C2+(C2*($F$2/12))-$E$7)<=0,"",IF(A3>=$E$11,C2+(C2*($F$2/12))-$E$9,C2+(C2*($F$2/12))-$E$7)))
Run Code Online (Sandbox Code Playgroud)
一个已经很长的公式的大小增加了一倍多,这样当相同的公式满足给定条件时,我可以显示一个空白(或任何其他选定的值)。如果我尝试在整行中执行此操作,根据起始公式,我很容易遇到循环引用错误。
有什么方法可以自引用同一单元格中的现有公式或参数,或者可以使用其他函数或功能来更干净地实现此结果?
执行我正在寻找的功能的函数可能是这样的:
=FnName([base formula],[match condition],[condition result])
Run Code Online (Sandbox Code Playgroud)
参数 1 是基本公式,参数 2 是我有兴趣匹配的条件。参数 3 是条件匹配时显示的结果。在条件不匹配的情况下,函数返回基本公式的结果。
我有多个商品可在多个配送中心(即多对多关系)中使用。目前每个项目有一行,每个配送中心有一列。该行对项目在小区 X和集散地列 Ÿ标记与配送中心的代码Ÿ如果项目 X可用那里,否则留空。具有多个配送中心的项目将有多个配送中心代码(在它们各自的列中)。所以当前工作表看起来像:
| A | B |*| S-AJ |
1 | ID # | Description |…| Distribution Centers |
2 | 17 | Ginkgo Biloba |…| | | | | | | SE |
3 | 42 | Ginseng |…| | MP | MS | | NW | | |
?
Run Code Online (Sandbox Code Playgroud)
列C通过R包含与此问题无关的项目的其他属性,例如 UPC 代码、成本和价格。我实际的表有18个配送中心,横跨列S通过AJ; 我将其缩小以使示例适合 Stack Exchange 的窗口。
我需要有一个配送中心列,每行有一个配送代码,然后根据需要为当前包含多个代码的项目复制行。结果应如下所示:
| A | B |*| S …Run Code Online (Sandbox Code Playgroud)