|
太阳能,你那个问题可用excel-vba解决,下面代码仅实现前100%beta里各个id出现的频率,如前30%可修改Rank=100为Rank=30,如此类推。还请牛人修改下面代码,使其自动化。
Sub 查询()
'
' 统计频率 宏
' 在100%的beta里统计各个id出现的频率
'
'注意源数据表名为Sheet1 (2),透视表名要为Sheet3.
Columns("A:A").Select
Selection.FormatConditions.AddTop10
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1)
.TopBottom = xlTop10Top
.Rank = 100 '可修改为你需要前%的数值,100表示前100%
.Percent = True
End With
With Selection.FormatConditions(1).Font
.ColorIndex = xlAutomatic
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 10498160
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
ActiveWindow.SmallScroll Down:=-36
Range("A1:C25").Select
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Sheet1 (2)!R1C1:R25C3", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Sheet3!R3C1", TableName:="数据透视表1", DefaultVersion:= _
xlPivotTableVersion14
Sheets("Sheet3").Select
Cells(3, 1).Select
ActiveSheet.PivotTables("数据透视表1").AddDataField ActiveSheet.PivotTables("数据透视表1" _
).PivotFields("id"), "求和项:id", xlSum
With ActiveSheet.PivotTables("数据透视表1").PivotFields("id")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("数据透视表1").PivotFields("求和项:id")
.Caption = "计数项:id"
.Function = xlCount
End With
Range("B7").Select
With ActiveSheet.PivotTables("数据透视表1").PivotFields("计数项:id")
.Calculation = xlPercentOfColumn
.NumberFormat = "0.00%"
End With
End Sub
|