条件格式:最大值,比较行与特定数据
Conditional formatting: max value, comparing rows with specific data
我正在使用 Google 表格进行锻炼跟踪 sheet,运行 遇到了问题。 sheet 有一个 table 用于原始数据,例如天数、从经过验证的列表中选择的锻炼类型、组数、重复次数、体重等等。为了找到有用的信息进行分析,我设置了一个支点table。我想找到每次锻炼的每种价值类型的最大值。
例如,比较 D 列中 "DL-m BB" 的所有三个实例,table 应突出显示它们之间的最高值:H9 是记录重量,F5 记录体积等on,对于 "SQ-lb BB box",H12 将是最大重量,F3 将是最大体积。最终 table 每年将有数百行,找到每个属性的每个练习的最大值将是一项艰巨的任务,最好将时间花在其他地方。
对于您上面给出的两个示例,条件格式可以设置如下。为每个设置单独的规则。它们是从同一个单元格 (H1) 中添加附加规则设置的。
应用于范围
H1:H1000
自定义公式为
=$H1=max(过滤器($D:$H,$D:$D="DL-m BB"))
再添加一条规则
应用于范围
H1:H1000
自定义公式为
=$H1=max(过滤器($D:$H,$D:$D="SQ-lb box BB"))
将其放在您的 Pivot table 页面上(尝试 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
}}
}
我正在使用 Google 表格进行锻炼跟踪 sheet,运行 遇到了问题。 sheet 有一个 table 用于原始数据,例如天数、从经过验证的列表中选择的锻炼类型、组数、重复次数、体重等等。为了找到有用的信息进行分析,我设置了一个支点table。我想找到每次锻炼的每种价值类型的最大值。
例如,比较 D 列中 "DL-m BB" 的所有三个实例,table 应突出显示它们之间的最高值:H9 是记录重量,F5 记录体积等on,对于 "SQ-lb BB box",H12 将是最大重量,F3 将是最大体积。最终 table 每年将有数百行,找到每个属性的每个练习的最大值将是一项艰巨的任务,最好将时间花在其他地方。
对于您上面给出的两个示例,条件格式可以设置如下。为每个设置单独的规则。它们是从同一个单元格 (H1) 中添加附加规则设置的。
应用于范围
H1:H1000
自定义公式为
=$H1=max(过滤器($D:$H,$D:$D="DL-m BB"))
再添加一条规则
应用于范围
H1:H1000
自定义公式为
=$H1=max(过滤器($D:$H,$D:$D="SQ-lb box BB"))
将其放在您的 Pivot table 页面上(尝试 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
}}
}