我想,
如果Sheet1 ColumnB = Sheet89 ColumnA
然后匹配的Sheet1 B列单元格将为绿色 这是我的demo sheet。
基于某些指导原则,我做了这个,但没有奏效。
function formatting() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var columnB = sheet.getRange(1, 2, sheet.getLastRow()-1, 1);
var bValues = columnB.getValues();
var sheet89 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet89');
var columnO = sheet89.getRange(1, 1, sheet.getLastRow()-1, 1);
var oValues = columnO.getValues();
for (var h = 0; h < bValues.length; h++) {
for (var i = 0; i < oValues.length; i++) {
if (oValues[i][0] == bValues[h][0]) {
sheet.getRange(i + 2, 1, 1, 1).setBackgroundColor('green');
}
}
}
}
答案 0 :(得分:0)
下面的解决方案将使用sheet1的B列中的值迭代每个单元格,并根据sheet89的A列中的每个值进行检查(尽管您根据getValues函数命名了此ColumnO,但它将从A列中获取值)。
如果找到匹配项,则会将sheet1列B中的单元格变为绿色。在您的示例代码中,您使用i循环变量(遍历sheet89上的行)以使sheet1上的单元格变为绿色。目前尚不清楚哪些细胞想要变绿。我假设它是sheet1上的单元格,所以我将代码更改为
sheet.getRange(h+1, 2).setBackgroundColor('green');
此外,单个单元格的getRange函数只需要2个参数,因此我删除了为单元格颜色着色的行的numRows和numColumns参数。
我不确定为什么bValues和oValues会排除最后一行,但我删除了每一行中的-1,因为如果由于任何原因它在空白工作表上运行,它将导致代码失败。 getLastRow()返回带有值的最后一行,而不是工作表中的下一个空行。如果你想要捕获整个工作表,那么你就不应该使用-1。
function formatting() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var columnB = sheet.getRange(1, 2, sheet.getLastRow(), 1);
var bValues = columnB.getValues();
var sheet89 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet89');
var columnO = sheet89.getRange(1, 1, sheet.getLastRow(), 1);
var oValues = columnO.getValues();
for (var h = 0; h < bValues.length; h++) {
for (var i = 0; i < oValues.length; i++) {
if (oValues[i][0] == bValues[h][0]) {
sheet.getRange(h + 1, 2).setBackgroundColor('green');
}
}
}
}
答案 1 :(得分:0)
条件格式化可以实现我理解的要求(而不是目前示例表中显示的内容)。
在Google Spreadsheets中,由于安全性和授权,跨表格的条件格式化并不像单张表格那样简单。例如,对于速度,您可能希望将Sheet89
的内容复制到Sheet1
(仅两个单元格)以避免该问题,或者确实编写脚本。至少保持范围尽可能小。
然而,这可能很慢,但需要授权。
请清除Sheet1 ColumnA
之后的所有条件格式:
选择Sheet1
中的ColumnA,格式,条件格式...,格式化单元格,如果... Custom formula is
和
=countif(IMPORTRANGE(" k e y ","Sheet89!A:A"),A1)<>0
突出显示您的选择并完成。
上面的 k e y
代表Sheet89
的唯一识别码(看起来像1u4vq8vDne-aKMVdJQPREGOxx7n99FqIb_kuJ_bG-PzM
)。
图像显示当前图像的ColumnC中的内容(但在示例的ColumnA中),图像中的F1和F2显示示例的Sheet89
的ColumnA中的内容。较浅的棕色已应用条件格式::