2016-05-26 148 views
0

比例公式,我想计算成功的比例在Excel数据透视表。这是我的设计:的数据透视表

Row Labels Count Threshold-% 

REG1  224  0.00% 
    FALSE 11 
    TRUE 213 

REG2  213  0.00% 
    FALSE 13 
    TRUE 200 

REG3  318  0.00% 
    FALSE 3 
    TRUE 315 

REG4  467  0.00% 
    FALSE 7 
    TRUE 460 

Grand Total 1222 0.00% 

,这是我的VBA代码:

Sub CreatePivotTable() 

Dim sht As Worksheet 
Dim pvtCache As PivotCache 
Dim pvt As PivotTable 
Dim StartPvt As String 
Dim SrcData As String 
Dim lRow As Long 
Dim pf_name As String 

    pf_name = "Count of State" 

    lRow = Cells(Rows.Count, 12).End(xlUp).Row 

    'Data Range for Pivot Table 
    SrcData = ActiveSheet.Name & "!" & Range("A1:L" & lRow).Address(ReferenceStyle:=xlR1C1) 

    'Set Worksheet 
    Set sht = Worksheets("Metrics") 

    'Pivot Table Starting Point 
    StartPvt = sht.Name & "!" & sht.Range("A3").Address(ReferenceStyle:=xlR1C1) 

    'Create Pivot Cache from Source Data 
    Set pvtCache = ActiveWorkbook.PivotCaches.Create(_ 
     SourceType:=xlDatabase, _ 
     SourceData:=SrcData) 

    'Create Pivot Table From Pivot Cache 
    Set pvt = pvtCache.CreatePivotTable(_ 
     TableDestination:=StartPvt, _ 
     TableName:="PivotTable1") 

    Set pvt = Worksheets("Metrics").PivotTables("PivotTable1") 

    'Define Rows 
    sht.PivotTables("PivotTable1").AddFields RowFields:=Array("Region", "State") 

    'Create Count Column 
    With pvt.PivotFields("State") 
     .Orientation = xlDataField 
     .Function = xlCount 
     .Position = 1 
     .NumberFormat = "0" 
    End With 

    'Create Calculated Column 
    pvt.CalculatedFields.Add Name:="Threshold", Formula:="=SUM(True/True+False)" 

    'Populate Calculated Column 
    With pvt.PivotFields("Threshold") 
     .Orientation = xlDataField 
     .Function = xlSum 
     .Position = 2 
     .NumberFormat = "0.00%" 
     .Caption = "Threshold-%" 
    End With 

    'Show Grand Totals 
    pvt.ColumnGrand = True 
    pvt.RowGrand = True 

End Sub 

当我奋力创造的公式来执行我想要的设计。这是我用过的线:

'Create Calculated Column 
    pvt.CalculatedFields.Add Name:="Threshold", Formula:="=SUM(TRUE/TRUE+FALSE)" 

它给我的所有东西都是100%。我如何访问TRUE和FALSE值,以便我可以在正确的公式中使用它们?

另外,我只想要显示的总百分比(因此P%= TRUE /(TRUE + FALSE)* 100)针对每个区域,而不显示百分比总计TRUE或FALSE。然后我想显示区域百分比的平均值总计行中,像这样的:

Row Labels Count Threshold-% 

REG1  224  95.09% 
    FALSE 11 
    TRUE 213 

REG2  213  93.90% 
    FALSE 13 
    TRUE 200 

REG3  318  99.06% 
    FALSE 3 
    TRUE 315 

REG4  467  98.50% 
    FALSE 7 
    TRUE 460 

Grand Total 1222 96.64% 

回答

0

我认为这是你在找什么:

pvt.AddDataField pvt.PivotFields("State"), "Threshold", xlCount 
With pvt.PivotFields("Threshold") 
    .Calculation = xlPercentOfParentRow 
    .NumberFormat = "0.00%" 
End With 
+0

我很抱歉,我的问题没有得到没有我想象的那么清楚。该代码的工作,但只给我看了国家总的计数,然后是总的从总计的百分比。我所试图找出是每个地区的成功率(基于true和false值),然后获取这些结果的平均百分比的总计行中显示 –

+0

我已编辑的问题,以显示我是什么寻求帮助与 –

+0

我不知道的方式做到这一点与数据透视表,你可能不得不使用普通的公式,或者用VBA – tigeravatar