根据Google电子表格上的日期切换行背景

时间:2014-09-09 10:12:59

标签: google-sheets gs-conditional-formatting

我有一个存储日期的列,我尝试实现条件格式自定义公式,如果日期是奇数或偶数,则切换整行(或行的多个单元格)的背景颜色。

以下是我的工作表的昏迷分隔值版本以及我尝试实现的内容。日期和时间在不同的列中。我可以有多个具有相同日期(不同时间)的行。具有相同日期的行必须具有相同的颜色。

Date,       Time, Data
01/12/2014, 01:00, "xxxx" -> BG = X
01/12/2014, 03:00, "xxxx" -> BG = X
02/12/2014, 01:00, "xxxx" -> BG = Y
03/12/2014, 01:00, "xxxx" -> BG = X
03/12/2014, 02:00, "xxxx" -> BG = X
04/12/2014, 03:00, "xxxx" -> BG = Y

为了计算一天是偶数还是奇数,我写了一个简单的函数,它返回自1970年1月1日以来的天数:

/**
 * Return the day of the year of a date or a range
 *
 * @param {date}|{Array.Array} Date or range.
 * @return The day of year.
 * @customfunction
 */
function DAYSFROM70(date) 
{
  if (date.map) {
    return date.map(DAYSFROM70);
  } else {
    if (!date instanceof Date || !date.getTime) {
      return "";
    } else {
      return Math.ceil(date.getTime() / 86400000);
    }
  }
}

这是我尝试应用的自定义公式(注意DAYSFROm70函数使用范围作为参数),但没有成功:

=ISODD(DAYSFROM70($B$2:$B$101))

下面的公式为单元格背景着色(但我显然无法使用它,星期日和星期一都是奇怪的):

=ISODD(WEEKDAY($B$2:$B$101))

我的剧本出了点问题,但我无法弄明白...

查看此电子表格以进行测试: https://docs.google.com/spreadsheets/d/1U49FoeMPKlvjCURsqS7GxTH62u_fTJNCcH12XFQtWVQ

感谢您的帮助。


3 个答案:

答案 0 :(得分:1)

为什么你不能这样做:= isodd(白天(A1))??

  • 选择整张表
  • 点击格式 - >条件格式
  • 从下拉列表中选择"自定义公式"
  • 在公式框中放置:=isodd(day($A1))
  • 选择您的格式(背景颜色)
  • 点击确定。

修改

在你的问题中,你没有指明你的意思"日是奇怪的"。

因为你想每隔一天为#34;行标记颜色。无论您可以做什么年份,​​月份或年份(使用内置函数): =isodd(DATEVALUE($A1))

[请阅读上述有关应用条件公式的说明。你不需要使用范围或数组]

在条件格式公式中不要参考范围!! " = ISEVEN(周末($ B $ 2:$ B $ 23))" < - NO !!

" = ISODD(DATEVALUE($ A2))" < - 是的!! (其中A2是您要格式化的范围的最顶行 - 如条件格式弹出对话框中的"范围"框中所示)

答案 1 :(得分:0)

似乎Google电子表格不支持该格式的日期。使用你的函数,我在尝试这种格式时遇到错误,但如果我从结尾删除时间,它就可以正常工作。

解决方法:将日期添加为自定义格式:https://support.google.com/docs/answer/56470?hl=en

我得到了它的工作:" 12/1/2014 1:00:00"通过设置格式:

Year(1930)-Month(08)-Day(05),Hour(1):Minute(1)

---- ----- EDIT

我将条件格式设置为:

=ISODD(DAYSFROM70($A1))

我在A栏中有日期,所以这会改变整行,日期是奇数。

希望这有帮助

答案 2 :(得分:0)

如果您的日期在ColumnA中,请尝试格式化,条件格式化...,自定义公式为:

=isodd(text($A1,"#"))  

将选择格式应用于Range:A:Z(或根据需要进行扩展)。