如何在Excel中“分组”并汇总一列?


144

我试图弄清楚如何在Excel电子表格中对值进行“分组”。

给出以下示例(这是我在餐厅使用的库存表:)

电子表格样本

电子表格的最右边有一个名为“已售商品成本”的列。

我希望能够得出每个类别的总销货成本数字。

在Excel中这可能吗?而且,我想在一个单独的工作表中进行操作,以使第一个工作表(如图所示)不受影响。

有任何想法吗?

谢谢!

Answers:



58

您也可以使用小计功能执行此操作。

  1. 单击Excel功能区工具栏中的“数据”选项卡
  2. 单击排序按钮,然后按类别列进行排序
  3. 单击“小计”按钮,并根据需要填写对话框,然后单击“确定”。

例如...

每次更改时: 类别

使用功能: 总和

小计: 售货成本


3
小计按钮在哪里?您可以添加屏幕截图吗?
马修·洛克


15

我假设您正在寻找一个像杂货店这样的帐户的总COGS,例如,第1周。

sumif是得出该数据的最简单方法。图片示例:

=sumif(d2:d?,"grocery",j2:j?)

由于我看不到整张纸,因此我放置了问号。您将选择具有帐户数据的整个D列。D2至D ?,与每周使用情况列J2至J?相同。

该公式将在文本杂货的D列中查找,如果存在,它将在J列中添加与其中包含单词杂货的D列相对应的单元格。(或您在公式中查找的任何文本)


这是一个很棒的超级简单的解决方案。数据透视表对于这样的很多需求来说过于矫kill过正。
T. Brian Jones

5

最简单的方法可能是Excel排序操作,然后是Excel小计操作。

它可以产生您想要的内容,而无需像Pivot操作那样更改数据的整体布局。

排序

  • 单击数据选项卡(或在键盘上按Alt-A)
  • 单击排序(或在键盘上按S)
  • 在弹出窗口的主区域中,单击“排序依据”旁边的下拉箭头。
  • 选择“类别”,因为这是您要分组的依据。
  • 点击确定!

小计

  • 单击数据选项卡(或在键盘上按Alt-A)
  • 单击小计图标(或在键盘上按B)
  • 现在,您的数据已排序,就像阅读自然英语一样,阅读并填充小计弹出窗口
           在每次更改时
              类别(单击下拉箭头并选择此项)
           使用功能
              总和(单击下拉箭头并选择此项)
           将小计添加到
              良好销售成本(为各个类别选择要总计的列)

       Click OK!
    


  • 4

    在Excel 2013中,将有一个“分组”选项。

    1. 选择您的表。
    2. 转到数据标签。
    3. 单击结构>分组。

    不幸的是,请参阅下面的屏幕截图,它是德语的-但是图标将帮助您找到它。

    格里登(Gliederung)> Gruppieren


    4

    为此,请使用数据透视表

    1)选择所有数据(包括列标签)
    2)插入>数据透视表
    3)将维拖动到分组依据到列或行区域中
    4)将度量拖到汇总到值区域中

    在此处输入图片说明


    这应该是公认的答案
    乔丹·莫里斯

    1
    Excel v.16.28具有Data/ Summarize with PivotTable而不是“插入”。
    eel ghEEz

    1

    我一直在用vba这样做。我很确定我从Office 95'开始就使用了相同的方法,但对列的放置做了一些小的更改。如果不定义变量,则可以用更少的行来完成。如果您需要进行很多工作,或者需要使用更多内容来定义组,则可以更快地完成。

    我遇到了一个“组”基于2-5个单元的情况。这个例子只看一列,但是如果有人花时间玩它,可以很容易地扩展它。

    假设有3列,则必须按group_values列进行排序。在运行宏之前,请在group_values列中选择要比较的第一个单元格。

    'group_values,some_number,empty_columnToHoldSubtotals
    '(东西在这里)
    'cookie 1空
    Cookie 3空
    '蛋糕4空
    '帽子0空
    '帽子3空
    '...
    '停
    
    小计()
      '定义两个字符串和一个小计计数器
      调暗thisOne,thatOne As String
      Dim subCount为Double
    
      播种价值
      thisOne = ActiveCell.Value
      thatOne = ActiveCell.Offset(1、0)
      subCount = 0
    
      '设置一个循环,直到达到停止值为止
      While(ActiveCell.Value <>“停止”)
    
        '将单元格值与其下方的单元格进行比较。
        如果(thisOne = thatOne)然后
          '如果单元格相等,则将行数添加到子计数
          subCount = subCount + ActiveCell.Offset(0,1).Value
    
        其他
          '如果单元格不相等,则写入子计数,并重置小计。
          ActiveCell.Offset(0,2).Value = ActiveCell.Offset(0,1).Value + subCount
          subCount = 0
    
        万一
    
        '选择下一个单元格
        ActiveCell.Offset(1,0)。选择
    
        '将活动单元格及其下一个单元格的值分配给变量
        thisOne = ActiveCell.Value
        thatOne = ActiveCell.Offset(1、0)
      温德
    
    结束子
    

    -2

    1)选择数据范围。
    2)将范围复制到剪贴板。
    3)打开新的数据库访问。
    4)设计新的表格或粘贴范围。
    5)创建视图,SQL视图。
    6)创建查询“ SELECT单元格,SUM(data)AS Total FROM Table GROUP BY单元格”。


    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.