我不确定我是否使用了正确的技术,所以如果我离开,请原谅我。
我从之前的电子邮件广告系列中获得了大量数据。我已根据主题行内容的布尔值(Y / N)对广告系列进行分类,例如:主题行已个性化,主题行包含紧急度等...
我将列作为开放率运行,值为“平均开放率”#39;行标签是广告系列名称,报告过滤器是所有布尔值。
我正在努力获得最终的组合'这将导致最高的平均开放率。有没有办法自动化这个过程,而不是通过并手动选择过滤器的Y / N选项,直到找到最高的平均值?
作为一个例子;我试图最终得到的结果是这样的:
主题 - 个性化Y
主题 - 紧迫性Y
主题 - 产品组N
主题 - 折扣价Y
主题 - 事件参考N
主题 - 包含品牌N
主题 - LOLS Y
据我所知,对于这个表来说,手动执行它并不耗费时间,但我想在大型数据集上运行类似的操作,所以如果我可以自动化它会很棒。
答案 0 :(得分:0)
如果您了解VBA,可以尝试以下方法:
Sub macro1()
Dim filters As PivotFields
Dim combinations As Integer
Dim reportRow As Integer
Dim pt As PivotTable
' PivotTable to manipulate... pls modify yourself
Set pt = ActiveWorkbook.Sheets("Sheet4").PivotTables("PivotTable1")
Set filters = pt.PageFields ' Array of all page filters
combinations = 2 ^ filters.Count
reportRow = 2
' For each combinations
For i = 1 To combinations
' Set filter to {N N N} {N N Y} {N Y N} {N Y Y} {Y N N} ... etc
For n = 0 To filters.Count - 1
If ((i And (2 ^ n)) > 0) Then
filters(n + 1).CurrentPage = "Y"
Else
filters(n + 1).CurrentPage = "N"
End If
Next n
' Extract results ... modify it yourself
Cells(reportRow, 10).FormulaR1C1 = pt.GetData("Value")
For n = 1 To filters.Count
Cells(reportRow, 10 + n).FormulaR1C1 = filters(n).CurrentPage
Next n
reportRow = reportRow + 1
Next i
End Sub
代码应该是自我解释的,如果您需要对任何代码进一步说明,请告诉我:))