1

行セクションに複数のレベルを持つ PowerPivot に基づくピボット テーブルがあります。かなりの数の要素が空白です。空白行を抑制する方法はありますか?

私のピボットテーブルは現在このようになっています。

Product1
    Release 1
        Iteration 1
            (blank)
        Iteration 2
            (blank)
    Release 2
        (blank)
            (blank)
Product2
    (blank)
Product3
    Release 1
        Iteration 1
            Sprint 1
            (blank)
        (blank)
(blank)

これは私がそれをどのように見せたいかです

Product1
    Release 1
        Iteration 1
        Iteration 2
    Release 2
Product2
Product3
    Release 1
        Iteration 1
            Sprint 1

これはほんの一例です。空白を表示しないように各レベルのフィルターを設定しようとしましたが、各レベルをフィルター処理して空白のフィールドを非表示にすると、ピボット テーブルに項目がありません。Excel は、空白の値を持つ各レベルを除外することになるようです。

トラブルシューティングに十分な情報を提供したかどうかはわかりません。現時点で私はほとんど脳死状態ですので、お詫び申し上げます。

それが意味をなさない場合、または私がやろうとしていることと遭遇したことを明確にするために追加情報を提供できるかどうかをお知らせください.

ありがとう。

編集:コードブロックをより明確に変更し、「後」のコードブロックを追加して、何をしたいのかを示しました。問題は、ピボット テーブル全体の行の「深さ」が等しくなければならないことだと思います。たとえば、最初の項目に 3 つのインデントがある場合、他の項目も 3 レベルのインデントに相当するデータを表示する必要があります。空白を非表示にして、最初の項目のデータが 1 インデントに相当する場合、1 インデントの後に表示される場合、他の項目の非空白も非表示になります。それが意味をなすかどうかはまだわかりません:)私は少し眠る必要があります。

4

5 に答える 5

1

ピボットテーブル オプションの [表示]をチェックShow items with no data on rowsしたり、表示したりできるはずです。Show items with no data on columns

于 2013-08-07T16:46:20.337 に答える
1

代わりに、PowerPivotの「管理」画面からフラット化されたピボットテーブルを使用することになりました。それは私が必要としていたことをしているように見えました。

于 2013-08-16T13:42:07.340 に答える
1

まったく同じ問題を解決する必要がありましたが、ピボットテーブルのフィルタリングが変更されたとき、またはデータが更新されたときに行が自動的に非表示になるようにしたかったため、ピボットテーブルを保持しているシートの「Worksheet_PivotTableUpdate」イベントから呼び出される関数を作成しましたが、必要に応じて、ボタンからそれを駆動することもできます。これは最初に、ピボットテーブルの各行をスキャンし、表示されていて必要がない場合は非表示にし (行の最初のセルが「(空白)」だったため)、非表示の場合は表示することでジョブを実行しました。それ以外の場合は、それを非表示または表示のままにしておくだけです。

ただし、関数の実行が非常に遅いことがわかったので、最初にピボットテーブルのすべての行を非表示にしてから、最初の列のすべての空白セルを見つけて範囲オブジェクトに追加してから、次の試みを行います。その範囲内のすべてのセルの行全体を非表示にします。このバージョンは約 10 倍速く動作します :-)

ピボットテーブルが存在するシートの名前、ピボットテーブルの名前、および非表示にする必要がある行で検索するオプションの文字列を渡します。これは、呼び出し元の関数によって提供されない場合、デフォルトで「(空白)」になります。

私が誰かの変数や関数の命名規則に違反した場合は、あらかじめお詫び申し上げます (私はただのハッカーです ;-))

Sub FixBlankPivotRowsV2(ByVal SheetName As String, ByVal PivotName As String, Optional HideDefn as String = "(blank)")
Dim CurrPivot As PivotTable
Dim CurrRow As Range
Dim BlankRange As Range        'NB This is where we'll build the range of things to hide, which will initially be Nothing, as we never initialise it.
Dim oldStatusBar As Boolean

'Show a nice message in the status bar
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Application.StatusBar = "Hiding blank entries in " & SheetName & ", back in a sec..."
Application.ScreenUpdating = False

'Get the pivottable to work with        
Set CurrPivot = ActiveWorkbook.Sheets(SheetName).PivotTables(PivotName)

'Unhide all of the pivot rows first
CurrPivot.RowRange.Rows.EntireRow.Hidden = False

'Loop around each row in the pivottable
For Each CurrRow In CurrPivot.RowRange.Rows
    If CurrRow.Offset(0, 0).value = HideDefn Then
        If BlankRange Is Nothing Then
            'This is the first blank row we've found, so just set the range up to be the first cell of that range
            Set BlankRange = CurrRow.Offset(0, 0)
        Else
            'Add the newly found blank row to the range using a Union
            Set BlankRange = Union(BlankRange, CurrRow.Offset(0, 0))
        End If
    End If
Next

'Only hide things if there's anything to hide!
If BlankRange Is Nothing Then
    Debug.Print "Nothing to hide!"
Else
    BlankRange.EntireRow.Hidden = True
End If

'Set the status bar back the way it was
Application.ScreenUpdating = True
Application.StatusBar = False
Application.DisplayStatusBar = oldStatusBar
End Sub

Go To Special タイプの機能の 1 つを使用して、最初の列のすべての「空白」セルを選択する方法を探しましたが、法案に適合するものは見つかりませんでした。方法を知っている場合はお知らせください。これをさらにスピードアップするようなことをしてください。

これが誰かに役立つことを願っています!

于 2015-11-25T16:43:10.323 に答える
0

ピボットテーブルの「空白」のセルを選択して、削除ボタンを押してスペースバーを押します。

于 2013-12-12T03:58:17.173 に答える
0

これがなぜ、またはどのように機能するのかはわかりませんが、(空白) を含むピボットテーブルのセルの 1 つを選択し、次にホットスペースバーを選択しました。次にリターン キーを押すと、同じ列のすべての (空白の) セルが空白になりました。テーブルの他の列に対してこれを繰り返しました。

于 2014-02-27T20:55:13.367 に答える