2016-01-10 18 views
0

我正在製作一個包含Google表格的練習跟蹤表,並且遇到了問題。該工作表有一個原始數據表格,例如日期,從驗證列表中選擇的鍛鍊類型,以及設置,代表,體重,您的名字。爲了找到有用的信息進行分析,我建立了一個數據透視表。我想爲每個練習的每種類型的價值找到最大值。有條件格式:最大值,將行與特定數據進行比較

table

例如,在列d所有的「DL-米BB」的三個實例進行比較,該表應突出它們之間的所有最高值:H9將記錄重量,F5記錄體積和如此,對於「SQ-lb BB盒」H12將是最大重量和F3最大音量。最終桌子每年會有數百行,並且每個屬性每次鍛鍊的最大值將會是一項任務太多,在別處花費的時間會更多。

回答

0

您可以按照上面給出的兩個示例設置條件格式。每個都設置一個單獨的規則。他們從同一個單元格(H1)中添加額外的規則。

應用到範圍

H1:H1000

定義公式是

= $ H1 = MAX(過濾器($ d:$ H,$ d:$ d =「DL-米BB 「))

添加另一個規則

應用到範圍

H1:H1000

自定義公式是

= $ H1 = MAX(過濾器($ d:$ H,$ d:$ d = 「SQ-LB框BB」))

廣場這對您的數據透視表頁面(嘗試M1 - 它必須在PT之外) 它正確列出最大值。

=UNIQUE(query($D2:$K,"SELECT D,Max(F),Max(G),Max(H),Max(I),Max(J), Max(K) Where D !='' Group By D Label Max(F) 'Max F', Max(G) 'Max G', Max(H) 'Max H', Max(I) 'Max I',Max(J) 'Max J',Max(K) 'Max K'")) 

下面的查詢列出適用於F

=query($D2:$F,"SELECT Max(F) Where D !='' Group By D label Max(F)''") 

我一直在使用條件格式嘗試這和它差不多的作品最大。也許你會看到我沒有的東西。仍在嘗試。

This Works。

function onOpen(){ 
keepUnique() 
} 

function keepUnique(){ //create array og unique non black values to find max for 
    var col = 4 ; // choose the column you want to use as data source (0 indexed, it works at array level) 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sh = ss.getSheets()[1]; 
    var data = sh.getRange(2, col, sh.getLastRow()-2).getValues(); 
    var newdata = new Array(); 
    for(nn in data){ 
    var duplicate = false; 
    for(j in newdata){ 
     if(data[nn][0] == newdata[j][0] || data[nn][0]==""){ 
     duplicate = true; 
     } 
    } 
    if(!duplicate){ 
     newdata.push([data[nn][0]]); 
    }} 
    colorMax(newdata) 
    } 

    function colorMax(newdata){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sh = ss.getSheets()[1]; 
    lc=sh.getLastColumn() 
    var data = sh.getRange(2, 4, sh.getLastRow()-2,lc).getValues(); //get col 4 to last col 
    for(k=2;k<lc;k++){ 
    for(i=0;i<newdata.length;i++){ 
     var maxVal=0 
     for(j=0;j<data.length;j++){ 
     if(data[j][0]==newdata[i][0]){ 
     if(data[j][k]>maxVal){maxVal=data[j][k];var row=j+2} //find max value and max value row number 
    }} 
    var c =sh.getRange(row,k+4,1,1)//get cell to format 
    var cv=c.getValue() 
    c.setFontColor("red") //set font red 
    }} 
    } 
+0

謝謝你的回答。只有一個問題:目前,我已經列出了1040個包含變化的列表練習,即使我減少了跟蹤練習的數量,仍然會剩下很多。我有一張表中列出的練習。有沒有辦法在該公式中解決所有問題?我嘗試了DGET,但它給我帶來了$ F2 = max(過濾器($ D:$ F,$ D:$ D =「liikkeet!a2:q255」))的循環依賴錯誤(公式根據我的工作表進行了調整,因此差異,表被命名爲Liikkeet) – kuura

+0

啊,我抄了錯誤的測試公式。這裏是DGET公式:= $ F2 = max(filter($ D:$ F,$ D:$ D =(dget(Liikkeet !, A:Q,「」))) – kuura

+0

我不知道如何在條件格式公式中輸入一個變量值。你可以在另一張表中引用一個單元格,但我認爲這對你沒有幫助。我有幾個問題。從你的例子中,你是否需要列H或F-K的最大值?您是否曾嘗試向Max彙總的數據透視表中添加新的Value列?這可能對你有用。如果沒有,我可以告訴你如何使用應用程序腳本。 –