【问题标题】: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 Brook McEachern,但无法实现我需要的格式。

有谁知道这样做的方法吗?

【问题讨论】:

  • 此 SO 帖子的博文链接:stackoverflow.com/questions/19573706/…
  • 我能找到的最接近您的是:[<999950]0.00,"K";[<9999500]0.00,,"L";0.00,,,"C"%%,但会留下尾随的% 标志。可悲的是,我认为没有办法摆脱输出中的百分号。除非有人知道一些我不知道的晦涩技巧?

标签: google-sheets-formula


【解决方案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&"", "(\.\d{1})")), 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)&"×"&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"), "(\.)$", ), REPT("(..)", 24)&"(...)$", 
     JOIN(",", "$"&SEQUENCE(25))), "(.*×,?)", ), "-,", "-")&
     IFNA(REGEXEXTRACT(A1:A&"", "(\.\d{1})"))&" "&
     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

    【讨论】:

      猜你喜欢
      • 2016-02-03
      • 2012-01-22
      • 2022-08-22
      • 2017-04-13
      • 1970-01-01
      • 2020-08-29
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多