如何使用 Excel 中的数据透视表计算一个单元格中的多个值?
How to count multiple values in one single cell using Pivot Tables in Excel?
我在 Excel sheet 中有这个 table:
我想创建一个 Pivot Table 以获得此结果:
你知道怎么做吗?
如果您不介意使用辅助列,请使用分栏文本将第三列拆分为单独的列,并使用逗号作为分隔符。将所有内容都放在一列中,然后根据结果数据创建数据透视表 table。
编辑:
Select C2:C5 并转到数据选项卡,然后 select "Text to Columns" 打开一个对话框。选择 delimited
,然后选中下一个屏幕上的 comma
框以及 space
选项以删除空格并点击完成。您应该将每个项目都放在自己的单元格中。
接下来,我们需要将所有内容都放在一栏中。如果没有 VBA(如果您有大量数据,则需要 VBA),这不是一个好方法,但是对于较小的数据集,您可以复制整行,右键单击顶部在空列中,选择 Paste Special
并选中 Transpose
选项。这会将您复制的数据行作为一列粘贴到目标位置,反之亦然(如果您复制了一列)。对所有数据行重复上述操作,直到您拥有所有水果(包括重复项)的一列。
听起来你已经掌握了枢轴 tables 所以我不会详细介绍,但如果你需要我可以。
编辑 2:
Here's a link 到一些选项,用于将 tables 转换为一列而不是复制和粘贴。我建议使用以下代码:
Sub ConvertRangeToColumn()
'Updateby20131126
Dim Range1 As Range, Range2 As Range, Rng As Range
Dim rowIndex As Integer
xTitleId = "KutoolsforExcel"
Set Range1 = Application.Selection
Set Range1 = Application.InputBox("Source Ranges:", xTitleId, Range1.Address, Type:=8)
Set Range2 = Application.InputBox("Convert to (single cell):", xTitleId, Type:=8)
rowIndex = 0
Application.ScreenUpdating = False
For Each Rng In Range1.Rows
Rng.Copy
Range2.Offset(rowIndex, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True
rowIndex = rowIndex + Rng.Columns.Count
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
即使没有主元也可以解决这个问题table。我用这种方法解决了同样的问题。
我假设第二个table,"Item"在A1,"Count of Table"在B1;
第一个 table 在 "Sheet1" 中,第二个 table 在 "Sheet2"
中
您还可以为客户购买的水果数量添加一个新列。这是在工作表 1 的 D1 列中。
您可以将这样的公式放在每行的 "Count of Item" 列下:
(这个公式写一次,照常往下延伸)
=SUMIF(Sheet1!$C:$C;"*"&A2&"*";Sheet1!$D:$D).
我在 Excel sheet 中有这个 table:
我想创建一个 Pivot Table 以获得此结果:
你知道怎么做吗?
如果您不介意使用辅助列,请使用分栏文本将第三列拆分为单独的列,并使用逗号作为分隔符。将所有内容都放在一列中,然后根据结果数据创建数据透视表 table。
编辑:
Select C2:C5 并转到数据选项卡,然后 select "Text to Columns" 打开一个对话框。选择 delimited
,然后选中下一个屏幕上的 comma
框以及 space
选项以删除空格并点击完成。您应该将每个项目都放在自己的单元格中。
接下来,我们需要将所有内容都放在一栏中。如果没有 VBA(如果您有大量数据,则需要 VBA),这不是一个好方法,但是对于较小的数据集,您可以复制整行,右键单击顶部在空列中,选择 Paste Special
并选中 Transpose
选项。这会将您复制的数据行作为一列粘贴到目标位置,反之亦然(如果您复制了一列)。对所有数据行重复上述操作,直到您拥有所有水果(包括重复项)的一列。
听起来你已经掌握了枢轴 tables 所以我不会详细介绍,但如果你需要我可以。
编辑 2:
Here's a link 到一些选项,用于将 tables 转换为一列而不是复制和粘贴。我建议使用以下代码:
Sub ConvertRangeToColumn()
'Updateby20131126
Dim Range1 As Range, Range2 As Range, Rng As Range
Dim rowIndex As Integer
xTitleId = "KutoolsforExcel"
Set Range1 = Application.Selection
Set Range1 = Application.InputBox("Source Ranges:", xTitleId, Range1.Address, Type:=8)
Set Range2 = Application.InputBox("Convert to (single cell):", xTitleId, Type:=8)
rowIndex = 0
Application.ScreenUpdating = False
For Each Rng In Range1.Rows
Rng.Copy
Range2.Offset(rowIndex, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True
rowIndex = rowIndex + Rng.Columns.Count
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
即使没有主元也可以解决这个问题table。我用这种方法解决了同样的问题。
我假设第二个table,"Item"在A1,"Count of Table"在B1; 第一个 table 在 "Sheet1" 中,第二个 table 在 "Sheet2"
中您还可以为客户购买的水果数量添加一个新列。这是在工作表 1 的 D1 列中。
您可以将这样的公式放在每行的 "Count of Item" 列下: (这个公式写一次,照常往下延伸)
=SUMIF(Sheet1!$C:$C;"*"&A2&"*";Sheet1!$D:$D).