#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.