两个日期之间的差异表示为年、月、日(在一列中)

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)

当然,仅更改每列的值类型(例如从几天到几个月)就足够简单了,但我不确定如何继续保持显示的值彼此相关(而不仅仅是让相同的值可以在不同的持续时间类型中显示)。

请问有什么建议吗?

pla*_*er0 8

=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)

0

或更聪明的方式:

=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)

在此输入图像描述