添加配方成分(净重与毛重)

添加配方成分(净重与毛重)

我想添加某个范围内公式的组成部分。我们有一个部分显示特定项目的净现金流,还有多个特定项目。

例如,=8+9-5在多个单元格中显示“12”。如果值不是在单元格级别上进行净额计算,则很容易使用公式SUMIF仅添加正数和负数单元格,但由于它是在单元格级别进行净额计算,因此我尝试深入研究底层值并使用与公式等效SUMIF但适用于所有底层组件的公式。

对于上面的例子,我试图获取一个范围为“+17”的摘要单元格,以及一个显示“-5”的单元格。

我怎样才能做到这一点?

答案1

最重要的问题是如何从工作表访问另一个单元格的公式字符串。没有现有的工作表函数可以做到这一点。因此,您必须先做以下两件事之一:1) 使用查找和替换来更改单元格的内容,使它们不再保存公式而是保存字符串,或者 2) 使用 VBA 访问单元格的公式字符串。

(1)可以通过选择要操作的单元格,然后按Ctrl+H打开替换对话框来完成。搜索=(假设您感兴趣的公式与您的示例类似,并且不包含后续等号),然后将其替换为空。这会将公式显示值 12 的单元格更改=8+9-5为显示字符串的单元格8+9-5

(2)可以通过访问单元格属性来实现.Formula。例如,要获取单元格 A1 的公式,可以使用如下所示的简单 UDF:

Public Function GetFormula(r as Range) as String
   GetFormula = r.Formula
End Function

无论使用哪种方法,获得这些字符串后,您都必须巧妙​​使用字符串操作函数(例如FINDLENVALUE)来提取所需的值。由于这样做既浪费您也浪费我的时间,因此我在此不做此操作。

答案2

在您的工作簿中添加一张工作表;我们称之为“设置”。

在 A1 中输入8,在 A2 中输入9,在 A3 中输入-5。复制的列数与原始工作表中存在常数公式的列数相同。(根据范围的组织方式,您可能需要设置工作表以使用 A1、B1、C1 并向下复制。这样做的目的是创建一个与原始工作表上的范围形状相匹配的范围。)

在原始工作表中,将所有公式替换=8+9-5=Setup!A1+Setup!A2+Setup!A3。这可以通过评估公式的“查找和替换”操作来完成。

现在您可以在设置表上构建条件公式,而不是原始表中的硬编码值。

=sumif(Setup!A1:A3,">0")

=sumif(Setup!A1:A3,"<0")

相关内容