Excel-查找所有相同的单元格,对匹配的行中的单独单元格求和,在其他工作表中输出

时间:2018-09-29 18:39:42

标签: excel excel-formula

所以,我已经找到了答案,但是什么也找不到。希望那里的一些Excel专家能提供一个简单的答案。

上下文

我有一张有两栏的工作表;机场代码列表(Col A)和燃油加仑列表(Col B)。列A有很多重复条目,列B总是不同的。从根本上讲,这是不同机场飞机随时间推移补全事件的庞大清单。机场可以是相同的,因为每个填写事件都是一排。

问题

我想要做的是有一个公式,该公式采用输入数据集,在列A中查找所有相同的条目,将匹配项的列B值相加,然后将结果吐出到一张单独的纸上,每张记录设置/匹配。

其他东西

我没有A列的引用列表,我宁愿不创建列,因为有成千上万的条目。我只想编写一个公式,使用数据本身作为参考,一次完成所有这些操作。

我找到的所有答案都是“在另一张纸上创建参考列表”,这让我发疯了!

在此先感谢您的帮助!

-rt

1 个答案:

答案 0 :(得分:0)

您需要公式版本为remove的声音对于A列是重复的,而对于B列则是简单的sumif。

A列

=IFERROR(INDEX(Data!A$1:A$1000,SMALL(IF( MATCH(Data!A$1:A$1000,Data!A$1:A$1000,0)=ROW(Data!A$1:A$1000),ROW(Data!A$1:A$1000)),ROW())),"")

数组公式,因此请按 Ctrl + Shift + Enter 即可完成。之后,您可能会在公式外看到{}

B列

=SUMIF(Data!A$1:A$1000,A2,Data!B$1:B$1000)

只需更改数据范围即可。

提醒:A列中的公式应从Row#1开始,或者您必须添加一些偏移常量以进行调整。

由于返回值MATCH()表示键在给定数组中的位置。如果我们希望它等于它的行号,那么如果数组不是从ROW#1开始的话,我们必须添加一些常量。因此,Range(B3:B1000)中的数据调整如下。

=IFERROR(INDEX('Event Data'!B$3:B$1000,SMALL(IF(
 MATCH('Event Data'!B$3:B$1000,
 'Event Data'!B$3:B$1000,0)+2=ROW('Event Data'!B$3:B$1000),
 ROW('Event Data'!B$3:B$1000)),ROW())-2),"")

此外,范围应与数据范围完全相同。如果您需要的数据量大于数据范围以用于将来扩展,则应在公式中添加IFERROR()

=IFERROR(INDEX('Event Data'!B$3:B$1000,SMALL(IFERROR(IF(MATCH(
 'Event Data'!B$3:B$1000,'Event Data'!B$3:B$1000,0)+2
 =ROW('Event Data'!B$3:B$1000),
 ROW('Event Data'!B$3:B$1000)),FALSE),ROW())-2),"")

最后,我真的建议您使用excel中内置的Remove Duplicated,因为数组公式的时间复杂度和内存使用量也约为O(n ^ 2)。每次您在其他单元格中输入任何数据时,只要您的excel中的计算选项是自动的,它就会自动重新计算所有公式。 这会降低性能。