条件格式:最大值,比较具有特定数据的行

时间:2016-01-10 15:33:32

标签: formatting google-sheets conditional highlight

我正在使用Google表格制作练习跟踪表,并遇到了问题。工作表有一个原始数据表,例如从验证列表中选择的日期,运动类型,以及您为其命名的集合,代表,重量。为了找到有用的分析信息,我设置了一个数据透视表。我想找到每个练习的每种类型值的最大值。

table

例如,比较D列中“DL-m BB”的所有三个实例,该表应突出显示所有这三个实例之间的最高值:H9将是记录重量,F5记录量等等,以及“ SQ-lb BB盒“H12将是最大重量和F3最大体积。最终,该表每年将有几百行,并且每个属性的每个练习中找到最大值将是一个太大的任务,花在其他地方的时间更好。

1 个答案:

答案 0 :(得分:0)

对于上面给出的两个示例,可以将条件格式设置如下。为每个规则设置单独的规则。它们是从同一个单元格(H1)中添加一个附加规则设置的。

申请范围

H1:H1000

自定义公式

= $ H1 = max(过滤器($ D:$ H,$ D:$ D =“DL-m BB”))

添加其他规则

申请范围

H1:H1000

自定义公式

= $ H1 = max(过滤器($ D:$ H,$ D:$ D =“SQ-lb框BB”))

将其放在您的Pivot表页面上(尝试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)''")

我一直在尝试使用条件格式化,它几乎可以工作。也许你会看到我没有的东西。还在努力。

这很有效。

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
  }}
  }