Mah*_*ani 6 excel function excel-formula google-sheets google-apps-script
有谁知道如何使用Excel/Google Sheet 函数将波斯日期转换为公历日期?例如:
1401/06/06
Run Code Online (Sandbox Code Playgroud)
到:
2022/08/28
Run Code Online (Sandbox Code Playgroud)
PS:早些时候我发现了Amir Fo编写的将公历转换为 Jalali 的函数,但我的问题是关于从波斯语(Shamsi)转换为公历。
这是一个纯 Excel 解决方案,不需要互联网连接或 Power Query。
免责声明:我在这里找到了该函数并进行了一些修改以使其更具可读性。顺便说一句,我已经测试了该功能一段时间1396/07/01,1401/07/01它工作正常,但使用它时需要进行大量测试,风险自负。
1278/10/11基本上,该函数计算自Shamsi(等于 Excel 日期原点)以来的总天数1900-01-01。该函数的结果是一个整数(日期值)。
下面,您将找到两种格式的解决方案,一种使用新LET函数(适用于 Excel 2021 和 Office 365),另一种不使用新函数:
请注意,Shamsi 日期的格式应为1401/07/21.
使用LET:
=LET(
y,VALUE(LEFT(A1,4)),
m,VALUE(MID(A1,6,2)),
d,VALUE(RIGHT(A1,2)),
full_months,IF((m-1)<7,(m-1)*31,IF((m-1)>6,(m-1)*30+6)),
total,(y-1)*365+full_months+d+INT((y-1)/4),
IF(MOD(y,4)=0,total+1,total)-466710
)
Run Code Online (Sandbox Code Playgroud)
旧版本:
IF(
MOD(VALUE(LEFT(A1,4)),4)=0,
(VALUE(LEFT(A1,4))-1)*365+(
IF(
(VALUE(MID(A1,6,2))-1)<7,
(VALUE(MID(A1,6,2))-1)*31,
IF(
(VALUE(MID(A1,6,2))-1)>6,
(VALUE(MID(A1,6,2))-1)*30+6
)
)
)+VALUE(RIGHT(A1,2))+INT((VALUE(LEFT(A1,4))-1)/4)+1,
(VALUE(LEFT(A1,4))-1)*365+(
IF(
(VALUE(MID(A1,6,2))-1)<7,
(VALUE(MID(A1,6,2))-1)*31,
IF(
(VALUE(MID(A1,6,2))-1)>6,
(VALUE(MID(A1,6,2))-1)*30+6
)
)
)+VALUE(RIGHT(A1,2))+INT((VALUE(LEFT(A1,4))-1)/4)
)-466710
Run Code Online (Sandbox Code Playgroud)
要将生成的整数转换为日期,请将单元格格式更改为Date或使用以下公式:
TEXT(A2,"yyyy-mm-dd")
Run Code Online (Sandbox Code Playgroud)
尝试:
=TEXT(VLOOKUP("Gregorian calendar", IMPORTHTML("https://date-today.com/en/shamsi-"&
REGEXEXTRACT(TO_TEXT(A1), "\/(\d+)")*1&"-"&
REGEXEXTRACT(TO_TEXT(A1), "\/(\d+)\/")*1&"-"&
REGEXEXTRACT(TO_TEXT(A1), "\d{4}")*1&"-to-gregorian-calendar.html", "table", 1), 2, ),
"e/mm/dd")
Run Code Online (Sandbox Code Playgroud)
或者:
=TEXT(VLOOKUP("Gregorian calendar", IMPORTHTML("https://date-today.com/en/shamsi-"&
REGEXEXTRACT(TO_TEXT(A1), "\d+")*1&"-"&
REGEXEXTRACT(TO_TEXT(A1), "\/(\d+)\/")*1&"-"&
REGEXEXTRACT(TO_TEXT(A1), "\d{4}")*1&"-to-gregorian-calendar.html", "table", 1), 2, ),
"yyyy/mm/dd")
Run Code Online (Sandbox Code Playgroud)
将 Google 表中的日期区域设置从公历转换为 Jalali 日历