我相信我现在遇到的问题在 MS Excel 中应该会容易得多。但是,由于我的公司使用 Google Spreadsheet,所以我必须想办法。
基本上,我有一个单元格包含“12/19/11”等日期值,另一个单元格包含“DT 30”等值。分配给我的任务是将值 30(天)添加到日期,因此结果应该是“1/19/2012”。
我在 Google Spreadsheet 中做了一些尝试,我有两个问题。第一个问题是如何从字符串“DT 30”中提取数值“30”,第二个问题是,Google Docs 中似乎没有内置日期添加功能。
有专家可以提供一些建议吗?
我喜欢保持简单。如果 A1 保存日期,B1 保存要添加的月数,则
=date(year(A1),month(A1)+B1,day(A1))
将计算出所需的结果。 同样的方法可以使用数天或数年
要从字符串中提取数值,您可以使用这两个函数(假设您的值位于单元格“A1”中):
=VALUE(REGEXEXTRACT(A1, "\d+"))
这将为您提供一个数值。
我在文档中没有发现日期添加功能,但您可以将日期转换为内部日期数字,然后添加天数(如果您的值在单元格“A2”中):
=DATEVALUE(A2) + 30
我希望这会有所帮助。
您只需将数字添加到带有日期的单元格即可。
所以如果
A1: 12/3/2012
和 A2: =A1+7
那么 A2 将显示 12/10/2012
可以使用DATE(年;月;日)对日期进行操作:
示例:
=DATE(2013;3;8 + 30) give the result... 7 april 2013 !
=DATE(2013;3 + 15; 8) give the result... 8 june 2014 !
这很令人惊讶,但它确实有效......
直接使用
EDATE(Start_date, months)
完成ADDDate的工作。
示例:
考虑
A1 = 20/08/2012
和 A2 = 3
=edate(A1; A2)
计算20/11/2012
PS:我的示例中的格式为
dd/mm/yyyy
与@kidbrax的答案一样,您可以使用
+
添加天数。 为了让它工作,我必须明确地将我的单元格数据声明为日期:
A1: =DATE(2014, 03, 28)
A2: =A1+1
A2 的值现为 2014 年 3 月 29 日
简单的添加和转换回来有什么问题吗?
如果A1是日期字段,A2保存要添加的天数: =TO_DATE((日期值(A1)+A2)
使用与 Burnash 使用的方法几乎相同的方法,对于最终结果,您可以使用...
=regexextract(A1,"[0-9]+")+A2
其中 A1 包含带有文本和数字的字符串 A2 包含感兴趣的日期
=TO_DATE(TO_PURE_NUMBER(Insert Date cell, i.e. AM4)
+[添加多少天的数字,例如3天])
实践中的样子:
=TO_DATE(TO_PURE_NUMBER(AM4)+3)
本质上,您是将日期转换为纯数字,然后再次转换回日期。
在新的电子表格(美国区域设置)中,A1 中为
12/19/11
,B1 中为 DT 30
,然后:
=A1+right(B1,2)
也就是说 C1 返回
1/18/12
。
作为字符串函数,RIGHT 返回 Text,但在相加时可以将其强制转换为数字。在向日期添加数字时,统一被视为一天。在(非常宽的)限制内,几个月甚至几年都会自动调整。
最近,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 日 |