Google sheets 如何在两个日期之间展开数据?

Google sheets 如何在两个日期之间展开数据?,google-sheets,google-sheets-formula,Google Sheets,Google Sheets Formula,我想将日期范围扩展到各个日期,并对数据进行排序 基本上,我需要一组如下数据: 并希望输出为: 这可以用公式来完成吗 编辑:如何仅为一个值获得所需的输出?说123 =ARRAYFORMULA({ {TO_DATE(ROW(INDIRECT("A"&A1):INDIRECT("B"&B1))), TRANSPOSE(SPLIT(REPT(C1&"♦", DAYS(B1, A1)+1), "♦")) }; {TO_DATE(ROW(INDIRECT("A"&A2

我想将日期范围扩展到各个日期,并对数据进行排序

基本上,我需要一组如下数据:

并希望输出为:

这可以用公式来完成吗

编辑:如何仅为一个值获得所需的输出?说123

=ARRAYFORMULA({
 {TO_DATE(ROW(INDIRECT("A"&A1):INDIRECT("B"&B1))), 
 TRANSPOSE(SPLIT(REPT(C1&"♦", DAYS(B1, A1)+1), "♦")) };
 {TO_DATE(ROW(INDIRECT("A"&A2):INDIRECT("B"&B2))), 
 TRANSPOSE(SPLIT(REPT(C2&"♦", DAYS(B2, A2)+1), "♦")) };
 {TO_DATE(ROW(INDIRECT("A"&A3):INDIRECT("B"&B3))), 
 TRANSPOSE(SPLIT(REPT(C3&"♦", DAYS(B3, A3)+1), "♦")) }})


以下是仅扩展一行数据的另一种方法:

=ArrayFormula({TO_DATE(row(indirect("a"&A1&":A"&B1-1))),if(row(indirect("a"&A1&":A"&B1-1)),C1)})

您可以进一步开发它,为多行创建动态公式

首先在D列中创建一个helper列,该列仅包含住宿的天数:

=ArrayFormula(if(A:A="","",B:B-A:A))
然后,这将给出日期列表:

=ArrayFormula(to_date(vlookup(row(indirect("a1:A"&sum(D:D))),{sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,A:A},2)+
row(indirect("a1:A"&sum(D:D)))-
vlookup(row(indirect("a1:A"&sum(D:D))),sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,1)))
数字1至N,其中N是从D列获得的总住宿天数

H列:


=ArrayFormula(vlookup(row(indirect)(“a1:A”&sum(D:D)),{sumif(row(D:D))”以下是仅扩展一行数据的另一种方法:

=ArrayFormula({TO_DATE(row(indirect("a"&A1&":A"&B1-1))),if(row(indirect("a"&A1&":A"&B1-1)),C1)})

您可以进一步开发它,为多行创建动态公式

首先在D列中创建一个helper列,该列仅包含住宿的天数:

=ArrayFormula(if(A:A="","",B:B-A:A))
然后,这将给出日期列表:

=ArrayFormula(to_date(vlookup(row(indirect("a1:A"&sum(D:D))),{sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,A:A},2)+
row(indirect("a1:A"&sum(D:D)))-
vlookup(row(indirect("a1:A"&sum(D:D))),sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,1)))
数字1至N,其中N是从D列获得的总住宿天数

H列:


=ArrayFormula(vlookup(行(间接)(“a1:A”和sum(D:D))),{sumif(行(D:D))“您希望公式生成输出第一列中的日期,还是用户提供的日期?问题的原因是,如何确定5月27日的日期应该在那里?此外,5月18日分为两个数据范围123和abc,两个选项都打印在列表中。5月19日也在这两个范围内,但只有abc是正确的显示。当一个日期落入多个范围时,您如何确定要显示哪个范围结果?对于不在范围内的日期,将显示什么?您希望5月24日显示什么?123的日期范围基本上是[2019年5月16日,2019年5月19日],这意味着包括5月16日,但不包括5月19日(有点像酒店的入住退房日期)。如果我们能从123的输出开始,也许解决方案会更容易找到?人们也需要知道其他问题的答案。我相信他们会的。我只是认为,如果我们先将问题分解,处理问题可能会更容易。开发VBA宏来实现这一点会更容易。你想要f吗用于生成输出第一列中的日期或用户提供的日期的公式?询问的原因是,如何确定5月27日的日期应在那里?此外,5月18日分为两个数据范围123和abc,两个选项都打印在列表中。5月19日也在这两个范围中,但仅显示abc。how您是否确定当一个日期位于多个范围内时显示哪个范围结果?对于不在范围内的日期显示什么?您希望5月24日显示什么?123的日期范围基本上是[2019年5月16日,2019年5月19日],这意味着包括5月16日,但不包括5月19日(有点像酒店的入住退房日期)。如果我们能从123的输出开始,也许解决方案会更容易找到?人们也需要知道其他问题的答案。我相信他们会的。我只是认为,如果我们先分解问题,处理问题可能会更容易。开发VBA宏来实现这一点会更容易。
=ArrayFormula(sumif(row(D:D),"<="&row(D:D),D:D))
=ArrayFormula(sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1)
=ArrayFormula(row(indirect("a1:A"&sum(D:D))))
=ArrayFormula(vlookup(row(indirect("a1:A"&sum(D:D))),{sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,A:A},2))
=ArrayFormula(vlookup(row(indirect("a1:A"&sum(D:D))),sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,1))
=ArrayFormula(vlookup(row(indirect("a1:A"&sum(D:D))),{sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,A:A},2)+
row(indirect("a1:A"&sum(D:D))))
=ArrayFormula(to_date(vlookup(row(indirect("a1:A"&sum(D:D))),{sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,A:A},2)+
row(indirect("a1:A"&sum(D:D)))-
vlookup(row(indirect("a1:A"&sum(D:D))),sumif(row(D:D),"<="&row(D:D),D:D)-D:D+1,1)))