Excel:透视表中的多个筛选列
我有一个电子表格,其中包含大量关于产品错误代码的数据。电子表格中有三列要输入的错误代码 例如:Excel:透视表中的多个筛选列,excel,pivot-table,Excel,Pivot Table,我有一个电子表格,其中包含大量关于产品错误代码的数据。电子表格中有三列要输入的错误代码 例如: errorcode1 errorcode2 errorcode3 88 100 88 101 88 115 110 90 88 按照透视表的设置方式,我只能过滤一个错误代码。如果我想知道总共88个代码,我会在errorcode1中过滤88个代码,结果只有2个,即使还有两个 理想情况下,目标是能够添
errorcode1 errorcode2 errorcode3
88
100 88
101
88 115
110 90 88
按照透视表的设置方式,我只能过滤一个错误代码。如果我想知道总共88个代码,我会在errorcode1中过滤88个代码,结果只有2个,即使还有两个
理想情况下,目标是能够添加过滤器的结果。比如说
errorcode1 errorcode2 errorcode3
88
100 88
88 115
110 90 88
我如何才能完成错误代码的运行总数,而不是仅限于一列?我将使用some=countifs()设置一个单独的表。(显然,在您的工作簿中,我会引用包含代码的单元格。) 这里的优点是,您可以轻松地添加新的错误代码,然后将其复制下来 请参见下面的屏幕截图: 如果您想通过错误代码了解错误代码的数量,只需参考正确的列:
数据透视表在源数据为“平面”时工作得最好,即没有进行预组织 您的数据是部分组织的 我建议您的原始数据如下所示
Err Index ErrCode
1 1 88
1 2
1 3
2 1 100
2 2 88
2 3
3 1 101
3 2
3 3
4 1 88
4 2 115
4 3
5 1 110
5 2 90
5 3 88
现在您可以生成许多有趣的数据透视表
每个错误代码发生了多少次
我报告了多少次多个错误代码
。。。等等
编辑:展平数据
假设有大量的源数据已经按照您描述的方式组织,我将使用一小段VBA来展平数据
以下是一个例子:
Option Explicit
Sub Flatten()
Dim SrcSht As Worksheet
Set SrcSht = Worksheets("Sheet1")
Dim DestSht As Worksheet
Set DestSht = Worksheets("Sheet2")
Dim LastSrcRow As Long
LastSrcRow = SrcSht.Range("A" & SrcSht.Rows.Count).End(xlUp).Row
Dim LastSrcCol As Long
LastSrcCol = SrcSht.Cells(1, SrcSht.Columns.Count).End(xlToLeft).Column
DestSht.Cells(1, 1) = "Err"
DestSht.Cells(1, 2) = "Index"
DestSht.Cells(1, 3) = "ErrCode"
Dim SrcRow As Long, SrcCol As Long, DestRow As Long
DestRow = 1
For SrcRow = 2 To LastSrcRow
For SrcCol = 1 To LastSrcCol
DestRow = DestRow + 1
DestSht.Cells(DestRow, 1) = SrcRow - 1
DestSht.Cells(DestRow, 2) = SrcCol
DestSht.Cells(DestRow, 3) = SrcSht.Cells(SrcRow, SrcCol).Value
Next SrcCol
Next SrcRow
Set SrcSht = Nothing
Set DestSht = Nothing
End Sub
谢谢你的帮助,但这不完全是我想要的。我将数据放在透视表中,可以使用下拉部分按数据进行筛选。我想过滤多个下拉部分,让它们基本上“相加”,并向我显示所有结果,而不仅仅是一个column@MikeBrunner好吧……我不确定你到底想要什么。您的意思是希望能够筛选数据透视表上的多个列吗?或者Old丑恶下面的答案有用吗?除了第3行缺少101外,我看不出第一个例子和第二个例子之间有什么区别。请你解释一下。。。能否添加透视表的视觉效果,这将有助于理解问题。谢谢您的帮助。这似乎很有趣,而且可能有效。我如何将我的列表转换成一个索引列表,就像你展示的那样?我会使用VBA。我编辑了解决方案,以包含VBA的外观。
Option Explicit
Sub Flatten()
Dim SrcSht As Worksheet
Set SrcSht = Worksheets("Sheet1")
Dim DestSht As Worksheet
Set DestSht = Worksheets("Sheet2")
Dim LastSrcRow As Long
LastSrcRow = SrcSht.Range("A" & SrcSht.Rows.Count).End(xlUp).Row
Dim LastSrcCol As Long
LastSrcCol = SrcSht.Cells(1, SrcSht.Columns.Count).End(xlToLeft).Column
DestSht.Cells(1, 1) = "Err"
DestSht.Cells(1, 2) = "Index"
DestSht.Cells(1, 3) = "ErrCode"
Dim SrcRow As Long, SrcCol As Long, DestRow As Long
DestRow = 1
For SrcRow = 2 To LastSrcRow
For SrcCol = 1 To LastSrcCol
DestRow = DestRow + 1
DestSht.Cells(DestRow, 1) = SrcRow - 1
DestSht.Cells(DestRow, 2) = SrcCol
DestSht.Cells(DestRow, 3) = SrcSht.Cells(SrcRow, SrcCol).Value
Next SrcCol
Next SrcRow
Set SrcSht = Nothing
Set DestSht = Nothing
End Sub