如何使用Google电子表格中的日期添加功能?

问题描述 投票:0回答:11

我相信我现在遇到的问题在 MS Excel 中应该会容易得多。但是,由于我的公司使用 Google Spreadsheet,所以我必须想办法。

基本上,我有一个单元格包含“12/19/11”等日期值,另一个单元格包含“DT 30”等值。分配给我的任务是将值 30(天)添加到日期,因此结果应该是“1/19/2012”。

我在 Google Spreadsheet 中做了一些尝试,我有两个问题。第一个问题是如何从字符串“DT 30”中提取数值“30”,第二个问题是,Google Docs 中似乎没有内置日期添加功能。

有专家可以提供一些建议吗?

google-sheets formula
11个回答
59
投票

我喜欢保持简单。如果 A1 保存日期,B1 保存要添加的月数,则

=date(year(A1),month(A1)+B1,day(A1))

将计算出所需的结果。 同样的方法可以使用数天或数年


44
投票
  1. 要从字符串中提取数值,您可以使用这两个函数(假设您的值位于单元格“A1”中):

    =VALUE(REGEXEXTRACT(A1, "\d+"))

    这将为您提供一个数值。

  2. 我在文档中没有发现日期添加功能,但您可以将日期转换为内部日期数字,然后添加天数(如果您的值在单元格“A2”中):

    =DATEVALUE(A2) + 30

我希望这会有所帮助。


42
投票

您只需将数字添加到带有日期的单元格即可。

所以如果

A1: 12/3/2012
A2: =A1+7
那么 A2 将显示 12/10/2012


11
投票

可以使用DATE(年;月;日)对日期进行操作:

示例:

=DATE(2013;3;8 + 30) give the result...  7 april 2013 !
=DATE(2013;3 + 15; 8) give the result... 8 june 2014 !

这很令人惊讶,但它确实有效......


8
投票

直接使用

EDATE(Start_date, months)
完成ADDDate的工作。 示例:

考虑

A1 = 20/08/2012
A2 = 3

=edate(A1; A2)

计算20/11/2012

PS:我的示例中的格式为

dd/mm/yyyy


5
投票

与@kidbrax的答案一样,您可以使用

+
添加天数。 为了让它工作,我必须明确地将我的单元格数据声明为日期:

A1: =DATE(2014, 03, 28)

A2: =A1+1

A2 的值现为 2014 年 3 月 29 日


1
投票

简单的添加和转换回来有什么问题吗?

如果A1是日期字段,A2保存要添加的天数: =TO_DATE((日期值(A1)+A2)


0
投票

使用与 Burnash 使用的方法几乎相同的方法,对于最终结果,您可以使用...

=regexextract(A1,"[0-9]+")+A2

其中 A1 包含带有文本和数字的字符串 A2 包含感兴趣的日期


0
投票

=TO_DATE(TO_PURE_NUMBER(Insert Date cell, i.e. AM4)
+[添加多少天的数字,例如3天])

实践中的样子:

=TO_DATE(TO_PURE_NUMBER(AM4)+3)

本质上,您是将日期转换为纯数字,然后再次转换回日期。


0
投票

在新的电子表格(美国区域设置)中,A1 中为

12/19/11
,B1 中为
DT 30
,然后:

=A1+right(B1,2)

也就是说 C1 返回

1/18/12

作为字符串函数,RIGHT 返回 Text,但在相加时可以将其强制转换为数字。在向日期添加数字时,统一被视为一天。在(非常宽的)限制内,几个月甚至几年都会自动调整。


0
投票

最近,Google Sheets 添加了命名函数(数据 > 命名函数)。 我把这个添加到我的了。

函数名称
日期_添加

功能说明
在开始日期中添加天、周、月、季度或年。

参数占位符
开始日期计数间隔

公式

=let(
l_int, lower(interval),
is_day, OR(l_int="d", l_int="day", l_int ="days"),
is_week, OR(l_int="w", l_int="wk", l_int="week", l_int="weeks"),
is_month, OR(l_int="m", l_int="mo", l_int="month", l_int="months"),
is_qtr, OR(l_int="q", l_int="qtr", l_int="qtrs", l_int="quarter", l_int="quarters"),
is_year, OR(l_int="y", l_int="yr", l_int="year", l_int="yrs", l_int="years"),
offset, IF(is_day,1,if(is_week,7,0)) * count,
months, if(is_month,1,if(is_qtr,3,if(is_year,12,0))) * count,
is_new_year, or(month(start_date)+months>12,month(start_date)+months<0),
new_month, mod(month(start_date+offset)+months,12),
new_yr, if(is_new_year, year(start_date)+floor(months/12,1),year(start_date)),
new_day, day(start_date+offset),
if(or(is_month,is_qtr,is_year),date(new_yr,new_month,new_day),start_date+offset))

结果:

开始日期 间隔 最终值
2024 年 2 月 1 日 28 2/29/2024
2024 年 2 月 1 日 5 w 2024 年 3 月 7 日
2024 年 2 月 1 日 6 2024 年 8 月 1 日
2024 年 2 月 1 日 3 2027 年 2 月 1 日
2024 年 2 月 1 日 -1 2024 年 1 月 31 日
2024 年 2 月 1 日 -3 q 2023 年 5 月 1 日
2024 年 2 月 1 日 -500 2014 年 7 月 3 日
© www.soinside.com 2019 - 2024. All rights reserved.