在Excel中聚合列


1

我的数据包括日期和购买清单,如下所示(逗号 代表单独的列):

**date,product1,product2,product3** 
08/11/13,oranges,apples,chips
08/11/13,grapes,oranges
08/12/13,grapes,pineapples
08/12/13,grapes,oranges

我想知道每个日期购买的每种产品的数量(并绘制它)。

如果我有一个产品专栏,那将非常简单;我可以使用数据透视表。但就我而言,在8月11日,我需要一种计算“橙子”的方法 产品1 和来自的“橘子”一起 产品2 ...

一种方法是复制行并将数据转换为单个列,但我想避免使用它。

有没有办法做到这一点,最好不使用VBA?

Answers:


0

如果您的数据在A2:D25范围内,那么您可以使用以下数组公式:

=SUM(($A$2:$A$25=DATEVALUE("8/11/13"))*
    (($B$2:$B$25="oranges")+($C$2:$C$25="oranges")+($D$2:$D$25="oranges")))

你需要输入它 控制 - 转移 - 输入 关键组合。

如果您有多个日期要计算大量产品的总计,则可以执行以下操作。

假设您的产品数据在工作表1中的A2:D20000范围内,日期范围在A列中,如您的示例所示。假设您要将产品计数放在Sheet2中。

在Sheet2中,您将输入您感兴趣的日期B1,C1等单元格。在A2,A2000范围内,您可以获得产品列表。在单元格B2中,输入以下数组公式:

=SUM((Sheet1!$A$2:$A$20000=B$1)*((Sheet1!$B$2:$B$20000=$A2)+
     (Sheet1!$C$2:$C$20000=$A2)+(Sheet1!$D$2:$D$20000=$A2)))

并将其复制到产品列表的底部。这为您提供了第一次约会的计数。

接下来,将整列产品计数复制到第1行中具有日期的每个列。这将为您提供所有日期的计数。

或者,如果您同时拥有大量产品和大量日期,则只有稍微复杂的非数组公式才能提供更好的性能(即,计算时间更短)。

在单元格B2中,您将输入:

     =COUNTIFS(Sheet1!$A$2:$A$20000,B$1,Sheet1!$B$2:$B$20000,$A2)+
      COUNTIFS(Sheet1!$A$2:$A$20000,B$1,Sheet1!$C$2:$C$20000,$A2)+
      COUNTIFS(Sheet1!$A$2:$A$20000,B$1,Sheet1!$D$2:$D$20000,$A2)

然后,将公式复制到产品列表的底部,然后将整个公式列(在B2:B2000范围内)复制到您在第1行中放置日期的所有列。


问题是我有很多(数千种)产品(例如“橘子”),所以我不能只为它们中的每一个创建这样的等式
lribinik

好的,但如果我有很多日期(大约100)怎么办?
lribinik

将它们输入第1行,然后为每个日期列复制公式。考虑到您需要处理的产品和日期的数量,我在答案中添加了非数组公式方法。您可以在与数组公式相同的初始单元格中输入它,但仅使用Enter键而不是Control-Shift-Enter组合键确认它。然后像以前一样向下复制。
chuff
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.