我有一个VBA代码,可以创建一个数据透视表,然后根据动态范围找到平均值(因为数据透视表的大小总是在变化)
我想使用AVERAGEIF函数而不是平均值,以便我可以平均所有值"> 0"。我遇到的问题是Excel不允许在引号内引用,因此我无法将标准放在"> 0"在功能中。我目前的代码是:
Sub BuildLaborTable()
'
'This procedure builds the labor table and finds the average of the rows
ActiveWorkbook.ShowPivotTableFieldList = True
With ActiveSheet.PivotTables("Pivot ZP2P").PivotFields("Notif Service product")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("Pivot ZP2P").AddDataField ActiveSheet.PivotTables( _
"Pivot ZP2P").PivotFields("Actual Qty"), "Sum of Actual Qty", xlSum
With ActiveSheet.PivotTables("Pivot ZP2P").PivotFields("Notifctn")
.Orientation = xlColumnField
.Position = 1
End With
Range("A6").Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "Average"
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "Median"
ActiveCell.Offset(1, -1).Select
ActiveCell.FormulaR1C1 = "=AVERAGE(RC2:RC[-2])"
End Sub
我想使用公式AVERAGEIF(RC2:RC [-2],"> 0"),但问题是这需要引号内的引号是不允许的。
答案 0 :(得分:2)
您可以将引号加倍以在VBA中使用。作为旁注,你可以将很多行放在一起,以避免一直使用select
With Range("A6").End(xlToRight)
.Offset(0, 1).Value = "Average"
.Offset(0, 2).Value = "Median"
.Offset(1, 1).FormulaR1C1 = "=AVERAGEIF(RC2:RC[-2],"">0"")"
End With
答案 1 :(得分:1)
在VBA中的公式中使用引号时,只需“加倍”:
ActiveCell.FormulaR1C1 = "=AVERAGEIF(RC2:RC[-2],"">0"")"