FM數值轉中文大寫金額函數分享
數值轉中文大寫金額,這是我個人不管用VB或 VBA,都會寫成的一個函數,寫法分享如下,若想轉換成含小數兩位的中文大寫金額,請諸君就這個函數,自行加工完成它,算是自己的用功。
函數名稱:將20位數以內的金額,轉成中文大寫金額
TranCMY(金額)
函式內容:
Let (
[
金額單位="元拾佰仟萬拾佰仟億拾佰仟兆拾佰仟京拾佰仟";
數字大寫="零壹貳參肆伍陸柒捌玖";
金額長度=Length ( Filter (金額 ; "0123456789" ) );
純數字金額=Filter (金額 ; "0123456789" ) ;
位1=
If (Middle ( 純數字金額 ; 金額長度 ; 1 )=0 ; "元" ;
If(金額長度>0;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 1 ; 1 ))
);
位2=
If (Middle ( 純數字金額 ; 金額長度-1 ; 1 )=0 ; "" ;
If(金額長度>1;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-1 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 2 ; 1 ))
);
位3=
If (Middle ( 純數字金額 ; 金額長度-2 ; 1 )=0 ; "" ;
If(金額長度>2;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-2 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 3 ; 1 ))
);
位4=
If (Middle ( 純數字金額 ; 金額長度-3 ; 1 )=0 ; "" ;
If(金額長度>3;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-3 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 4 ; 1 ))
);
位5=
If (Middle ( 純數字金額 ; 金額長度-4 ; 1 )=0 ; "萬" ;
If(金額長度>4;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-4 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 5 ; 1 ))
);
位6=
If (Middle ( 純數字金額 ; 金額長度-5 ; 1 )=0 ; "" ;
If(金額長度>5;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-5 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 6 ; 1 ))
);
位7=
If (Middle ( 純數字金額 ; 金額長度-6 ; 1 )=0 ; "" ;
If(金額長度>6;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-6 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 7 ; 1 ))
);
位8=
If (Middle ( 純數字金額 ; 金額長度-7 ; 1 )=0 ; "" ;
If(金額長度>7;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-7 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 8 ; 1 ))
);
位9=
If (Middle ( 純數字金額 ; 金額長度-8 ; 1 )=0 ; "億" ;
If(金額長度>8;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-8 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 9 ; 1 ))
);
位10=
If (Middle ( 純數字金額 ; 金額長度-9 ; 1 )=0 ; "" ;
If(金額長度>9;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-9 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 10 ; 1 ))
);
位11=
If (Middle ( 純數字金額 ; 金額長度-10 ; 1 )=0 ; "" ;
If(金額長度>10;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-10; 1 )+1 ; 1 ) &
Middle (金額單位 ; 11 ; 1 ))
);
位12=
If (Middle ( 純數字金額 ; 金額長度-11 ; 1 )=0 ; "" ;
If(金額長度>11;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-11 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 12 ; 1 ))
);
位13=
If (Middle ( 純數字金額 ; 金額長度-12 ; 1 )=0 ; "兆" ;
If(金額長度>12;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-12 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 13 ; 1 ))
);
位14=
If (Middle ( 純數字金額 ; 金額長度-13 ; 1 )=0 ; "" ;
If(金額長度>13;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-13 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 14 ; 1 ))
);
位15=
If (Middle ( 純數字金額 ; 金額長度-14 ; 1 )=0 ; "" ;
If(金額長度>14;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-14 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 15 ; 1 ))
);
位16=
If (Middle ( 純數字金額 ; 金額長度-15 ; 1 )=0 ; "" ;
If(金額長度>15;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-15 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 16 ; 1 ))
);
位17=
If (Middle ( 純數字金額 ; 金額長度-16 ; 1 )=0 ; "京" ;
If(金額長度>16;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-16 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 17 ; 1 ))
);
位18=
If (Middle ( 純數字金額 ; 金額長度-17 ; 1 )=0 ; "" ;
If(金額長度>17;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-17 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 18 ; 1 ))
);
位19=
If (Middle ( 純數字金額 ; 金額長度-18 ; 1 )=0 ; "" ;
If(金額長度>18;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-18 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 19 ; 1 ))
);
位20=
If (Middle ( 純數字金額 ; 金額長度-19 ; 1 )=0 ; "" ;
If(金額長度>19;
Middle (數字大寫 ; Middle ( 純數字金額 ; 金額長度-19 ; 1 )+1 ; 1 ) &
Middle (金額單位 ; 20 ; 1 ))
)
];
位20 & 位19 & 位18 & 位17 & 位16 & 位15 & 位14 & 位13 & 位12 & 位11 & 位10 & 位9 & 位8 & 位7 & 位6 & 位5 & 位4 & 位3 & 位2 & 位1 &"整"
)
