我有我想补充一个条件格式谷歌片,但合并单元格中有点的方式获得。
在我的电子表格,我有当列C,d和E“完成” B列获得一个绿色背景的列B,C,d和e其中我使用了一个公式B列。问题是,对于一些行,列d和E合并。
这是我使用在列B中的公式
=and(C:C="done",D:D="done")
我期望的结果是:当列d和E不合并,B列只获得了绿色的背景,如果列C,d和E是“完成”,否则,它保持空白。当d和E合并:乙只得到绿色的背景,如果C和DE是“完成”,否则,保持空白。
提前致谢!!
如果E总是有一个非空值时,d和E不合并,你可以用它来检查当E是空白使用ISBLANK(E:E)
:
=AND(C:C="done", D:D="done", OR(E:E="done", ISBLANK(E:E)))
否则,没有测试是否细胞是合并范围的一部分,无需使用自定义功能,这是效率很低的一种方式,但可能会在技术上有新的辅助列(例如列Z)的援助工作:
/**
* @customfunction
*/
function ISMERGED(cellAddress) {
var cell = SpreadsheetApp.getActiveSheet().getRange(cellAddress);
return cell.isPartOfMerge();
}
凡列Z(或任何你选择你的助手)的每一个相关行中输入以下(假设数据行1开始):
=ISMERGED(ADDRESS(ROW(E1), COLUMN(E1)))
=ISMERGED(ADDRESS(ROW(E2), COLUMN(E2)))
=ISMERGED(ADDRESS(ROW(E3), COLUMN(E3)))
...等等。
然后格式化B,使用:
=AND(C:C="done", D:D="done", OR(E:E="done", $Z:$Z))
警告:如果合并和拆散之间切换,Z不会立即包含正确的价值观,不过,因为自定义函数只能重新计算时输入的变化(与细胞不会在这种情况下的地址)。
这里是你如何可以计算你的助手整个列向下,按行,通过只是把值在最上面的单元格(例如:在小区Z1 =ISMERGED("E:E")
):
/**
* @customfunction
*/
function ISMERGED(rangeAddress) {
var range = SpreadsheetApp.getActiveSheet().getRange(rangeAddress);
var numCols = range.getNumColumns();
var numRows = range.getNumRows();
var result = [];
for (var i=0; i < numRows; i++) {
var rowRange = range.offset(i, 0, 1, numCols);
result.push(rowRange.isPartOfMerge());
}
return result;
}