Suma in cuirsive

Kaundan

Sa ubos makit-an nimo ang usa ka andam nga hinimo sa user-defined function sa VBA nga naghubad sa bisan unsang numero gikan sa 0 ngadto sa 9 ngadto sa representasyon sa teksto, ie sa kantidad sa mga pulong. Sa dili pa gamiton, kini nga function kinahanglan idugang sa imong libro. Alang niini:

  1. pindota ang keyboard shortcut ALT + F11aron maablihan ang Visual Basic Editor
  2. pagdugang bag-ong walay sulod nga module pinaagi sa menu Isulod – Module
  3. Kopyaha ug idikit ang teksto niini nga function didto:
Function SUM(n As Doble) As String Dim Nums1, Nums2, Nums3, Nums4 As Variant Nums1 = Array("", "usa", "duha", "tulo", "upat", "lima", "unom", "pito", "walo", "siyam") Nums2 = Array("", "napulo", "kawhaan", "katloan", "kap-atan", "kalim-an", "kan-uman", "kapitoan", _ "kawaloan ", "kasiyaman") Nums3 = Array("", "usa ka gatus", "duha ka gatus", "tulo ka gatus", "upat ka gatus", "lima ka gatus", "unom ka gatus", "pito ka gatus", _ " walo ka gatus", "siyam ka gatus") Nums4 = Array("", "usa", "duha", "tulo", "upat", "lima", "unom", "pito", "walo", "siyam ") Nums5 = Array("napulo " , "napulog-usa", "napulog-duha", "napulog-tulo", "napulo'g-upat", _ "napulo'g lima", "napulo ug unom", "napulo ug pito", "napulo'g walo", "napulog siyam") Kon n < = 0 Unya SUMWRITE = "zero" Exit Function Katapusan Kung 'bahina ang numero ngadto sa mga digit gamit ang helper function Class ed = Class(n, 1) dec = Class(n, 2) sot = Class(n, 3) tys = Class (n, 4) dectys = Klase(n , 5) sottys = Klase(n, 6) mil = Klase(n, 7) decmil= Klase(n, 8) 'susiha ang minilyon Pilia ang Kaso decmil Kaso 1 mil_txt = Nums5(mil ) & "million" GoTo www Case 2 To 9 decmil_txt = Nums2(decmil) End Select Select Case mil Case 1 mil_txt = Nums1(mil) & "million " Case 2, 3, 4 mil_txt = Nums1(mil) & "million " Kaso 5 Hangtod sa 20 mil_txt = Nums1(mil) & "milyon-milyon " Katapusan Pagpili www: sottys_txt = Nums3(sottys) ' susiha ang liboan Pilia ang Kaso dectys Kaso 1 tys_txt = Nums5(tys) & "libo" GoTo eee Kaso 2 Hangtod 9 dectys_txt = Nums2(dectys) End Select Select Case tys Case 0 Kung dectys > 0 Unya tys_txt = Nums4(tys) & "thousands" Case 1 tys_txt = Nums4(tys) & "thousand" Case 2, 3, 4 tys_txt = Nums4(tys) & "libo" Kaso 5 Hangtod sa 9 tys_txt = Nums4(tys) & "libo" Katapusan Pagpili Kung dectys = 0 Ug tys = 0 Ug sottys <> 0 Unya sottys_txt = sottys_txt & "libo" eee: sot_txt = Nums3(sot) ' check tens Select Case dec Case 1 ed_txt = Nums5(ed) GoTo rrr Case 2 To 9 dec_txt = Nums2(dec) End Select ed_txt = Nums1 (ed) rrr: 'porma ang kataposang laray gamit ang SUM IN SPEECH = decmil_ txt & mil_txt & sottys_txt & dectys_txt & tys_txt & sot_txt & dec_txt & ed_txt Katapusan nga Function ' helper function aron makuha gikan sa gidaghanon sa mga digit Private Function Class(M, I) Class = Int(Int(M - (10 ^ I) * Int(M / ( 10 ^ I))) / 10 ^ (I - 1)) Katapusan nga Function    

I-save ang file (kung aduna kay Excel 2007 o 2010, nan ang tipo sa file kinahanglan nga macro-enabled, ie xlsm format!) ug balik sa Excel. Karon mahimo nimong isulod ang gibuhat nga function sa bisan unsang cell sa worksheet sa naandan nga paagi - pinaagi sa function wizard (button fx sa formula bar, kategorya Gipunting nga Gipili sa Gumagamit) o pinaagi lamang sa pag-type niini sa cell nga mano-mano ug pagtino sa cell nga adunay kantidad isip argumento:

Kung kinahanglan nimo nga idugang ang mga pennies sa nadawat nga teksto, nan mahimo nimong gamiton ang usa ka gamay nga labi ka komplikado nga pagtukod:

 u3d SUM IN WRITE (A3) & ” rub. “&TEXT((A3-INTEGER(A100))*00;”XNUMX″)&”pulis.” 

u3d SUM IN WRITE (A3) & ” rub. “&TEXT((A3-INT(A100))*00;”XNUMX″)&”pulis.”

Dayon, pananglitan, alang sa numero nga 35,15, ang resulta sa function motan-aw sama sa "katloan ug lima ka rubles. 15 kop.”

 

  • Usa ka mas kusgan nga bersyon sa function nga adunay mga rubles ug kopecks sa / English gikan sa PLEX add-on
  • Unsa ang mga macros, kung asa ibutang ang macro code, kung giunsa kini gamiton

 

Leave sa usa ka Reply