有条件地按星期几格式化


Answers:


13

我已经为此苦苦挣扎了很长时间,但最终还是破解了它:

在带有日期的列上使用条件格式,然后键入以下内容作为自定义公式:

=or(WEEKDAY(A1)=1,WEEKDAY(A1)=7)

A1列中的第一个日期在哪里。

这会将条件格式应用于值1(星期日)和7(星期六)的所有工作日。


2
谢谢,这是一个很好的解决方案。我接受 对于我来说,我已经对其进行了调整以排除空白单元格: =and(not(isblank(A1)), or(WEEKDAY(A1)=1,WEEKDAY(A1)=7))
Mike Ellis,

不错,而且没有isblank。我一直以只在包含日期的范围内使用它的方式使用它,例如A1:A31。我也像使用它一样,将其从使用>和<更改为=。这样有点简单。我想我开始希望工作日编号更像是在我的国家/地区,星期一是1,星期日是7。我不知道如果更改国家/地区设置,情况是否如此。
aej

14

在新的Google表格中轻松(但有点乏味!)。对于条件格式,大约每种颜色都需要一个新规则。(通常可以从规则中跳过一种颜色,而可以使用常规格式设置-在适用于CF的任何条件下,这种颜色都将被忽略。)因此,请至少重复以下五次基本操作。

说日期列为A。选择它,格式>条件格式...,自定义公式为,然后输入:

=weekday(A1)=1  

选择所需的格式。

1上面的最后一个是星期日,其他日子按照数字顺序。

重复其他所需的格式,并1根据需要进行调整。

因为这些规则没有冲突(每个日期仅是一周中的某一天),所以添加规则的顺序(带有“ +添加另一个规则 ”)无关紧要。


4
在此基础上,一个简单的方法是做=WEEKDAY(A1,2)>5-这将创下两个星期六和星期日,只需要一个规则
FuriousGeorge

1
做到了。谢谢!
约书亚舞

5

如果日期在A列中,请选择日期,然后执行以下操作:格式 > 条件格式... > 格式化单元格,如果... > 自定义公式并放入

=and(isblank(A:A)=false, or(weekday(A:A)=1, weekday(A:A)=7))

一些解释:

weekday(A:A)对于星期几,返回1-7, 如果是星期日(1)或星期六(7),则or(weekday(A:A)=1, weekday(A:A)=7)返回true

这可以单独工作,但是由于某种原因,在空单元格上的weekday()返回7,因此isblank(A:A)=false还要检查该单元格是否为空。现在,如果它既是(非空)又是(日光或饱和光),则为单元格着色

我还放了A:AA1如果格式范围不是从顶部开始(例如,A5:A100而不是A1:A100),则会给出偏移量结果

归功于pnuts!


4

使用脚本可以做到这一点。转到工具脚本编辑器...,然后粘贴以下脚本:

function onEdit(e) {
  var cell = e.range.getCell(1, 1);
  var val = cell.getValue();
  if ((val instanceof Date) && (val.getDay() == 0 || val.getDay() == 6)) {
    cell.setBackground("red");
  } else {
    cell.setBackground("white");
  }
}

保存脚本(为项目命名),然后返回电子表格。

现在,每次编辑单元格时,此脚本都会检查是否输入了日期,以及输入的日期是星期日还是星期六。如果是这样,单元格的背景将变为红色。如果不是日期或不是周末,则背景将变为白色。

还有其他颜色的名称,你可以用,也可以使用十六进制代码来指定不同的颜色。


谢谢,威廉。尽管代码看起来很明智,但是由于某种原因,它并没有按预期工作。它将偶数天变成红色,奇数天变成白色。
Mike Ellis

我将if语句中的测试更改为更简单。现在可以用吗?
威廉·杰克逊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.