是否有根据条件使用 Google sheet 中的公式计算即将到来的日期的公式?
Is there a formula for upcoming date using formula in Google sheet based on condition?
我有一个 google sheet,我需要根据 A 列中设置的开始日期获取下一个即将到来的日期
非常感谢任何指点?我无法展示这些努力,因为我对使用 Google sheets
的这种重复完全陌生
https://docs.google.com/spreadsheets/d/1g_UNg4MjDy3gFufpjZtMRkbBz80K3scQdZOaiAnZi7I/edit#gid=0
此行为(从今天开始的下一个日期,包括今天)可以通过以下公式手动实现:
={
"Next date from today";
ARRAYFORMULA(
IFS(
A2:A >= TODAY(),
A2:A,
B2:B = "Daily",
TODAY() + MOD(TODAY() - A2:A, C2:C),
B2:B = "Weekly",
TODAY() + MOD(TODAY() - A2:A, 7 * C2:C),
B2:B = "Monthly",
EDATE(A2:A, ROUNDUP((12 * (YEAR(TODAY()) - YEAR(A2:A)) + (MONTH(TODAY()) - MONTH(A2:A)) - IF(DAY(TODAY()) < DAY(A2:A), 1, 0)) / C2:C, 0) * C2:C),
True,
""
)
)
}
对于其他选项(如 "every 2nd monday of the month" 等),应在该 IFS
部分中实施其他选项。
如果您对需要从开始日期(屏幕截图中的 F:F
列)开始的下一个日期的小案例感兴趣,那么公式会简单得多:
={
"Next date";
ARRAYFORMULA(
IFS(
B2:B = "Daily",
A2:A + C2:C,
B2:B = "Weekly",
A2:A + 7 * C2:C,
B2:B = "Monthly",
EDATE(A2:A, C2:C),
True,
""
)
)
}
同样,对于其他选项,您需要将相应的部分添加到 IFS
。
您可以使用 IFS 来检查 Frequency
,并且:
- 如果
Daily
,将 Count
值添加到开始日期。
- 如果
Weekly
,请将 Count
值乘以 7。
- 如果
Monthly
,因为并非所有月份的持续时间都相同,检索YEAR
、MONTH
和DAY
索引,将Count
添加到MONTH index, and set a new DATE, EDIT: or as suggested by kishkin, use EDATE.
可能是这样的:
=ARRAYFORMULA(IFNA(IFS(
B2:B = "Daily", A2:A + C2:C,
B2:B = "Weekly", A2:A + 7 * C2:C,
B2:B = "Monthly", EDATE(A2:A,C2:C)
)))
我有一个 google sheet,我需要根据 A 列中设置的开始日期获取下一个即将到来的日期
非常感谢任何指点?我无法展示这些努力,因为我对使用 Google sheets
的这种重复完全陌生https://docs.google.com/spreadsheets/d/1g_UNg4MjDy3gFufpjZtMRkbBz80K3scQdZOaiAnZi7I/edit#gid=0
此行为(从今天开始的下一个日期,包括今天)可以通过以下公式手动实现:
={
"Next date from today";
ARRAYFORMULA(
IFS(
A2:A >= TODAY(),
A2:A,
B2:B = "Daily",
TODAY() + MOD(TODAY() - A2:A, C2:C),
B2:B = "Weekly",
TODAY() + MOD(TODAY() - A2:A, 7 * C2:C),
B2:B = "Monthly",
EDATE(A2:A, ROUNDUP((12 * (YEAR(TODAY()) - YEAR(A2:A)) + (MONTH(TODAY()) - MONTH(A2:A)) - IF(DAY(TODAY()) < DAY(A2:A), 1, 0)) / C2:C, 0) * C2:C),
True,
""
)
)
}
对于其他选项(如 "every 2nd monday of the month" 等),应在该 IFS
部分中实施其他选项。
如果您对需要从开始日期(屏幕截图中的 F:F
列)开始的下一个日期的小案例感兴趣,那么公式会简单得多:
={
"Next date";
ARRAYFORMULA(
IFS(
B2:B = "Daily",
A2:A + C2:C,
B2:B = "Weekly",
A2:A + 7 * C2:C,
B2:B = "Monthly",
EDATE(A2:A, C2:C),
True,
""
)
)
}
同样,对于其他选项,您需要将相应的部分添加到 IFS
。
您可以使用 IFS 来检查 Frequency
,并且:
- 如果
Daily
,将Count
值添加到开始日期。 - 如果
Weekly
,请将Count
值乘以 7。 - 如果
Monthly
,因为并非所有月份的持续时间都相同,检索YEAR
、MONTH
和DAY
索引,将Count
添加到MONTH index, and set a new DATE, EDIT: or as suggested by kishkin, use EDATE.
可能是这样的:
=ARRAYFORMULA(IFNA(IFS(
B2:B = "Daily", A2:A + C2:C,
B2:B = "Weekly", A2:A + 7 * C2:C,
B2:B = "Monthly", EDATE(A2:A,C2:C)
)))