在一个范围内的 'n' 行集合中搜索重复值

Searching for duplicate values within sets of 'n' rows within a range

https://docs.google.com/spreadsheets/d/e/2PACX-1vTswXxlMFGFOYiG8jatnLTpN4hS3rhVouBfshRIMXTKi3wmpQuZ6MIabfjcqTXwqlILRcxOxr4o3xqc/pubhtml?gid=1249461985&single=true

我将上述电子表格设置为每天的时间表,范围 C5:I58。我有时间从 0800 开始并以 30 分钟的间隔增加,例如0830、0900 ... 直到 1630,然后日期从今天到今天+6 作为列。每次覆盖 3 行,一个值(通过公式检索)每天可以出现多次(即每列),但最多出现 2 个连续时间段,即在 6 个连续行中出现两次。

我想突出显示在上述情况下连续出现相同值的单元格。我知道 =COUNTIF(C5:C58,C5)>1 可用于查找列中的重复值,但不认为它可以专门适应这种情况。

因此我希望我可能必须创建一个迭代循环,但在这种情况下我不知道从哪里开始!非常感谢任何帮助。

突出显示 C 列中的连续重复项

function consecdupes() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet0");
  const vs = sh.getRange(2,3,sh.getLastRow() - 1).getValues().flat();
  vs.forEach((e, i, a) => {
    if (i > 0) {
      if (e == a[i - 1]) {
        sh.getRange(i + 1, 3,2).setBackgrounds([["#ffff00"],["#ffff00"]]);
      }
    }
  });
}

基于: “每次覆盖 3 行,一个值(通过公式检索)每天可以出现多次(即每列)”

有条件: 在“最多 2 个连续时间段,即连续 6 行内两次”和“突出显示在上述情况下连续出现相同值的单元格”

将条件格式应用于范围 C5:I58

其中 格式规则 选择是 Custom formula is,并使用以下公式:

=COUNTIF(INDIRECT(ADDRESS((QUOTIENT(ROW()-5,3)*3)+2,COLUMN())&":"&ADDRESS((QUOTIENT(ROW()-5,3)*3)+10,COLUMN())),INDIRECT(ADDRESS(ROW(),COLUMN())))>1

它将突出显示 2 consecutive time periods

中存在重复的单个单元格(不是 3 个单元格的块)

解释:

COUNTIF(.....)>1 是当有超过 1 个(即重复)

INDIRECT(.....) 允许我们使用地址作为值的范围

ADDRESS((QUOTIENT(ROW()-5,3)*3)+2,COLUMN()) 是要计算的范围(条件格式)的第一个单元格

ADDRESS((QUOTIENT(ROW()-5,3)*3)+10,COLUMN()) 是要计算的范围(条件格式)的最后一个单元格

INDIRECT(ADDRESS(ROW(),COLUMN())) 是被比较的单元格