2013-11-28 7 views
0

Я пытаюсь отфильтровать сводную таблицу, и это зависит от пользовательских критериев, которые всегда равны 12 значениям.vba case критерии для сводной таблицы

Чтобы создать критерии у меня есть диапазон возможных значений и следующий код создает новый столбец 1 или 0, один смысл включить в фильтре:

For i = 123 To 5 Step -1 
    Cells(i, 60).Value = 0 
    If Cells(i, 59).Value = Criterio Then Cells(i, 60).Value = 1 
    If Cells(i, 59).Value = Criterio Then Indicador = Indicador + 1 
    If Indicador > 0 And Indicador <= 12 Then Cells(i, 60).Value = 1 
    If Indicador = 1 Then PivotSelection = Criterio & Chr(34) 
    If Indicador > 1 And Indicador < 12 Then PivotSelection = PivotSelection & "," & Chr(34) & Cells(i, 59).Value & Chr(34) 
    If Indicador = 12 Then PivotSelection = PivotSelection & "," & Chr(34) & Cells(i, 59).Value 
    If Indicador > 0 Then Indicador = Indicador + 1 
Next i 

Так он возвращает строку типа: " 2012.01 "," 2012.02 "," 2012.03 ", ...," 2012.12 ".

Я думал, что лучший способ - фильтровать шарнир, используя CASE. Проблема заключается в том, что, когда я использую этот критерий в варианте CASE, он не работает:

ActiveSheet.PivotTables("Table").PivotFields("CLOSING_MONTH"). _ 
    CurrentPage = "(All)" 
With ActiveSheet.PivotTables("Table").PivotFields("CLOSING_MONTH") 
    For Each oPi In .PivotItems 
     If oPi = "(blank)" Then Exit For 
     Select Case oPi.Value 
      Case PivotSelection 
       If oPi.Visible = False Then oPi.Visible = True 
      Case Else 
       If oPi.Visible = True Then oPi.Visible = False 
      End Select 
    Next oPi 
End With 

Любая идея?

+0

Если проблема заключается в двойные кавычки, то вы можете использовать 'Chr (34)' в VBA. 'Chr (34) & Criterio & Chr (34)' – Sam

+0

I changed for: If Indicador = 1 Then PivotSelection = Chr (34) & Criterio & Chr (34) Если Indicador> 1 и Indicador <= 12 Then PivotSelection = PivotSelection & "," & Chr (34) & Cells (i, 59) .Value & Chr (34) Но окончательный результат все еще имеет двойную цитату: "" 2012.01 "," 2012.02 "", и статус дела не работает. .... – user3046441

+0

Я изменяю код, чтобы избежать двойной цитаты, но случай все еще не работает ... – user3046441

ответ

0

Попробуйте вместо Select Case

If (InStr(1, PivotSelection, oPi.Value)) Then 
    oPi.Visible = True 
Else 
    oPi.Visible = False 
End If 
+0

Это работает !!!! Большое спасибо: D – user3046441

Смежные вопросы