在一个范围内的 'n' 行集合中搜索重复值
Searching for duplicate values within sets of 'n' rows within a range
我将上述电子表格设置为每天的时间表,范围 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()))
是被比较的单元格
我将上述电子表格设置为每天的时间表,范围 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
解释:
COUNTIF(.....)>1
是当有超过 1 个(即重复)
INDIRECT(.....)
允许我们使用地址作为值的范围
ADDRESS((QUOTIENT(ROW()-5,3)*3)+2,COLUMN())
是要计算的范围(条件格式)的第一个单元格
ADDRESS((QUOTIENT(ROW()-5,3)*3)+10,COLUMN())
是要计算的范围(条件格式)的最后一个单元格
INDIRECT(ADDRESS(ROW(),COLUMN()))
是被比较的单元格