У меня есть данные больницы на SQL-сервере, которые относятся к пациентам, у которых либо есть дата (это нормально), либо есть дата, которую необходимо пересмотреть, либо нет даты. Сохраняя по одной строке для каждого пациента, я добавил в конце набора данных 3 столбца для этих 3 столбцов («Дата», «ToBeReviewed» и «NoDate»). Там заполняется 1, если применимо, иначе NULL. Затем у меня также есть вычисление для «Всего», которое просто суммирует эти 3 столбца.
Я извлекаю данные в сводную таблицу Excel с помощью хранимой процедуры, связанной с этим набором данных, и суммирую эти 4 столбца. Я хочу, чтобы при детализации отображались только данные, как это показано в сводной таблице, но следует признать, что сводные таблицы не работают таким образом, и вам необходим VBA для удаления значений NULL. Я не смог выполнить эту работу должным образом, так как есть 3 разных столбца - хотя у меня есть приведенный ниже код для работы с одним столбцом ранее.
Нашел приведенный ниже код в Интернете, но я не знаю, как изменить его, чтобы учесть несколько имеющихся у меня столбцов. Я попытался повторить код для каждого из 4 столбцов, которые у меня есть, работая на fieldno, но это не сработало, как ожидалось.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim PTCll As PivotCell
On Error Resume Next
Set PTCll = Target.PivotCell
On Error GoTo 0
If Not PTCll Is Nothing Then
If PTCll.PivotCellType = xlPivotCellValue Then
Cancel = True
Target.ShowDetail = True
If Not IsError(Application.Match(PTCll.DataField.SourceName, Array("Metric1", "Metric2", "Metric4", "Metric5", "Metric6", "Metric7"), 0)) Then
With ActiveSheet
FieldNo = Application.Match(PTCll.DataField.SourceName, .Rows(1), 0)
If Not IsError(FieldNo) Then
With .ListObjects(1)
.Range.AutoFilter Field:=FieldNo, Criteria1:="="
.DataBodyRange.EntireRow.Delete
.Range.AutoFilter Field:=FieldNo
End With
.Range("A1").Select
End If
End With
End If
End If
End If
End Sub
Ожидаемый результат будет в том, что можно будет щелкнуть ячейку в сводной таблице, поскольку она отображает общую сумму в любом из этих 4 столбцов, и получить детализацию, которая совпадает с цифрой в сводной таблице