2013-02-25 117 views
1

我發現此公式可將金額轉換爲單詞,但它不起作用100%。每當數量以20,30,40等結束時,就會發生錯誤。例如1020會出錯,但1019和1021會正常工作。我試圖自己解決這個問題,但沒有運氣。它必須是公式(它與接口不能處理VBA腳本軟件(谷歌文檔)將Excel值轉換爲單詞(英文)

下面是公式:

=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" 
+0

什麼公式!它已經花了我幾分鐘的時間來簡單地格式化它(參見編輯)。看一看「評估公式」功能 - 它會引導您完成每一步,幫助您發現錯誤! – 2013-02-25 11:51:21

+0

說實話,我完全不懂這個公式。我已經意識到谷歌腳本可以實現javascripting,並且在JavaScript中有很多功能可以做同樣的事情。我將使用其中的一個JavaScript函數,並且不要打破上面的公式。 Thx雖然你的建議。 – Albertus 2013-02-25 13:45:40

+0

該公式已修復,請參閱下面的答案 - 因此無需JavaScript ... – 2013-02-25 14:14:01

回答

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)將返回0,這在1-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" 
+0

哇!我們已經實現了JavaScript,但我相信這將幫助其他人。 Thx非常。 – Albertus 2013-02-28 09:09:00