选择 Excel 中的数据作为某些单元格之间的一组,并将每个单元格除以组值以查找百分比

Selecting data In Excel as a group between certain cells and dividing each by group value to find percentage

背景: 我有一个 table 描述了一个假想的公式。主要 ingredients/materials 是口味 A、B、乳液和凝胶混合物。这些在 table 中以粗体突出显示(见附图)。

所附图片还显示了构成每种成分的每种子成分的百分比。

尽管这是一个虚构的示例,但我提供的数据以相同的方式呈现。

问题: 我想创建一个新列 D,查看此数据,可以自动计算每个子成分占主要成分的百分比。例如,Oil/Lipid 是乳液的 63%,占总配方的 19%。 (0.63*0.19)*100 = 11.97 作为 D 列中的所需输出。类似地,C 列中的连字符表示成分为 100%,并且应该 return 一个等于整个配方百分比的值,例如 54% returns 54。这些值中的每一个的总和不会达到 100,因为输出将包含原始 material 及其组成子组件的值。

然而,数据格式化的方式使这非常具有挑战性。

到目前为止我尝试过的: 首先,我无法提供任何现有代码,只是因为我不知道如何去做。到目前为止我能想到的是,因为当 C 列中出现连字符时,它标识子组件列表的开头,下一个连字符将标识结尾。然后,这两者之间的每个值都需要独立除以 B 列中连字符相邻的单元格,然后乘以 100(请注意,如有必要,连字符可以更改为 1.0 或 100%)。我想知道是否可以通过某种方式(FILTERXML?)过滤数据,但我不确定。

所附图片中的期望结果列显示了我试图在 D 列中实现的值。这些是通过手动计算每个值来实现的,但这是我在这里试图避免的。 (如有错误请见谅)

非常感谢任何帮助(即使有一些复杂的解决方法)。同样,如果您认为这不可能,请告诉我。

非常感谢。

请试试这个公式。粘贴到D3并向下复制。

=LOOKUP(2,1/($B:$B3<>""),$B:$B)*IF(ISNUMBER($C3),$C3/100,1)

该公式假设 B 列中的单元格垂直合并并且 C 列中有一个 non-numeric 字符(例如连字符)来标识每个段的标题行。

实现此目的的一个简单方法是在辅助列中添加一个公式,该公式检查列 B 中的单元格是否为空,如果是,则取上面的值,如果不是,则取值来自 B 列,例如54%。因此在 E 列中添加以下内容:

=IF(B3="", E2, B3)

然后在 D 列中添加以下内容,它使用您的辅助列来获得您想要的结果:

=IF(C3="-", B3, E3*C3)

查看 C 列中是否有“-”,如果有,则取 B 列的总值,如果没有,则将各自的百分比相乘。