在EXCEl VBA的16个coumns上分组超过2万个logging后,需要求和2列的简单解决scheme

我有一个大约18列的Excel表。 最后2列是金额。 我有一个情况,我需要反复做分组。

例如:考虑前16列,可以说它是16级。我需要将所有这16列进行分组,并将最后2列中的金额相加。 然后来到15级,其中我现在组合15个colmns和总结最后2列,等等…直到我达到1级

这里的问题是我正在处理200k +logging。 我采取的一个特定的方法是首先将整个200k +logging复制到另一个表,然后基于当前级别(比如说16)我使用CONCATANATE(所有16列)创build一个string,然后使用

=SUMIF(entire 200k concatanate string,first cell of concatenate string,entire range of coulmn to be summed) 

其他栏目的使用情况相同。 现在,因为将这个公式embedded循环中的每个单元格会导致很多时间,所以我使用范围复制粘贴来完成它。 但还是把粘贴公式粘贴到200k行上挂一下。

这样做之后,我使用.removeduplicates方法删除基于串联string的任何重复的logging。 与此问题是,SUMIF公式具有依赖于.removeduplicates方法:(

为此,我首先将公式embedded到最后2列中,然后使用copypastespecial作为“值”将它们复制粘贴到分隔列中,然后使用.removeduplicates方法

这导致地狱的时间和资源的负载和excel往往挂在每一次。 我不是一个VBA专家,所以我很肯定可能会有一个更好的逻辑在那里:(我正在使用Excel 2007

请帮忙!!!

我会build议使用数据透视表。 首先将所有16列字段添加到报表filter,然后将2加到值区域。这将为您提供第一个分组。 他们将列移动到第二个分组的行区等等

或者在2007年,你可以尝试使用SUMIFS而不是SUMIF,但是一个Pivot会更好