0

フィールドの % を値として表示するピボット チャートがありますが、ラベルを % と % が基づいている連続数の組み合わせにしたいと考えています。

現時点の:

現時点の

私が欲しいもの:

私が欲しいもの

データシリーズコレクションをループするとそこから値を取得できるため、% 数値は簡単ですが、() 内の数値を取得する方法がわかりません。

生のデータセット (〜 7000 行) で countif を実行して数値を取得できますが、それは、2 つの行軸アイテムの現在の値が必要であることを意味します。軸アイテム

seriescollection ポイントをループして、軸フィールドの 2 つの項目の値を取得する方法はありますか

EG 16.86 ポイントにいるとき、"Responsiveness" と "No Comments / No Response" の値を取得できるので、countif と () 内の数字を実行できます

4

2 に答える 2

0

私自身の質問に対する答えを得たようです。結局、ピボットフィールドをループして不要なものをスキップし、ループ中にポイントを更新しました。

これが私がしたことのサンプルです:

Set WSpt = Sheets("PivotTablesSheet")
Set pt = WSpt.PivotTables("PivotTableName")
Set pf = pt.PivotFields("FieldName")
F = pt.PivotFields("FilterName").CurrentPage.Name 'if Needed
Vals = Cht.SeriesCollection(1).Values 'Values of the chart because you can not work with them directly :(
Set LR = WSpt.Cells(pf.DataRange.Row, pf.DataRange.Column) 'First Cell in Field DataRange

'loop through cells in FieldName DataRange
For i = 1 To pf.DataRange.Cells.Count
    'Put in check to see if the cell that was currently being checked was part of the primary field or the secondary one (only needed because I had a multi-level field setup
    On Error Resume Next
    tmp = pt.PivotFields("Main").PivotItems(LR.Value)
    If Err.Number = 0 Then
        Q = LR.Value
        Set LR = LR.Offset(1, 0)
        i = i - 1
    Else
        RC = LR.Value
        Set LR = LR.Offset(1, 0)
        'change formula to get the number value based on if the "(All)" option was selected or if just some items in the table need to be counted
        If F = "(All)" Then
            'Save Results of CountIF in the NUM variable
            Num = Application.WorksheetFunction.CountIfs(Sheets("DataSheet").Range(Sheets("DataSheet").ListObjects("DataTBL").ListColumns("Main").DataBodyRange.Address), Q, _
                Sheets("Data").Range(Sheets("DataSheet").ListObjects("DataTBL").ListColumns("FieldName").DataBodyRange.Address), RC)
        Else
            Num = Application.WorksheetFunction.CountIfs(Sheets("Data").Range(Sheets("DataSheet").ListObjects("DataTBL").ListColumns("FilterName").DataBodyRange.Address), F, _
                Sheets("Data").Range(Sheets("DataSheet").ListObjects("DataTBL").ListColumns("Main").DataBodyRange.Address), Q, _
                Sheets("Data").Range(Sheets("DataSheet").ListObjects("DataTBL").ListColumns("FieldName").DataBodyRange.Address), RC)
        End If
        Cht.SeriesCollection(1).Points(i).DataLabel.Text = FormatPercent(Vals(i), 1) & "  (" & Num & ")"
        Cht.SeriesCollection(1).Points(i).DataLabel.Orientation = xlUpward
    End If
Next i
End Sub
于 2014-04-24T21:34:03.450 に答える
0

ラベルをクリックし、=キーを押してセルをポイントすると、ポイントしたセルの値が表示されます。これを行うには、必要な方法で値をフォーマットするヘルパー セルを作成する必要があります。

于 2014-04-22T18:20:44.513 に答える