我有多个“混合”,我想为其创建成本。目前,为了清晰起见,每个混合都以组件形式显示在单元格中,单位数显示在表格中的单独列中,每单位成本则细分为工作簿中单独工作表中的各个组件。
示例 在工作表 1 中,我有以下内容:单元格 C2 为“3”(单位数),单元格 C3 为“2”,单元格 C4 为“4”。单元格 D2 为“1 杯面粉、0.25 杯牛奶、1 个鸡蛋”单元格 D3 为“2 杯面粉、0.33 杯油、2 个鸡蛋”单元格 D4 为“1 杯面粉、1 个鸡蛋”我希望 E 列有一个公式,根据工作表 2 中的价格计算成本,其中单元格 B2 中面粉的成本为“.05”,单元格 B3 中牛奶的成本为“.08”,单元格 B4 中鸡蛋的成本为“.10”,油的成本为“.04”。我还有一个通用混合成本“.25”,我想将其应用于单位,但除了工作表 2 单元格 B16 中没有在其他地方列出。
目前,我正在手动配置 E 列中的每个公式,这很耗时,而且可能会导致错误。单元格 E2 的一个示例是“=3*(1*.05+.25*.08+1*.1+.25)”
我想到两个选项,一个是创建一个混合列,显示混合 1、混合 2 和混合 3,然后定义一个单位成本,我可以乘以该成本,并为每种组合创建一个独特的混合(目前大约有 15 种混合,并且还在增长)。例如,F 列是混合成本,因此 E2 中的公式变为“=C2*F2”。我的问题是,我是否可以使用 IF() 语句根据 D 列中的数据自动填充此列,因为我希望在打印数据时隐藏 F 列,并且如果在输入数据时隐藏该列,浏览工作表也会更容易。
另一种选择是创建一个公式,将 D 列拆分为单个组件,然后使用单个值进行乘法运算,然后隐藏所有单个列数据,公式将显示诸如“=Units*(数据点 1+数据点 2+数据点 3+混合数据点)”之类的内容。我对这种方法的担心是,当我每行计算 3-4 次混合值时,如果我开始有 5-6 种成分,工作表将变得非常大,难以浏览。
任何其他想法或方法都会有帮助。
答案1
您的描述确实很麻烦,
但我相信以下内容会让您了解如何做到这一点......
--- 保存为 .csv 文件并在 excel 或 libreoffice 中打开 ---
,,,, ,项目 A,项目 B,项目 C,总计 ,100,10,1, ,,,, 混合,,,, "=DEC2BIN(ROWS($A$6:A6),COLUMNS($B$2:$D$2))","=VALUE(MID($A6,COLUMNS($B$2:B$2),1))","=VALUE(MID($A6,COLUMNS($B$2:C$2),1))","=VALUE(MID($A6,COLUMNS($B$2:D$2),1))","=SUMPRODUCT($B$3:$D$3,B6:D6)"--- 文件结束 ---
“向下复制”第 6 行(最后一行),使其成为七行(六份)。
更改第 3 行的数字并观察会发生什么。
下面的“混合”表就是这样做的;
A 列 - 根据行位置创建一个二进制数(001 为第一行,111 为第七行)。B
、C 和 D 列 - 选出与列对应的位置上的二进制数字,使其成为一个“数字”,以便我们可以对其进行计算。E
列 - 用于SUMPRODUCT()
计算“混合”成本。
SUMPRODUCT(Array1, Array2, ...)
取 Array1 和 Array2 中的第一个元素,将它们相乘,对元素 2 执行相同操作并添加,然后添加元素 3,依此类推......
它可以处理多个数组,而不仅仅是两个,但是有一个限制。
上面的 csv 文件将第三行作为“成本”数组,然后使用从第 6 行开始的行作为“选择”数组,为三个项目创建七种可能的混合成本(2 的 3 次方行,对于三个项目,至少选择一个)。
*公式:
只需更改 COLUMNS 参数,即可更改 A 列以处理更多项目。B
列可以复制到“任意”数量的列(csv 文件中有三列)。
“任意”受 A 列中“DEC2BIN”的限制,但在 Excel 中只能生成十位数字。E
列也需要相应调整 - 我将把它留作最后一项任务,让您自己完成;其实并不难。
当您有第六行时,您可以将其复制下来以获得所需的行数,最后一行需要在混合表中全部为“1”。