谷歌表格中的印度短货币格式
Posted
技术标签:
【中文标题】谷歌表格中的印度短货币格式【英文标题】:Indian short currency format in google sheets 【发布时间】:2021-04-26 06:21:20 【问题描述】:在谷歌表格中,我试图以印度“短”格式显示数字,后缀为 lakhs 和 crore,如下所示:
单元格值:1234,显示为1.23K 单元格值:12345,显示为12.35K 单元格值:123456,显示为 1.23L [L=lakh] 单元格值:1234567,显示为12.35L 单元格值:12345678,显示为 1.23C [C=Crore] 单元格值:123456789,显示为 12.35C。我已尝试修改此自定义数字格式:
[<999950]0.0,"K";[<999950000]0.0,,"M";0.0,,,"B"
by *** McEachern,但无法实现我需要的格式。
有谁知道这样做的方法吗?
【问题讨论】:
此 SO 帖子的博文链接:***.com/questions/19573706/… 我能找到的最接近您的是:[<999950]0.00,"K";[<9999500]0.00,,"L";0.00,,,"C"%%
,但会留下尾随的%
标志。可悲的是,我认为没有办法摆脱输出中的百分号。除非有人知道一些我不知道的晦涩技巧?
【参考方案1】:
B2 中的印度分隔符系统:
=ARRAYFORMULA(REGEXREPLACE(REGEXREPLACE(SUBSTITUTE(FLATTEN(QUERY(TRANSPOSE(QUERY(
REGEXEXTRACT(REGEXREPLACE(SUBSTITUTE(FLATTEN(QUERY(TRANSPOSE(QUERY(IFERROR(
REGEXEXTRACT(A2:A, REPT("(.)", IF(LEN(A2:A)=3, LEN(A2:A)-4, LEN(A2:A)-3))), "0"),
"select "&JOIN(",", "Col"&SORT(SEQUENCE(MAX(LEN(A2:A)-3)), 1, )))),,9^9)), " ", ),
"(.2)", "$1,"), REPT("(.)", IF((LEN(A2:A)-3)+ROUNDDOWN((LEN(A2:A)-3)/2)<1, 1,
(LEN(A2:A)-3)+ROUNDDOWN((LEN(A2:A)-3)/2)))),
"select "&JOIN(",", "Col"&SORT(SEQUENCE(MAX((LEN(A2:A)-3)+
ROUNDDOWN((LEN(A2:A)-3)/2))), 1, )))),,9^9)), " ", ), "^,", )&","&IFNA(
REGEXEXTRACT(A2:A, "...$"), IF(A2:A="",,TEXT(A2:A, "000"))), "^0,$", ))
C2 中的印度空头货币:
=ARRAYFORMULA(IFNA(ROUND(A2:A*VLOOKUP(LEN(A2:A), SEQUENCE(19),
1; 1; 1; 1; 1; 10^-5; 10^-5; 10^-7; 10^-7; 10^-9; 10^-9;
10^-11; 10^-11; 10^-13; 10^-13; 10^-15; 10^-15; 10^-17; 10^-17, 2, 1), 2)&" "&
VLOOKUP(LEN(A2:A), SEQUENCE(19),
"Rp"; "Rp"; "Rp"; "Rp"; "Rp"; "L"; "L"; "Cr"; "Cr"; "Arab"; "Arab";
"Kharab"; "Kharab"; "Nil"; "Nil"; "Padma"; "Padma"; "Shankh"; "Shankh", 2, 1)))
旁注:ROUND
设置为 2 位小数。这可以设置为0,或者ROUND
可以完全删除,或者如果需要可以替换为TRUNC
spreadsheet demo
【讨论】:
【参考方案2】:另一种方法如下...
印度分隔符系统:
=INDEX(IF(IFERROR(N(ABS(A1:A*1)))>0, REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(
REPT(0, 50)&"×"&TEXT(A1:A, "0"), REPT("(..)", 24)&"(...)$",
JOIN(",", "$"&SEQUENCE(25))), "(.*×,?)", ), "-,", "-")&
IFNA(REGEXEXTRACT(A1:A&"", "(\.\d1)")), A1:A&""))
印度空头货币:
=INDEX(IF((IFERROR(N(ABS(A1:A*1)))>0)+(IF(ISBLANK(A1:A),,IFERROR(A1:A*1, 1)=0)),
REGEXREPLACE(TEXT(TRUNC(IFNA(A1:A*(10^-(
VLOOKUP(LEN(TEXT(INT(ABS(A1:A*1)), "0")),
SEQUENCE(8, 1, 6, 2), 1)-1)), A1:A), 1), "0.#"), "(\.)$", )&" "&
HLOOKUP(LEN(TEXT(INT(ABS(A1:A*1)), "0")), 0, SEQUENCE(1, 8, 4, 2);
SPLIT("Rp♦Rp♦L♦Cr♦Arab♦Kharab♦Nil♦Padma♦Shankh", "♦") , 2), ""&A1:A))
两个印度系统相结合:
=INDEX(IF((IFERROR(N(ABS(A1:A*1)))>0)+(IF(ISBLANK(A1:A),,IFERROR(A1:A*1, 1)=0)),
REGEXREPLACE(REGEXREPLACE(REGEXREPLACE(
REPT(0, 50)&"×"®EXREPLACE(TEXT(TRUNC(IFNA(A1:A*(10^-(
VLOOKUP(LEN(TEXT(INT(ABS(A1:A*1)), "0")),
SEQUENCE(8, 1, 6, 2), 1)-1)), A1:A), 1), "0"), "(\.)$", ), REPT("(..)", 24)&"(...)$",
JOIN(",", "$"&SEQUENCE(25))), "(.*×,?)", ), "-,", "-")&
IFNA(REGEXEXTRACT(A1:A&"", "(\.\d1)"))&" "&
HLOOKUP(LEN(TEXT(INT(ABS(A1:A*1)), "0")), 0, SEQUENCE(1, 8, 4, 2);
SPLIT("Rp♦Rp♦L♦Cr♦Arab♦Kharab♦Nil♦Padma♦Shankh", "♦") , 2), A1:A&""))
适用于数字 适用于纯文本数字 适用于文本 适用于空单元格 适用于负值 与零一起使用 使用科学记数法 使用小数 与尚赫合作 最高可达 10^±50
english demo sheet
non-english demo sheet
【讨论】:
以上是关于谷歌表格中的印度短货币格式的主要内容,如果未能解决你的问题,请参考以下文章