如何条件格式合并和普通细胞

问题描述 投票:1回答:2

我有我想补充一个条件格式谷歌片,但合并单元格中有点的方式获得。

在我的电子表格,我有当列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是“完成”,否则,保持空白。

提前致谢!!

google-sheets
2个回答
0
投票

你可以得到最好的是:

=OR(AND(C:C="done", D:D="done", E:E="done"),     
    AND(C:C="done", D:D="done", ISBLANK(E:E)))

这将工作,除非第4行:

但你可以预填充=CHAR(1)然后全e列:


1
投票

如果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;
}
© www.soinside.com 2019 - 2024. All rights reserved.