1

金額を単語に変換するこの数式を見つけましたが、100% は機能しません。金額が 20、30、40 などで終わると、エラーが発生します。たとえば、1020 はエラーになりますが、1019 と 1021 は問題なく動作します。私はこれを自分で修正しようとしましたが、運がありません。それは数式でなければなりません (それがインターフェースするソフトウェア (Google Docs) は VBA スクリプトを処理できません。

式は次のとおりです。

=IF(H53<10^12,
    IF(INT(H53/10^9)>0,
        IF(INT(H53/10^11)>0,
            INDEX(
                {"One ","Two ","Three","Four ","Five ","Six ","Seven ","Eight ","Nine "},
                MATCH(INT(H53/10^11),{1,2,3,4,5,6,7,8,9})
            )&"Hundred ",
        "")&
        IF(MOD(INT(H53/10^9),100)<20,
            INDEX(
                {"","One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine ","Ten ",
                "Eleven ","Twelve","Thirteen","Fourteen ","Fifteen","Sixteen","Seventeen","Eighteen ","Nineteen"},
                MATCH(MOD(INT(H53/10^9),100),{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19})
            ),
            INDEX(
                {"","Twenty ","Thirty ","Fourty ","Fifty ","Sixty ","Seventy ","Eighty ","Ninety "}, 
                MATCH(INT(MOD(INT(H53/10^9),100)/10),{1,2,3,4,5,6,7,8,9})
            )&
            INDEX(
                {"One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine "}, 
                MATCH(MOD(INT(H53/10^9),10),{1,2,3,4,5,6,7,8,9})
            )
        )&" Billion  ",
        ""
    )&
    IF(MOD(INT(H53/10^6),10^3)>0,
        IF(INT(MOD(INT(H53/10^6),10^3)/100)>0,
            INDEX(
                {"One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine "},
                MATCH(INT(MOD(INT(H53/10^6),10^3)/100),{1,2,3,4,5,6,7,8,9})
            )&"Hundred ",
        "")&
        IF(MOD(INT(H53/10^6),100)<20,
            INDEX(
                {"","One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine ","Ten ",
                "Eleven ","Twelve","Thirteen","Fourteen ","Fifteen ","Sixteen","Seventeen","Eighteen ","Nineteen"},
                MATCH(MOD(INT(H53/10^6),100),{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19})
            ),
            INDEX(
                {"","Twenty ","Thirty ","Fourty ","Fifty ","Sixty ","Seventy ","Eighty ","Ninety "},
                MATCH(INT(MOD(INT(H53/10^6),100)/10),{1,2,3,4,5,6,7,8,9})
            )&
            INDEX(
                {"One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine "}, 
                MATCH(MOD(INT(H53/10^6),10),{1,2,3,4,5,6,7,8,9})
            )
        )&" Million  ",
        ""
    )&
    IF(MOD(INT(H53/10^3),10^3)>0,
        IF(INT(MOD(INT(H53/10^3),10^3)/100)>0,
            INDEX(
                {"One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine "},
                MATCH(INT(MOD(INT(H53/10^3),10^3)/100),{1,2,3,4,5,6,7,8,9})
            )&"Hundred ",
        "")&
        IF(MOD(INT(H53/10^3),100)<20,
            INDEX(
                {"","One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine ","Ten ",
                "Eleven ","Twelve","Thirteen","Fourteen ","Fifteen ","Sixteen","Seventeen","Eighteen ","Nineteen"},
                MATCH(MOD(INT(H53/10^3),100),{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19})
            ),
            INDEX(
                {"","Twenty ","Thirty ","Fourty ","Fifty ","Sixty ","Seventy ","Eighty ","Ninety "},
                MATCH(INT(MOD(INT(H53/10^3),100)/10),{1,2,3,4,5,6,7,8,9})
            )&
            INDEX(
                {"One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine "},
                MATCH(MOD(INT(H53/10^3),10),{1,2,3,4,5,6,7,8,9})
            )
        )&" Thousand  ",
        ""
    )&
    IF(MOD(MOD(H53,10^4),10^3)>0,
        IF(INT(MOD(MOD(H53,10^4),10^3)/100)>0,
            INDEX(
                {"One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine "},
                MATCH(INT(MOD(MOD(H53,10^4),10^3)/100),{1,2,3,4,5,6,7,8,9})
            )&"Hundred ",
            ""
        )&
        IF(MOD(MOD(MOD(H53,10^4),10^3),100)<20,
            INDEX(
                {"","One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine ","Ten ",
                "Eleven ","Twelve","Thirteen","Fourteen ","Fifteen ","Sixteen","Seventeen","Eighteen ","Nineteen"},
                MATCH(MOD(MOD(MOD(H53,10^4),10^3),100),{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19})
            ),
            INDEX(
                {"","Twenty ","Thirty ","Fourty ","Fifty ","Sixty ","Seventy ","Eighty ","Ninety "},
                MATCH(INT(MOD(MOD(MOD(H53,10^4),10^3),100)/10),{1,2,3,4,5,6,7,8,9})
            )&
            INDEX(
                {"One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine "},
                MATCH(MOD(MOD(MOD(H53,10^4),10^3),10),{1,2,3,4,5,6,7,8,9})
            )
        ),
        ""
    ),
    ""
) & " Rands"
4

1 に答える 1

3

問題は最後の部分にあります:

 INDEX({"One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine "},
     MATCH(MOD(MOD(MOD(H53,10^4),10^3),10),{1,2,3,4,5,6,7,8,9})

MOD(MOD(MOD(H53,10^4),10^3),10)01-9にはないを返します。

したがって、上記の行を次のように変更する必要があります。

 INDEX({"", "One ","Two ","Three ","Four ","Five ","Six ","Seven ","Eight ","Nine "},
     MATCH(MOD(MOD(MOD(H53,10^4),10^3),10),{0, 1,2,3,4,5,6,7,8,9})

この問題は、式の他の領域にも存在します。

すべてがこの完全な式で修正されます(一貫して省略されていたいくつかのスペースも追加されます):

=IF(B1<10^12,
 IF(INT(B1/10^9)>0,
  IF(INT(B1/10^11)>0,
   INDEX(
    {"One ";"Two ";"Three ";"Four ";"Five ";"Six ";"Seven ";"Eight ";"Nine "},
    MATCH(INT(B1/10^11),{1;2;3;4;5;6;7;8;9})
   )&"Hundred ",
  "")&
  IF(MOD(INT(B1/10^9),100)<20,
   INDEX(
    {"";"One ";"Two ";"Three ";"Four ";"Five ";"Six ";"Seven ";"Eight ";"Nine ";"Ten ";"Eleven ";"Twelve ";"Thirteen ";"Fourteen ";"Fifteen ";"Sixteen ";"Seventeen ";"Eighteen ";"Nineteen "},
    MATCH(MOD(INT(B1/10^9),100),{0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19})
   ),
   INDEX(
    {"";"Twenty ";"Thirty ";"Fourty ";"Fifty ";"Sixty ";"Seventy ";"Eighty ";"Ninety "},
    MATCH(INT(MOD(INT(B1/10^9),100)/10),{1;2;3;4;5;6;7;8;9})
   )&
   INDEX(
    {"";"One ";"Two ";"Three ";"Four ";"Five ";"Six ";"Seven ";"Eight ";"Nine "},
    MATCH(MOD(INT(B1/10^9),10),{0;1;2;3;4;5;6;7;8;9})
   )
  )&" Billion  ",
  ""
 )&
 IF(MOD(INT(B1/10^6),10^3)>0,
  IF(INT(MOD(INT(B1/10^6),10^3)/100)>0,
   INDEX(
    {"";"One ";"Two ";"Three ";"Four ";"Five ";"Six ";"Seven ";"Eight ";"Nine "},
    MATCH(INT(MOD(INT(B1/10^6),10^3)/100),{0;1;2;3;4;5;6;7;8;9})
   )&"Hundred ",
  "")&
  IF(MOD(INT(B1/10^6),100)<20,
   INDEX(
   {"";"One ";"Two ";"Three ";"Four ";"Five ";"Six ";"Seven ";"Eight ";"Nine ";"Ten ";"Eleven ";"Twelve ";"Thirteen ";"Fourteen ";"Fifteen ";"Sixteen ";"Seventeen ";"Eighteen ";"Nineteen "},
    MATCH(MOD(INT(B1/10^6),100),{0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19})
   ),
   INDEX(
    {"";"Twenty ";"Thirty ";"Fourty ";"Fifty ";"Sixty ";"Seventy ";"Eighty ";"Ninety "},
    MATCH(INT(MOD(INT(B1/10^6),100)/10),{1;2;3;4;5;6;7;8;9})
   )&
   INDEX(
    {"";"One ";"Two ";"Three ";"Four ";"Five ";"Six ";"Seven ";"Eight ";"Nine "},
    MATCH(MOD(INT(B1/10^6),10),{0;1;2;3;4;5;6;7;8;9})
   )
  )&" Million  ",
  ""
 )&
 IF(MOD(INT(B1/10^3),10^3)>0,
  IF(INT(MOD(INT(B1/10^3),10^3)/100)>0,
   INDEX(
    {"";"One ";"Two ";"Three ";"Four ";"Five ";"Six ";"Seven ";"Eight ";"Nine "},
    MATCH(INT(MOD(INT(B1/10^3),10^3)/100),{0;1;2;3;4;5;6;7;8;9})
   )&"Hundred ",
  "")&
  IF(MOD(INT(B1/10^3),100)<20,
   INDEX(
    {"";"One ";"Two ";"Three ";"Four ";"Five ";"Six ";"Seven ";"Eight ";"Nine ";"Ten ";"Eleven ";"Twelve ";"Thirteen ";"Fourteen ";"Fifteen ";"Sixteen ";"Seventeen ";"Eighteen ";"Nineteen "},
    MATCH(MOD(INT(B1/10^3),100),{0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19})
   ),
   INDEX(
    {"";"Twenty ";"Thirty ";"Fourty ";"Fifty ";"Sixty ";"Seventy ";"Eighty ";"Ninety "},
    MATCH(INT(MOD(INT(B1/10^3),100)/10),{1;2;3;4;5;6;7;8;9})
   )&
   INDEX(
    {"";"One ";"Two ";"Three ";"Four ";"Five ";"Six ";"Seven ";"Eight ";"Nine "},
    MATCH(MOD(INT(B1/10^3),10),{0;1;2;3;4;5;6;7;8;9})
   )
  )&" Thousand  ",
  ""
 )&
 IF(MOD(MOD(B1,10^4),10^3)>0,
  IF(INT(MOD(MOD(B1,10^4),10^3)/100)>0,
   INDEX(
    {"";"One ";"Two ";"Three ";"Four ";"Five ";"Six ";"Seven ";"Eight ";"Nine "},
    MATCH(INT(MOD(MOD(B1,10^4),10^3)/100),{0;1;2;3;4;5;6;7;8;9})
   )&"Hundred ",
   ""
  )&
  IF(MOD(MOD(MOD(B1,10^4),10^3),100)<20,
   INDEX(
    {"";"One ";"Two ";"Three ";"Four ";"Five ";"Six ";"Seven ";"Eight ";"Nine ";"Ten ";"Eleven ";"Twelve ";"Thirteen ";"Fourteen ";"Fifteen ";"Sixteen ";"Seventeen ";"Eighteen ";"Nineteen "},
    MATCH(MOD(MOD(MOD(B1,10^4),10^3),100),{0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19})
   ),
   INDEX(
    {"";"Twenty ";"Thirty ";"Fourty ";"Fifty ";"Sixty ";"Seventy ";"Eighty ";"Ninety "},
    MATCH(INT(MOD(MOD(MOD(B1,10^4),10^3),100)/10),{1;2;3;4;5;6;7;8;9})
   )&
   INDEX(
    {"";"One ";"Two ";"Three ";"Four ";"Five ";"Six ";"Seven ";"Eight ";"Nine "},
    MATCH(MOD(MOD(MOD(B1,10^4),10^3),10),{0;1;2;3;4;5;6;7;8;9})
   )
  ),
  ""
 ),
 ""
) & " Rands"
于 2013-02-25T12:17:13.263 に答える