Excel:数据透视表中的多个筛选器列

时间:2016-10-07 14:58:40

标签: 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
88          115
110         90          88

如何完成错误代码的运行总计而不是限制为一列?

2 个答案:

答案 0 :(得分:0)

我会设置一个单独的表,其中包含一些= countifs()。 (显然在你的工作簿中我会引用包含代码的单元格。)

Error code    Count
88            =countifs(A2:C10,88)
100           =countifs(A2:C10,100)
101           =countifs(A2:C10,101)

这里的优点是您可以轻松添加新的错误代码,然后将其复制下来。

见下面的截图:

example of countifs

如果您想通过错误代码知道错误代码的数量,只需引用正确的列:

enter image description here

答案 1 :(得分:0)

当您的源数据“持平”时,数据透视表最有效 - 即没有预先组织。

您的数据已部分整理。

我建议你的原始数据如下所示......

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

现在您可以生成许多有趣的数据透视表......

每个ErrCode发生了多少次?

enter image description here

我有多少次报告多个ErrCodes?

enter image description here

......等等。

编辑:展平数据

假设您已经按照您描述的方式组织了大量的源数据,我会使用一小段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