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