2014-07-21 2 views
-1

올바른 방법을 사용하고 있는지 확실하지 않아 사용하지 않을 경우 용서해주십시오.Excel 피벗 테이블 필터에서 가장 높은 값 조합 찾기

이전 이메일 캠페인의 많은 데이터가 있습니다. 내가 제목 줄 내용에 대한 논리 값 (Y/N)와 함께 캠페인을 분류 예 : 한 : 제목 줄이를 개인화, 제목 줄은 긴급 등 ...

I 열기 속도와 같은 열을 실행하고이 들어있는 값을 '평균 개방률'로 표시합니다. 행 레이블은 캠페인 이름이고 보고서 필터는 모두 부울 값입니다.

enter image description here

나는 가장 높은 평균 개방 속도가 발생합니다 '최강 조합'을 얻기 위해 노력하고 있어요. 가장 높은 평균을 찾을 때까지 필터를 Y/N 옵션을 직접 선택하기보다는이 프로세스를 자동화하는 방법이 있습니까?

예로서; 개인 Y
Subjectline - - 긴급 Y
Subjectline - 제품 그룹 N
Subjectline - 할인 값 Y
Subjectline - 이벤트 참조 N

Subjectline :이 같은 것입니다 끝낼려고 해요 Subjectline는 - LOLS Y

나는이 테이블은 수동으로 수행에 사용되는 시간 아니라는 것을 이해하지만 나는 맥주 데이터 세트 및 주파수에 비슷한 작업을 실행하려면 - 브랜드 N
Subjectline을 포함합니다 그렇게하면 자동으로 자동화 할 수 있습니다.

+0

하이 제임스의에 대한 자세한 설명이 필요하면 알려 주시기 바랍니다. 이 낡은 질문에 대해 물어 본지 3 일 후에, 어떤 용도로든 아래 답변이 나왔습니까? 그렇다면 답장하거나 수락하거나 투표하십시오. – halfer

답변

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 

코드는 자기 설명해야합니다, 당신은 코드 :