Google Sheets 自定义函数条件格式
Google Sheets custom function conditional formatting
如果单元格的值等于其上方两行单元格的值,我需要将单元格文本变为红色。我的脚本编辑器中有这两个函数:
/**
* Compares cell value to another cell relative in position to it.
* Returns true if equal values.
*
* @param {Number} colDiff Relative positioning column difference.
* @param {Number} rowDiff Relative positioning row difference.
*/
function equalsRelativeCellValue(rowDiff, colDiff) {
var thisCell = SpreadsheetApp.getActiveRange();
var relativeCellValue = getRelativeCellValue(rowDiff, colDiff);
if (thisCell.getValue() === relativeCellValue)
return true;
else
return false;
}
/**
* Returns value of cell according to relative position
*
* @param {Number} colDiff Relative positioning column difference.
* @param {Number} rowDiff Relative positioning row difference.
*/
function getRelativeCellValue(rowDiff, colDiff) {
var range = SpreadsheetApp.getActiveRange();
var col = range.getColumn();
var row = range.getRow();
var range2 = SpreadsheetApp.getActiveSheet().getRange(row + rowDiff,col + colDiff);
return range2.getValue();
}
第二个函数,getRelativeCellValue(rowDiff, colDiff)
工作得很好,我把 8
放在一个单元格中,在它下面的两个单元格中输入 getRelativeCellValue(-2, 0)
,单元格计算为 [=14] =].
但是第一个函数 getRelativeCellValue(rowDiff, colDiff)
由于某种原因不能作为条件格式中的自定义函数使用:
Custom formula is: =equalsRelativeCellValue(-2,0)
困难的部分是指在条件格式中引用的单元格的值。但是我的函数对我来说是正确的,如果单元格值相等,它是 returns true
,如果不相等,它是 false
。我希望我只是不正确地使用了条件格式的 "Custom formula is" 功能,但是 documentation is pretty sparse.
只要实现你想做的,只要使用条件格式,select范围,并申请第一个单元格,它会正确申请所有:
例如。
在条件格式对话框中,select 自定义公式,粘贴自定义公式 =J10=J8
,然后 select 范围 J10:J100
.
旧答案:
您创建了一个循环引用。
如果你在 Cell 中输入 =equalsRelativeCellValue(-2,0)
,如果它正在等待函数解析,它的值怎么可能是任何值?
您可以在值旁边的列中解决这个问题,或者直接在函数中传递值。
您还可以使用它使单元格之间具有 true/false 状态:
function equalsRelativeCellValue(rowDiff, colDiff) {
var below = getRelativeCellValue(1, 0);
var relativeCellValue = getRelativeCellValue(2, 0);
if (below === relativeCellValue)
return true;
else
return false;
}
如果单元格的值等于其上方两行单元格的值,我需要将单元格文本变为红色。我的脚本编辑器中有这两个函数:
/**
* Compares cell value to another cell relative in position to it.
* Returns true if equal values.
*
* @param {Number} colDiff Relative positioning column difference.
* @param {Number} rowDiff Relative positioning row difference.
*/
function equalsRelativeCellValue(rowDiff, colDiff) {
var thisCell = SpreadsheetApp.getActiveRange();
var relativeCellValue = getRelativeCellValue(rowDiff, colDiff);
if (thisCell.getValue() === relativeCellValue)
return true;
else
return false;
}
/**
* Returns value of cell according to relative position
*
* @param {Number} colDiff Relative positioning column difference.
* @param {Number} rowDiff Relative positioning row difference.
*/
function getRelativeCellValue(rowDiff, colDiff) {
var range = SpreadsheetApp.getActiveRange();
var col = range.getColumn();
var row = range.getRow();
var range2 = SpreadsheetApp.getActiveSheet().getRange(row + rowDiff,col + colDiff);
return range2.getValue();
}
第二个函数,getRelativeCellValue(rowDiff, colDiff)
工作得很好,我把 8
放在一个单元格中,在它下面的两个单元格中输入 getRelativeCellValue(-2, 0)
,单元格计算为 [=14] =].
但是第一个函数 getRelativeCellValue(rowDiff, colDiff)
由于某种原因不能作为条件格式中的自定义函数使用:
Custom formula is: =equalsRelativeCellValue(-2,0)
困难的部分是指在条件格式中引用的单元格的值。但是我的函数对我来说是正确的,如果单元格值相等,它是 returns true
,如果不相等,它是 false
。我希望我只是不正确地使用了条件格式的 "Custom formula is" 功能,但是 documentation is pretty sparse.
只要实现你想做的,只要使用条件格式,select范围,并申请第一个单元格,它会正确申请所有:
例如。
在条件格式对话框中,select 自定义公式,粘贴自定义公式 =J10=J8
,然后 select 范围 J10:J100
.
旧答案:
您创建了一个循环引用。
如果你在 Cell 中输入 =equalsRelativeCellValue(-2,0)
,如果它正在等待函数解析,它的值怎么可能是任何值?
您可以在值旁边的列中解决这个问题,或者直接在函数中传递值。
您还可以使用它使单元格之间具有 true/false 状态:
function equalsRelativeCellValue(rowDiff, colDiff) {
var below = getRelativeCellValue(1, 0);
var relativeCellValue = getRelativeCellValue(2, 0);
if (below === relativeCellValue)
return true;
else
return false;
}