sheet 上的单元格条件格式(颜色)基于另一个 sheet 上的值
Conditional Formatting (Color) of cells on a sheet based on values on another sheet
我正在尝试实现条件格式但无法整理系统。
我想要实现的目标:
- 在两个 sheet 中匹配样式和模式列。范围:A21:B40 与 A2:C63.
- 匹配时,顺序 Sheet 中的列 headers ( G1 : AO1 ) 将与指南匹配 Sheet 行值 A21: B40,其中单元格的颜色将根据按照 sheet 的顺序转到指南 sheet。如果任何列 headers 不匹配,那么它将保持白色。
我附上了一个示例 sheet,其中 sheet 订单中的 ST5 被用作示例,但是是手动的。如果这个过程可以自动化,那将减轻我在办公室的工作。
示例Sheet
https://docs.google.com/spreadsheets/d/1cTgAKhIO0_OJgoReuAMSaZU-7BE4P2xHdt3ASsPgIH0/edit?usp=sharing
我也愿意做一个环聊电话来整理这些系统。
抱歉无法解释清楚,在此先感谢。
对于指南,您需要 4 条规则。在单元格 C21 中添加。这将颜色代码指南。
应用于范围 C21:R1017(适用于所有 4 条规则)
自定义公式
=match(C21,$C:$C,0)
=match(C21,$E:$E,0)
=match(C21,$G:$G,0)
=match(C21,$I:$I,0)
对于订单,您需要脚本。请尝试以下操作:
function colorCells(){
var ss=SpreadsheetApp.getActiveSpreadsheet()
var s=ss.getSheetByName("Orders")
var s1=ss.getSheetByName("Guide")
var lr=s.getLastRow()
var lc=s.getLastColumn()
var lr1=s1.getLastRow()
var lc1=s1.getLastColumn()
var orderdata=s.getRange(1, 1, lr, lc).getValues()
var guidedata=s1.getRange(21, 1, lr1=21, lc1).getValues()
var headers=s.getRange(1, 7, 1, lc-6).getValues()
for(var i=0;i<orderdata.length;i++){
for(var j=0;j<guidedata.length;j++){
if(orderdata[i][1]==guidedata[j][0] && orderdata[i][2]==guidedata[j][1]){
var row=i+1
var row1=j+21
var line=s1.getRange(row1, 3, 1,18).getBackgrounds()
var lval=s1.getRange(row1, 3, 1,18).getValues()
for(var k=0;k<headers[0].length;k++){
for(var l=0;l<lval[0].length;l++){
var t=headers[0][k]
var t1=lval[0][l]
if(t==t1){
var c=s1.getRange(row1, l+3, 1,1).getBackground()
var sc=s.getRange(row, k+7, 1,1).setBackground(c)
}}}}}}}
这是电子表格的工作示例。复制并尝试一下:
https://docs.google.com/spreadsheets/d/12KoRLAnkJwQB0OKTmauxmqxq5BT71gyIgCo3Wf-jemk/edit?usp=sharing
我正在尝试实现条件格式但无法整理系统。 我想要实现的目标:
- 在两个 sheet 中匹配样式和模式列。范围:A21:B40 与 A2:C63.
- 匹配时,顺序 Sheet 中的列 headers ( G1 : AO1 ) 将与指南匹配 Sheet 行值 A21: B40,其中单元格的颜色将根据按照 sheet 的顺序转到指南 sheet。如果任何列 headers 不匹配,那么它将保持白色。
我附上了一个示例 sheet,其中 sheet 订单中的 ST5 被用作示例,但是是手动的。如果这个过程可以自动化,那将减轻我在办公室的工作。
示例Sheet https://docs.google.com/spreadsheets/d/1cTgAKhIO0_OJgoReuAMSaZU-7BE4P2xHdt3ASsPgIH0/edit?usp=sharing
我也愿意做一个环聊电话来整理这些系统。
抱歉无法解释清楚,在此先感谢。
对于指南,您需要 4 条规则。在单元格 C21 中添加。这将颜色代码指南。
应用于范围 C21:R1017(适用于所有 4 条规则)
自定义公式
=match(C21,$C:$C,0)
=match(C21,$E:$E,0)
=match(C21,$G:$G,0)
=match(C21,$I:$I,0)
对于订单,您需要脚本。请尝试以下操作:
function colorCells(){
var ss=SpreadsheetApp.getActiveSpreadsheet()
var s=ss.getSheetByName("Orders")
var s1=ss.getSheetByName("Guide")
var lr=s.getLastRow()
var lc=s.getLastColumn()
var lr1=s1.getLastRow()
var lc1=s1.getLastColumn()
var orderdata=s.getRange(1, 1, lr, lc).getValues()
var guidedata=s1.getRange(21, 1, lr1=21, lc1).getValues()
var headers=s.getRange(1, 7, 1, lc-6).getValues()
for(var i=0;i<orderdata.length;i++){
for(var j=0;j<guidedata.length;j++){
if(orderdata[i][1]==guidedata[j][0] && orderdata[i][2]==guidedata[j][1]){
var row=i+1
var row1=j+21
var line=s1.getRange(row1, 3, 1,18).getBackgrounds()
var lval=s1.getRange(row1, 3, 1,18).getValues()
for(var k=0;k<headers[0].length;k++){
for(var l=0;l<lval[0].length;l++){
var t=headers[0][k]
var t1=lval[0][l]
if(t==t1){
var c=s1.getRange(row1, l+3, 1,1).getBackground()
var sc=s.getRange(row, k+7, 1,1).setBackground(c)
}}}}}}}
这是电子表格的工作示例。复制并尝试一下:
https://docs.google.com/spreadsheets/d/12KoRLAnkJwQB0OKTmauxmqxq5BT71gyIgCo3Wf-jemk/edit?usp=sharing