我试图弄清楚如何在Excel电子表格中对值进行“分组”。给出以下示例(这是我在餐厅使用的库存表):



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

我希望能够得出一个COGS总额对于每个类别。

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

有什么想法吗?

谢谢!

#1 楼

您要使用的功能是数据透视表。学习如何使用该功能后,只需单击几下即可完全按照您的意愿进行操作。

评论


这没有回答问题

–铁救主
16年7月4日在3:17

此答案中有一些基本说明stackoverflow.com/a/15838994/74585

–马修·洛克(Matthew Lock)
16年7月6日,1:12

只需滚动即可获得清晰简洁的答案:superuser.com/a/1204086/164123

–乔丹·莫里斯(Jordan Morris)
19年5月14日在11:42

#2 楼

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


单击Excel功能区工具栏中的“数据”选项卡
单击“排序”按钮并按类别列进行排序
单击小计按钮并在适当的位置填写对话框,然后单击“确定”。

例如...


每次更改:
类别

使用功能:
总计

添加小计至:
售货成本


评论


小计按钮在哪里?您可以添加屏幕截图吗?

–马修·洛克(Matthew Lock)
16年7月6日在0:22

@MatthewLock请参阅addintools.com/documents/excel/where-is-subtotal-button.html(和i.imgur.com/kkSa2AB.png)。请注意,使用表格时该按钮被禁用。

–马特·威尔基
16-12-31 at 0:34



在数据选项卡>>架构>>小计(Office365)

– Eugenio F. Martinez Pacheco
20-2-17在10:31



#3 楼

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

sumif是得出该数据的最简单方法。从您的照片中提取的示例:

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


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

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

评论


这是一个很棒的超级简单的解决方案。数据透视表对于这样的很多需求来说是过大的。

– T. Brian Jones
16年7月7日在22:55

感谢您的出色回答!我发现这很有用,也找到了sumifs,除了可以匹配多个范围外,它是等效的。例如,如果您想按多个“键”分组

–奥利
20-2-3在17:55



#4 楼

要对数据透视表执行此操作,请执行以下操作:


选择所有数据(包括列标签)
插入>数据透视表
将字段拖入维度(行或数据透视表的一列)进行分组
将一个字段拖到“值”区域中以计算有关该指标的指标;在这种情况下,求和。



评论


这应该是公认的答案

–乔丹·莫里斯(Jordan Morris)
19年5月14日在11:41

Excel v.16.28具有使用数据透视表而不是“插入”的数据/汇总。

–鳗鱼ghEEz
19-09-16在19:51

@JordanMorris不,SUMIF应该是被接受的答案。

– Alex M
20-2-13在19:27

#5 楼

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

它可以在不更改数据整体布局的情况下像透视操作一样产生您要查找的内容。

排序


单击“数据”选项卡(或按键盘上的Alt-A)

单击“排序”(或按键盘上的S)

在弹出窗口的主区域中,单击“排序依据”旁边的下拉箭头。

选择“类别”,因为这是您要进行分组的依据。

单击“确定”!


小计


单击“数据”选项卡(或在键盘上按Alt-A)

单击小计图标(或按键盘上的B)

现在,您的数据已排序,就像阅读自然英语一样,读取并填充小计弹出窗口:
       At each change in
          Category (Click dropdown arrow and select this)
       Use function
          Sum (Click dropdown arrow and select this)
       Add subtotal to
          Cost of Good Sold (Select the columns you wanted to total for individual categories)

   Click OK!





#6 楼

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


选择表。
转到“数据”选项卡。
单击“结构”>“分组”。




#7 楼

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

我遇到了“小组”基于2-的情况5格。此示例仅查看一列,但是如果有人花时间玩它,可以轻松扩展。

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

'group_values, some_number, empty_columnToHoldSubtotals
'(stuff goes here)
'cookie  1   empty
'cookie  3   empty
'cake    4   empty
'hat     0   empty
'hat     3   empty
'...
'stop


Sub subtotal()
  ' define two strings and a subtotal counter thingy
  Dim thisOne, thatOne As String
  Dim subCount As Double

  ' seed the values
  thisOne = ActiveCell.Value
  thatOne = ActiveCell.Offset(1, 0)
  subCount = 0

  ' setup a loop that will go until it reaches a stop value
  While (ActiveCell.Value &lt&gt "stop")

    ' compares a cell value to the cell beneath it.
    If (thisOne = thatOne) Then
      ' if the cells are equal, the line count is added to the subcount
      subCount = subCount + ActiveCell.Offset(0, 1).Value

    Else
      ' if the cells are not equal, the subcount is written, and subtotal reset.
      ActiveCell.Offset(0, 2).Value = ActiveCell.Offset(0, 1).Value + subCount
      subCount = 0

    End If

    ' select the next cell down
    ActiveCell.Offset(1, 0).Select

    ' assign the values of the active cell and the one below it to the variables
    thisOne = ActiveCell.Value
    thatOne = ActiveCell.Offset(1, 0)
  Wend

End Sub


#8 楼

在Excel 2013中:

-单击数据

-单击小计

#9 楼

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