Excel: несколько столбцов фильтра в сводной таблице

#excel #pivot-table

#excel #сводная таблица

Вопрос:

У меня есть электронная таблица, которая содержит большое количество данных, касающихся кодов ошибок продуктов. В электронной таблице есть столбцы для ввода трех кодов ошибок.

Например:

 errorcode1  errorcode2 errorcode3
88          
100         88
101
88          115        
110         90         88
  

Способ настройки сводной таблицы позволяет фильтровать только по одному коду ошибки. Если бы я хотел узнать всего 88 кодов, я бы отфильтровал 88 в errorcode1, что дало бы результат только 2, хотя есть еще два.

В идеале цель состоит в том, чтобы иметь возможность добавлять результаты фильтров. Например

 errorcode1  errorcode2  errorcode3
88
100         88
88          115
110         90          88
  

Как я могу выполнить общее количество кодов ошибок вместо того, чтобы ограничиваться одним столбцом?

Комментарии:

1. Кроме строки 3, в которой отсутствует 101, я не вижу никакой разницы между первым примером и вторым. Не могли бы вы объяснить… Не могли бы вы добавить изображение своей сводной таблицы, которое поможет понять проблему.

Ответ №1:

Я бы создал отдельную таблицу с некоторыми =countifs() . (Очевидно, что в вашей книге я бы ссылался на ячейку, содержащую код.)

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

Преимущества здесь в том, что вы можете легко добавлять новые коды ошибок, а затем копировать их.

Смотрите скриншот ниже:

пример графов

Если вы хотите узнать количество кодов ошибок по коду ошибки, просто укажите только правильный столбец:

введите описание изображения здесь

Комментарии:

1. спасибо за помощь, но это не совсем то, что я ищу. У меня есть данные в сводной таблице, и я могу фильтровать по ним, используя раскрывающийся раздел. Я хотел бы отфильтровать несколько раскрывающихся разделов и, по сути, «сложить» их вместе и показать мне все результаты, а не только для одного столбца

2. @MikeBrunner Хорошо … я не совсем уверен, чего вы хотите. Вы имеете в виду, что хотите иметь возможность фильтровать несколько столбцов в сводной таблице? Или ответ ОлдУгли ниже поможет?

Ответ №2:

Сводные таблицы работают лучше всего, когда ваши исходные данные «плоские», то есть предварительная организация не выполняется.

Ваши данные частично упорядочены.

Я бы рекомендовал, чтобы ваши необработанные данные выглядели следующим образом…

 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" amp; 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
  

Комментарии:

1. спасибо за помощь. Это кажется интересным и, возможно, может сработать. Как я могу перенести свой список, как указано выше, в индексированный список, подобный тому, который вы показали?

2. Я бы использовал VBA. Я отредактировал решение, чтобы включить то, как может выглядеть VBA.