Excel formula 使用excel进行总计的7列中4列的所有组合

Excel formula 使用excel进行总计的7列中4列的所有组合,excel-formula,Excel Formula,我有7列可供选择,我需要从中选择4列,并为每行生成一个总数。我还需要4的每一个组合,这意味着我将有35个新列,每一行中显示这些组合的总数。我需要这方面的代码,如果它可以只使用Excel完成。这是一个列的图像,灰色的是我所说的7列。我对Excel的了解非常有限。如果这有关系的话,总共有1500多行 将使用一些辅助行的多步骤方法。可能有一个更优雅的公式可以做到这一点,在VBA中有许多更灵活的选项,但这是一个公式唯一的方法 步骤1-生成列组合列表 要生成列表,需要在数据顶部插入4个辅助行。在标题行上方

我有7列可供选择,我需要从中选择4列,并为每行生成一个总数。我还需要4的每一个组合,这意味着我将有35个新列,每一行中显示这些组合的总数。我需要这方面的代码,如果它可以只使用Excel完成。这是一个列的图像,灰色的是我所说的7列。我对Excel的了解非常有限。如果这有关系的话,总共有1500多行


将使用一些辅助行的多步骤方法。可能有一个更优雅的公式可以做到这一点,在VBA中有许多更灵活的选项,但这是一个公式唯一的方法

步骤1-生成列组合列表 要生成列表,需要在数据顶部插入4个辅助行。在标题行上方或下方。这4行将表示您要选择的列编号。为了让数学对我来说更简单,我假设第一列为1,最后一列为7。这些数字稍后将转换为,以说明电子表格中介于两者之间的列。在本例中,第一个组合和将出现在列AO中,第一个辅助行将是行1。第一个组合将被硬编码,它将为其余的列组合种子模式。在相应的单元格中输入以下值:

AO1 = 1
AO2 = 2
AO3 = 3
AO4 = 4
在相邻列中,将放置公式并将其复制到右侧。它将自动将底部值增加1,直到达到其最大值,此时上面一行中的值将增加1,并且当前值将比上面的单元格多1。这将生成一个模式,在达到列BW时覆盖所有35个组合。将以下公式放置在适当的单元格中,并复制到右侧:

AP1
=IF(AO2=5,AO1+1,AO1)

AP2
=IF(AO2=5,AP1+1,IF(AO3=6,AO2+1,AO2))

AP3
=IF(AO3=6,AP2+1,IF(AO4=7,AO3+1,AO3))

AP4
=IF(AO4=7,AP3+1,AO4+1)
步骤2-对适当的列求和 我希望使用某种数组类型的操作来读取上面的列引用号,但我无法理解它。由于只需担心4个条目,我只需在
SUM
函数中手动添加每个引用。现在需要注意的重要一点是,我们将在覆盖列范围的13列上使用
INDEX
函数,以便将我们上面计算出的索引编号转换为可以抓取每第二行的数字,计算出的数字将乘以2,然后减去1。这意味着第一列组合的1,2,3,4变为1,3,5,7。您可以在下面的公式中看到这一点。将以下公式放置在适当的单元格中,并根据需要向下和向右复制

AO5
=INDEX($AB5:$AN5,AO$1*2-1)+INDEX($AB5:$AN5,AO$2*2-1)+INDEX($AB5:$AN5,AO$3*2-1)+INDEX($AB5:$AN5,AO$4*2-1)
请注意$,它将锁定行或列引用,并防止在复制公式时更改它们

现在,您可能需要调整单元格引用以匹配工作表


您是否尝试过调查您的担忧?到目前为止,您尝试了哪些不起作用的方法?请分享。我花了大约一个星期的时间在网上搜索我的问题,我认为现在我看问题时解释得不太清楚。我不认为只有Excel能满足我的需要。我试过联合收割机,但那只告诉我有35种组合,7种组合中有4种没有重复。所以我想我要算出所有35个组合,用,example=SUM(AB,AD,AF,AH)等组成35列,这样我就可以从那向下拖动平方,得到该组合的所有1500行总计。我不认为只有Excel才能做到这一点。我只是想找到一个更快的方法。谢谢你的回答,但我认为由于我解释得不好,而且事实上我一个人并不擅长,所以我可以实现我想要的。我将为35列中的每一列创建所有35个组合,例如=SUM(AB,AD,AF,AH)等等,因此我可以向下拖动第一个框,以获得该组合中所有1500行的所有总计。