0

我有一个数据透视图,将字段的 % 显示为值,但我希望标签是 % 和 % 所基于的运行数的组合。

当前的:

当前的

我想要什么:

我想要什么

% 数字很简单,因为当我遍历数据系列集合时,我可以从中获取值,但我不知道如何获取 () 中的数字。

我可以对原始数据集(约 7000 行)进行计数以获取数字,但这意味着我需要两个行轴项的当前值。轴项

那么当我循环遍历 seriescollection 点以获取轴字段中两项的值时,有没有办法

EG 当我在 16.86 点时,我可以得到“响应性”和“无评论/无响应”的值,这样我就可以做计数和 () 中的数字

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 回答