Mae*_*dun 5 formatting date google-sheets array-formulas google-sheets-formula
我在 Google 表格中设置了一组列,使用以下函数显示两个日期之间的差异DATEDIF:
=DATEDIF (AS2, TODAY(), "D")
Run Code Online (Sandbox Code Playgroud)
(从某一日期至今经过的天数)
=DATEDIF (AR11, AS11, "D")
Run Code Online (Sandbox Code Playgroud)
(两个特定日期之间经过的天数)
这些值表示为数字(天数)。这对于较短的持续时间来说很好,但对于像 987 天这样的东西,我想将值显示为更直观的东西,例如:
| 2 Years, 8 months, 17 days |
Run Code Online (Sandbox Code Playgroud)
如果在同一列中不可能做到这一点,我至少希望有一组三列,以三种不同的值类型显示此持续时间:
| 2 Years | 8 months | 17 days |
Run Code Online (Sandbox Code Playgroud)
当然,仅更改每列的值类型(例如从几天到几个月)就足够简单了,但我不确定如何继续保持显示的值彼此相关(而不仅仅是让相同的值可以在不同的持续时间类型中显示)。
请问有什么建议吗?
=IF(DATEDIF(A1, B1, "D")>365, QUOTIENT(DATEDIF(A1, B1, "D"), 365)&" year(s) "&
QUOTIENT(MOD(DATEDIF(A1, B1, "D"), 365), 30)&" month(s) "&
MOD(QUOTIENT(MOD(DATEDIF(A1, B1, "D"), 365), 30), 30)&" day(s)",
IF(DATEDIF(A1, B1, "D")>30, QUOTIENT(DATEDIF(A1, B1, "D"), 30)&" month(s) "&
MOD(DATEDIF(A1, B1, "D"), 30)&" day(s)",
DATEDIF(A1, B1, "D")&" day(s)"))
Run Code Online (Sandbox Code Playgroud)
或更聪明的方式:
=INDEX(IF(ISDATE_STRICT(A2:A), TRIM(FLATTEN(QUERY(TRANSPOSE(
IFERROR(LAMBDA(a, LAMBDA(x, IF(x=0,,IF(x>1, x&a&"s", x&a)))
(DATEDIF(A2:A, B2:B, {"Y", "YM", "MD"})))({" year", " month", " day"}))),,9^9))), ))
Run Code Online (Sandbox Code Playgroud)