7列中4列的所有组合,总计使用excel

时间:2018-09-14 04:36:19

标签: excel-formula

我有7列可供选择,我需要选择其中4列并为每一行生成总计。我还需要每个4的组合,这意味着我将有35个新列,并且每行显示这些组合的总计。我需要用于此的代码,如果只能使用Excel完成。这是这些列的图像,而灰色的是我正在谈论的7列。我对Excel的了解非常有限。如果重要的话,有超过1500行。

Excel image of my problem

1 个答案:

答案 0 :(得分:1)

多步骤方法,将使用一些帮助行。可能会有一个更优雅的公式可以执行此操作,并且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)

请特别注意$,它会锁定行或列引用,并防止在复制公式时更改它们。

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

proof of concept