我正在使用Google表格进行数据输入,只要有人提交表单,就会自动填充我网站上的数据。用户的数据导入到我的工作表中,带有时间戳(A列)。
使用Arrayformula函数,我想要一个列来自动填充该月内时间戳的所有日期。例如,如果输入1/5/2016作为时间戳,我希望在2016年1月1日至2016年1月31日期间自动填充公式。
此外,我还想在Arrayformula专栏中添加其他几个月。例如,如果在A列中输入1/5/2016和2/3/2016,我希望公式填写2016年1月1日至2016年2月29日的日期。
我知道我可以手动写入日期并将它们拖到列中,但是我有很多工作表,使用Arrayformula会节省很多时间。我在B栏中尝试了类似的公式,但它没有自动填充日期空白。我正在寻找什么?
以下是我所指的可编辑电子表格的副本:https://docs.google.com/a/flyingfx.com/spreadsheets/d/1Ka3cZfeXlIKfNzXwNCOWV15o74Bqp-4zaj_twC3v1KA/edit?usp=sharing
答案 0 :(得分:5)
Cell A1
1/1/2016
细胞A2
=ArrayFormula(ADD(A1,row(INDIRECT("A1:A"&30))))
在Google表格中,日期是序列化数字,其中整数是天,分数是小时,分钟等。一旦牢记这一点,接下来就是找到一个有用的结构。
INDIRECT(reference_string,use_A1_notation)
用于通过将高度指定为硬编码常量来计算所需大小的范围,在本例中为30
。你不应该担心这个结构中的循环引用。
ROW(reference)
返回连续数字数组。
A1
是开始日期。
ADD(value1,value2)
。它与使用+
相同。由于第一个参数是标量值,第二个参数是值数组,因此它返回与第二个参数大小相同的数组。
ArrayFormula(array_formula)
显示array_formula
由于A1
是日期,因此默认情况下返回的值也会格式化为日期。
答案 1 :(得分:1)
除了上述内容,我还有另一种选择,它允许您仅编辑第一行,然后添加保护(就像我喜欢在整个第一行中对其他公式使用此方法一样):
=ARRAYFORMULA(
IF(
ROW(A1:A) = 1,
"Date",
IF(
ROW(A1:A) = 2,
DATE(2020, 1, 1),
DATE(2020, 1, 1) + (ROW(A1:A) - 2)
)
)
)
// pseudo code!
const START_DATE = 2020-01-01
if (currentRow == 1)
print "Date"
else if (currentRow == 2)
print START_DATE
else
print START_DATE + (currentRow - 2)
注意:
ROW(A1:1)
返回当前行号,因此第一个if语句的计算结果为“如果这是第1行,则呈现Date
” current:3 - 2 = 1
。这是一个实时示例(我在偶数月中添加了条件格式,以帮助进行健全性检查以确保每月的最后一天是正确的):
https://docs.google.com/spreadsheets/d/1seS00_w6kTazSNtrxTrGzuqzDpeG1VtFCKpiT_5C8QI/view#gid=0
此外-我发现以下VScode扩展名可用于突出显示Google表格公式的语法:https://github.com/leonidasIIV/vsc_sheets_formula_extension
Row1标头技巧是兰迪(Randy)通过https://www.tillerhq.com/what-are-your-favorite-google-spreadsheet-party-tricks/
提供的答案 2 :(得分:0)
好。谢谢。
要使列表长度适应所选月份中的天数,请用30
替换静态eomonth(A1;0)-A1+1
。例如2月只有28或29天。
=ArrayFormula(ADD(A1,row(INDIRECT("A1:A"&eomonth(A1;0)-A1))))
答案 3 :(得分:0)
如果有人希望能够按月递增,那么这就是我能够实现的一种方式。您的解决方案@ptim让我步入正轨,谢谢。
放在B1
第一个月= 2020-11-01 [命名范围]
=ARRAYFORMULA(
IF(
ROW(A:A) = 1,
"Date",
IF(
LEN(A:A),
EDATE( First_Month, ROW( A:A ) -2 ),
""
)
)
)
ID Month
1 2020-11-01
2 2020-12-01
3 2021-01-01
4 2021-02-01
5 2021-03-01