ตัวเลขในคำค. วิธีเขียนจำนวน ตัวเลข ตัวเลขเป็นคำใน Excel ตัวเลขในคำที่มี kopeck เป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กใน Excel

เมื่อแสดงรายงานต่างๆ มักจำเป็นต้องแปลงค่าตัวเลขเป็นสตริงเป็นคำ ใน 1C สิ่งนี้แก้ไขได้ง่ายมาก: ฟังก์ชัน NumberInWord() มีไว้เพื่อสิ่งนี้

เมื่อสร้างตัวเลขเป็นคำ เป็นไปได้ที่จะแสดงหัวข้อในการคำนวณตัวเลขนี้เคียงข้างกันในเพศและตัวพิมพ์ที่ต้องการ วิชาแคลคูลัส- นี่คือสิ่งที่ตัวเลขที่แปลงแล้วใช้วัด เช่น เงิน กล่อง รถม้า โทรทัศน์ ฯลฯ

  • โดยไม่ต้องมีวิชาแคลคูลัส:
    • ยี่สิบสอง;
    • สามร้อยแปดสิบสี่.
  • ด้วยเรื่องของแคลคูลัส:
    • เหรียญกษาปณ์สามสิบแปด;
    • เรือสิบสองลำ;
    • บ้านสองหลัง.

ตัวอย่าง

ก่อนอื่น เรามายกตัวอย่างการแปลงเพื่อค้นหาความสามารถของ 1C:

// ***** หมายเลขเอาต์พุต: *****ตัวเลขในคำ (9876.54); // เก้าพันแปดร้อยเจ็ดสิบหก 54ตัวเลขในคำ (1234.56, "L=ru_RU;DP=TRUE" , "ทั้งหมด ทั้งหมด ทั้งหมด ฉ ร้อย ร้อย ร้อย ฉ 2"); // หนึ่งพันสองร้อยสามสิบสี่จุดห้าสิบหกร้อยตัวเลขในคำ (7432, "L=ru_RU;NP=False" , ",0" ); // เจ็ดพันสี่ร้อยสามสิบสอง // ***** การถอนเงิน: *****ตัวเลขในคำ (9845.11, "л=ru_RU" , ); // เก้าพันแปดร้อยสี่สิบห้ารูเบิล 11 โกเปคตัวเลขเป็นคำ (2845.11, "L=ru_RU;DP=True" , "รูเบิล, รูเบิล, รูเบิล, ม., โคเปค, โคเปค, โคเปค, w, 2"); // สองพันแปดร้อยสี่สิบห้ารูเบิลสิบเอ็ดโคเปคจำนวนเป็นคำ (555.16, "L=ru_RU;DP=True" , "ดอลลาร์ ดอลลาร์ ดอลลาร์ เมตร ร้อยละ ร้อยละ เซนต์ ม. 2"); // ห้าร้อยห้าสิบห้าดอลลาร์สิบหกเซ็นต์จำนวนเป็นคำ (453.23, "L=ru_RU;DP=True" , "ยูโร ยูโร ยูโร เมตร เซ็นต์ เซ็นต์ เซ็นต์ ม 2"); // สี่ร้อยห้าสิบสามยูโร ยี่สิบสามเซ็นต์ตัวเลขในคำ (812.44, "L=en_US;DP=True" , "ดอลลาร์ ดอลลาร์ เซ็นต์ เซ็นต์ 2"); // แปดร้อยสิบสองดอลลาร์สี่สิบสี่เซ็นต์ NumberIn Words (3945.76, "L=en_US;DP=True" , ​​​​"ยูโร, ยูโร, เซนต์, เซนต์, 2" ); // สามพันเก้าร้อยสี่สิบห้ายูโรเจ็ดสิบหกเซ็นต์ // ***** คุณสามารถแปลงได้ไม่เพียงแต่หน่วยการเงิน: *****จำนวนเป็นคำ (535 , "л=ru_RU" , "กล่อง กล่อง กล่อง W W 0"); // ห้าร้อยสามสิบห้ากล่องจำนวนเป็นคำ (342 , "л=ru_RU" , "ทีวี ทีวี ทีวี ม ม 0"); // ทีวีสามร้อยสี่สิบสองเครื่อง

คำอธิบายการทำงานกับฟังก์ชัน

ตามที่เราค้นพบ หากต้องการหาตัวเลขเป็นคำ ให้ใช้ฟังก์ชัน

ตัวเลขในคำ (< Число >, < FormatString>, < รายการ พารามิเตอร์ แคลคูลัส>)

ฟังก์ชันส่งกลับค่าสตริง ต่อไปนี้จะถูกส่งผ่านเป็นพารามิเตอร์อินพุต:

  • Number คือค่าที่จะแปลง
  • FormatString - ตัวเลือกการจัดรูปแบบ:
    • L — รหัสการแปล (เช่น u_RU — รัสเซีย; en_US — อังกฤษ, de_DE — เยอรมัน) ตามค่าเริ่มต้น การตั้งค่าระบบปฏิบัติการจะถูกใช้
    • NP - แสดงชื่อเรื่องของแคลคูลัสตามค่าเริ่มต้น - True
    • ND - แสดงชื่อของส่วนทศนิยมของวิชาแคลคูลัสตามค่าเริ่มต้น - จริง
    • DP - แสดงส่วนที่เป็นเศษส่วนเป็นคำ/ตัวเลข ค่าเริ่มต้น - เท็จ
    • AI - อนุมานการร่วมและ วิเคราะห์เฉพาะการแปลภาษาอังกฤษเท่านั้น ค่าที่เป็นไปได้: “ไม่ใช้”, “ใช้”
  • พารามิเตอร์หัวเรื่องแคลคูลัส - รายการพารามิเตอร์ของหัวเรื่องแคลคูลัสโดยคั่นด้วยเครื่องหมายจุลภาค รูปแบบขึ้นอยู่กับการแปล

สำหรับภาษารัสเซีย พารามิเตอร์ของวิชาแคลคูลัสมีรูปแบบ "รูเบิล, รูเบิล, รูเบิล, m, kopeck, kopecks, kopecks, zh, 2" โดยที่:

  • รูเบิล – กรณีนามเอกพจน์;
  • รูเบิล – กรณีสัมพันธการกเอกพจน์;
    รูเบิล – กรณีสัมพันธการกพหูพจน์;
    ม. – ผู้ชาย (w – ผู้หญิง, s – เพศ);
    “kopeck, kopeck, kopeck, zh” – เศษส่วน คล้ายกับวิชาแคลคูลัส (อาจไม่มี)
    “2” – จำนวนหลักของส่วนที่เป็นเศษส่วน (อาจไม่มี ค่าเริ่มต้นคือ 2)

ใช้ในโซลูชั่นมาตรฐาน

ในการกำหนดค่าที่สร้างขึ้นในโมดูลทั่วไป ทำงานกับอัตราสกุลเงินมีฟังก์ชั่น

FormAmountInWords(จำนวนเงิน, สกุลเงิน, ถอนจำนวนเงินโดยไม่มี Kopecks= เท็จ)

ฟังก์ชันนี้ใช้เพื่อแปลงจำนวนเงินเป็นสตริงเป็นคำ

ยังมีคำถามอยู่ใช่ไหม?
ถามในความคิดเห็นต่อบทความ

หากคุณมีข้อสงสัยเกี่ยวกับวิธีการเขียนบางอย่างเป็นภาษาอังกฤษหรือรัสเซีย โปรดใช้ตัวแปลของเราสำหรับตัวเลข เพื่อที่จะดำเนินการแปล ให้กรอกตัวเลขที่ต้องการในรูปแบบตัวเลข จากนั้นโปรแกรมจะคำนวณแบบฟอร์มที่เป็นลายลักษณ์อักษร

ปัจจุบันนักแปลจำกัดไว้ที่ 18 หลักก่อนจุดทศนิยม (สำหรับค่าจำนวนเต็ม) และ 18 หลักหลังจุดทศนิยม (สำหรับการแปลค่าที่มีเศษส่วน)

ตัวเลข:

ดังที่คุณเห็นข้างต้น มีการสะกดคำภาษาอังกฤษหลายคำสำหรับตัวเลขที่กำลังแปล ด้วยความช่วยเหลือของพวกเขา คุณสามารถบอกความแตกต่างระหว่างภาษาอังกฤษแบบอเมริกัน (AmE) และภาษาอังกฤษแบบอังกฤษ (BrE) ในทางกลับกัน สามารถระบุตัวเลือกการสะกดได้หลายตัวเลือก ตัวเลือกใดที่จะใช้ในข้อความขึ้นอยู่กับบริบทของประโยค

โปรแกรมนี้จัดการได้อย่างง่ายดายด้วยการแปลงตัวเลขเป็นข้อความ ภาษาอังกฤษและสำหรับรัสเซีย เหล่านั้น. หากคุณต้องการเขียนตัวเลขเป็นคำในภาษารัสเซีย เพียงป้อนตัวเลขในรูปแบบตัวเลขแล้วคลิกปุ่ม "แปล"

การกำหนด

เมื่อแปลเป็นภาษารัสเซียนักแปลจะคำนึงถึงการเปลี่ยนแปลงเพศที่เป็นไปได้ด้วย หมายเลขที่กำหนดซึ่งระบุด้วยไอคอนต่อไปนี้:
- เพศหญิง - เพศชาย - เป็นกลาง

นอกจากตัวเลขแล้ว โปรแกรมของเรายังสามารถเขียนจำนวนเงินต่างๆ เป็นคำพูดได้อีกด้วย ในกรณีนี้ การโอนเงินจะดำเนินการเป็นสามสกุลเงินที่แตกต่างกันในคราวเดียว: รูเบิล ดอลลาร์ และปอนด์สเตอร์ลิง

ปุ่มนี้ใช้เพื่อสลับระหว่างโหมด "ตัวเลขเป็นคำ" และ "จำนวนเป็นคำ"

ก่อนอื่น เรามุ่งเน้นไปที่ผู้คนที่เรียนภาษาอังกฤษ ภาษา แต่ถ้านักแปลคนนี้มีประโยชน์กับคนอื่น (เช่น เมื่อกรอกเอกสารทางธุรกิจ) เราก็ยินดีเป็นอย่างยิ่ง

งานที่พบบ่อยมากคือการเขียนตัวเลขเป็นคำใน Excel ยังไม่มีฟังก์ชันในตัวใน Excel ดังนั้นเราจึงสามารถสร้างฟังก์ชันแบบกำหนดเองที่จะแทนที่ตัวเลขด้วยข้อความได้

ตามกฎแล้ว สิ่งนี้จำเป็นสำหรับการค้า การบัญชี และด้านอื่น ๆ ที่มีการชำระหนี้ เป็นเงินสด- โดยปกติแล้วจำเป็นต้องแปลจำนวนเงินเป็นรูเบิลและโกเปคเป็นคำดังในภาพ (ตัวอย่างแรก)

สมมติว่าเราทำการคำนวณในตารางและรับยอดรวมเป็นรูเบิล 1526.23

เราจำเป็นต้องป้อนตัวเลขนี้เป็นรูเบิลและแนะนำให้ระบุ kopeck ด้วย ในการดำเนินการนี้ เราจะสร้างฟังก์ชันผู้ใช้สากลพิเศษซึ่งจะมีลักษณะดังนี้:

Propis(จำนวนเงิน ;เงิน ;lang ;Prec )

เงิน - ที่นี่ระบุประเภทของสกุลเงินคุณสามารถระบุรูเบิลดอลลาร์และยูโร (“RUB”, “USD”, “EUR”) - สกุลเงินจะต้องระบุในเครื่องหมายคำพูด

lang เป็นภาษาที่คุณต้องแสดงจำนวนมีสองภาษาให้เลือก: อังกฤษและรัสเซีย (“ EN”, “RU”) - ระบุไว้ในเครื่องหมายคำพูดด้วย

Prec — แสดง (1) หรือไม่แสดง (0) ส่วนที่เป็นเศษส่วน

ดังนั้นคุณสามารถเขียนจำนวนเงินเป็นรูเบิลดอลลาร์หรือยูโรเป็นตัวอักษรรัสเซียหรืออังกฤษพร้อมกับส่วนที่เป็นเศษส่วนและขึ้นอยู่กับตัวเลขการลงท้ายที่ถูกต้องจะถูกแทรกเช่น 2 รูเบิล 8 รูเบิล 1 รูเบิลเป็นต้น .

ในการสร้างฟังก์ชัน Propis แบบกำหนดเอง คุณต้องคัดลอกโค้ดที่ให้ไว้ด้านล่าง จากนั้นคลิก ALT+F11หากต้องการเปิด VBA ให้เพิ่มโมดูลว่างใหม่ผ่านทางเมนู แทรก - โมดูลและวางโค้ดที่คัดลอกไว้ที่นั่น

มาโครฟังก์ชันผลรวมแบบกำหนดเองเป็นคำ

ฟังก์ชั่น Propis (จำนวนเป็นสตริง, เงินเสริมเป็นสตริง = "RUB", ตัวเลือก lang As String = "RU", ตัวเลือก Prec As Integer = 1) Dim ทั้งหมดเป็นจำนวนสองเท่า = แทนที่ (จำนวน, "-", Application.International( xlDecimalSeparator)) Amount = แทนที่ (จำนวน ".", Application.International (xlDecimalSeparator)) Amount = แทนที่ (จำนวน ",", Application.International (xlDecimalSeparator)) Sum = WorksheetFunction.Round (CDbl (จำนวน), 2) เงิน = UCase(เงิน) lang = UCase(lang) ทั้งหมด = Int(Sum) fraq = รูปแบบ(รอบ((ผลรวม - ทั้งหมด) * 100), "00") เลือกคลาสกรณี (ทั้งหมด, 1) + คลาส(ทั้งหมด, 2) * 10 กรณีที่ 1, 21, 31, 41, 51, 61, 71, 81, 91 w_rus_r = "รูเบิล" w_rus_d = "ดอลลาร์" w_rus_e = "ยูโร" w_en_r = "รูเบิล" w_en_d = "ดอลลาร์" w_en_e = " ยูโร" กรณี 2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54, 62, 63, 64, 72, 73, 74, 82, 83, 84 , 92, 93, 94 w_rus_r = "รูเบิล" w_rus_d = "ดอลลาร์" w_rus_e = "ยูโร" w_en_r = "รูเบิล" w_en_d = "ดอลลาร์" w_en_e = "ยูโร" กรณีอื่น w_rus_r = "รูเบิล" w_rus_d = "ดอลลาร์" w_rus_e = "euro" w_en_r = "rubles" w_en_d = "dollars" w_en_e = "euro" สิ้นสุด เลือก เลือกกรณี fraq กรณีที่ 1, 21, 31, 41, 51, 61, 71, 81, 91 f_rus_r = "kopeck" f_rus_d = "cent " f_rus_e = "cent" f_rus_p = "ร้อย" f_en_r = "kopecks" f_en_d = "cents" f_en_e = "cents" f_en_e = "cents" กรณีที่ 2, 3, 4, 22, 23, 24, 32, 33, 34, 42, 43, 44, 52, 53, 54, 62, 63, 64, 72, 73, 74, 82, 83, 84, 92, 93, 94 f_rus_r = "โกเปค" f_rus_d = "ร้อยละ" f_rus_e = "ร้อยละ" f_en_r = "kopecks" f_en_d = "cents" f_en_e = "cents" กรณีอื่น f_rus_r = "kopecks" f_rus_d = "cents" f_rus_e = "cents" f_en_r = "kopecks" f_en_d = "cents" f_en_e = "cents" สิ้นสุด เลือกถ้า Prec = 0 จากนั้น fraq = "" f_rus_r = "" f_rus_d = "" f_rus_e = "" f_en_r = "" f_en_d = "" f_en_e = "" สิ้นสุด ถ้า ถ้า lang = "RU" จากนั้นเลือก Case Money Case "RUB" Out = ScriptRus (ทั้งหมด) & " " & w_rus_r & " " & fraq & " " & f_rus_r กรณี "USD" ออก = ScriptRus (ทั้งหมด) & " " & w_rus_d & " " & fraq & " " & f_rus_d กรณี "EUR" ออก = ScriptRus(ทั้งหมด) & " " & w_rus_e & " " & fraq & " " & f_rus_e End เลือก End ถ้า lang = "EN" จากนั้นเลือก Case Money Case "RUB" Out = ScriptEng(whole) & " " & w_en_r & " " & fraq & " " & f_en_r Case "USD" Out = ScriptEng(ทั้งหมด) & " " & w_en_d & " " & fraq & " " & f_en_d Case "EUR" Out = ScriptEng(ทั้งหมด) & " " & w_en_e & " " & fraq & " " & f_en_e End เลือก End ถ้า Propis = WorksheetFunction.Trim(Out) ฟังก์ชั่นสิ้นสุด ฟังก์ชั่นส่วนตัว Class(m, i) Class = Int(Int(m - (10 ^ i) * Int(m / (10 ^ i))) / 10 ^ (i - 1)) ฟังก์ชั่นสิ้นสุด ฟังก์ชั่นส่วนตัว ScriptRus(n As Double) As String Dim Nums1, Nums2, Nums3, Nums4 As Variant Nums1 = Array("", "one", "two " , "สาม", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า") Nums2 = Array("", "สิบ", "ยี่สิบ", "สามสิบ", "สี่สิบ ", "ห้าสิบ", "หกสิบ", "เจ็ดสิบ", "แปดสิบ", "เก้าสิบ") Nums3 = Array("", "หนึ่งร้อย", "สองร้อย", "สามร้อย", "สี่ร้อย", " ห้าร้อย", " หกร้อย ", "เจ็ดร้อย", "แปดร้อย", "เก้าร้อย") Nums4 = อาร์เรย์("", "หนึ่ง", "สอง", "สาม", "สี่", "ห้า" , "หก", "เจ็ด", "แปด", "เก้า") Nums5 = Array("สิบ", "สิบเอ็ด", "สิบสอง", "สิบสาม", "สิบสี่", "สิบห้า", "สิบหก", " สิบเจ็ด", "สิบแปด", "สิบเก้า" ") ถ้า n = 0 ดังนั้น ScriptRus = "ศูนย์" ออกจากฟังก์ชันสิ้นสุด ถ้า ed = Class(n, 1) dec = Class(n, 2) sot = Class(n, 3) tys = Class(n, 4) dectys = Class(n, 5) sottys = Class(n, 6) mil = Class(n, 7) decmil = Class(n, 8) sotmil = Class(n, 9) mlrd = Class(n, 10) ถ้า mlrd > 0 จากนั้นเลือกกรณี mlrd กรณีที่ 1 mlrd_txt = Nums1(mlrd) & "billion" กรณีที่ 2, 3, 4 mlrd_txt = Nums1(mlrd) & "billion" กรณีที่ 5 ถึง 20 mlrd_txt = Nums1( mlrd) & "พันล้าน" สิ้นสุด เลือกสิ้นสุด ถ้า (sotmil + decmil + mil) > 0 ดังนั้น sotmil_txt = Nums3(sotmil) เลือกกรณี decmil กรณีที่ 1 mil_txt = Nums5(mil) & "ล้าน" ไปที่ www กรณีที่ 2 ถึง 9 decmil_txt = Nums2(decmil) สิ้นสุดการเลือกกรณี mil กรณี 1 mil_txt = Nums1(mil) & "ล้าน" กรณีที่ 2, 3, 4 mil_txt = Nums1(mil) & "ล้าน" กรณีที่ 0, 5 ถึง 20 mil_txt = Nums1(mil) & "ล้าน" สิ้นสุด เลือกสิ้นสุด หาก www: sottys_txt = Nums3(sotys) เลือกกรณี dectys กรณีที่ 1 tys_txt = Nums5(tys) & "พัน" GoTo eee กรณีที่ 2 ถึง 9 dectys_txt = Nums2(dectys) สิ้นสุด เลือกเลือกกรณี tys กรณีที่ 0 ถ้า dectys > 0 จากนั้น tys_txt = Nums4(tys) & "พัน" กรณีที่ 1 tys_txt = Nums4(tys) & "พัน" กรณีที่ 2, 3, 4 tys_txt = Nums4(tys) & "พัน" กรณีที่ 5 ถึง 9 tys_txt = Nums4( tys) & "พัน" สิ้นสุดเลือก ถ้า dectys = 0 และ tys = 0 และ sottys<>0 จากนั้น sottys_txt = sottys_txt & "พัน" eee: sot_txt = Nums3(sot) เลือก Case dec กรณีที่ 1 ed_txt = Nums5(ed) GoTo rrr กรณีที่ 2 ถึง 9 dec_txt = Nums2(dec) สิ้นสุด เลือก ed_txt = Nums1(ed) rrr: ScriptRus = mlrd_txt & sotmil_txt & decmil_txt & mil_txt & sottys_txt & dectys_txt & tys_txt & sot_txt & dec_txt & ed_txt ScriptRus = UCase (ซ้าย (ScriptRus, 1)) & LCase (กลาง (ScriptRus, 2, - 1)) สิ้นสุดฟังก์ชันส่วนตัว ฟังก์ชั่น ScriptEng (ByVal Number As Double) Dim BigDenom As String, Temp As String Dim นับเป็นจำนวนเต็ม ReDim Place(9) As String Place(2) = " Thousand " Place(3) = " Million " Place(4) = " Billion " Place (5) = " ล้านล้าน " strAmount = Trim(Str(Int(Number))) Count = 1 Do ในขณะที่ strAmount<>"" Temp = GetHundreds(Right(strAmount, 3)) ถ้า Temp<>"" จากนั้น BigDenom = Temp & Place(Count) & BigDenom ถ้า Len(strAmount) > 3 จากนั้น strAmount = Left(strAmount, Len(strAmount) - 3) Else strAmount = "" End If Count = Count + 1 Loop เลือกกรณี BigDenom Case "" BigDenom = "Zero " Case "One" BigDenom = "One" Case Else BigDenom = BigDenom & " " End Select ScriptEng = BigDenom End Function ฟังก์ชั่นส่วนตัว GetHundreds(ByVal MyNumber) Dim result As String If Val(MyNumber) = 0 จากนั้นออกจากฟังก์ชัน MyNumber = Right("000" & MyNumber, 3) ถ้า Mid(MyNumber, 1, 1)<>"0" จากนั้นผลลัพธ์ = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred " End If If Mid(MyNumber, 1, 1)<>"0" และ (กลาง (MyNumber, 2, 1)<>"0" หรือกลาง (MyNumber, 3, 1)<>"0") จากนั้น result = result & "And " End If Mid(MyNumber, 2, 1)<>"0" จากนั้น result = result & GetTens(Mid(MyNumber, 2)) Else result = result & GetDigit(Mid(MyNumber, 3)) End If GetHundreds = result End Function Private Function GetTens(TensText) Dim result As String result = "" ถ้า Val(Left(TensText, 1)) = 1 จากนั้นเลือก Case Val(TensText) กรณีที่ 10: result = "Ten" กรณีที่ 11: result = "Eleven" กรณีที่ 12: result = "Twelve" กรณีที่ 13: result = "สิบสาม" กรณีที่ 14: result = "สิบสี่" กรณีที่ 15: result = "สิบห้า" กรณีที่ 16: result = "สิบหก" กรณีที่ 17: result = "สิบเจ็ด" กรณีที่ 18: result = "สิบแปด" กรณีที่ 19: result = "สิบเก้า " " Case Else End Select Else Select Case Val(Left(TensText, 1)) กรณีที่ 2: result = "Twenty" กรณีที่ 3: result = "Thirty" กรณีที่ 4: result = "Forty" กรณีที่ 5: result = "Fifty" กรณีที่ 6: result = "หกสิบ" กรณีที่ 7: result = "เจ็ดสิบ" กรณีที่ 8: result = "แปดสิบ" กรณีที่ 9: result = "เก้าสิบ" Case Else End เลือก result = result & GetDigit _ (ขวา (TensText, 1)) สิ้นสุด ถ้า GetTens = ผลลัพธ์ ฟังก์ชันสิ้นสุด ฟังก์ชันส่วนตัว GetDigit(Digit) เลือก Case Val(Digit) กรณีที่ 1: GetDigit = "หนึ่ง" กรณีที่ 2: GetDigit = "สอง" กรณีที่ 3: GetDigit = "สาม" กรณีที่ 4: GetDigit = "สี่ " กรณีที่ 5: GetDigit = "ห้า" กรณีที่ 6: GetDigit = "หก" กรณีที่ 7: GetDigit = "เจ็ด" กรณีที่ 8: GetDigit = "แปด" กรณีที่ 9: GetDigit = "เก้า" Case Else: GetDigit = "" สิ้นสุดการเลือก ฟังก์ชันสิ้นสุด

ดังนั้นฟังก์ชันจึงถูกสร้างขึ้นเพื่อใช้งานเพียงป้อนเซลล์ Propis พร้อมอาร์กิวเมนต์ที่จำเป็นเช่นหากเราต้องการเขียนจำนวนเป็นคำในรูเบิลและโกเปคและในภาษารัสเซียสูตรจะมีลักษณะเช่นนี้

โพรพิส(B2;"RUB";"RU";1)

ตัวเลขในคำที่มี kopeck เป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กใน Excel

นี่คือโค้ด VBA สำหรับฟังก์ชันแบบกำหนดเอง แสดงจำนวนเงินเป็นคำด้วย kopecks และเลือกอักษรตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กตัวแรก

ฟังก์ชั่นการเขียน RubIn (จำนวนเป็นสองเท่า, ตัวเลือกไม่มี_kopecks As Boolean = False, _ ตัวเลือก CopIn Words As Boolean = False, ตัวเลือก fillinCapital As Boolean = True) As String "ฟังก์ชันสำหรับการเขียนจำนวนในคำ Dim ed, des, sot, ten, razr, dec Dim i As Integer, str As String, s As String Dim intPart As String, frPart As String Dim mlnEnd, tscEnd, razrEnd, rub, cop dec = Array("", "one", "two", "three) ", "สี่", "ห้า", "หก", "เจ็ด", "แปด", "เก้า") ed = Array("", "หนึ่ง", "สอง", "สาม", "สี่", " ห้า", " หก", "เจ็ด", "แปด", "เก้า") สิบ = อาร์เรย์("สิบ", "สิบเอ็ด", "สิบสอง", "สิบสาม", "สิบสี่", "สิบห้า", "สิบหก" , "สิบเจ็ด" , "สิบแปด", "สิบเก้า") des = Array("", "", "ยี่สิบ", "สามสิบ", "สี่สิบ", "ห้าสิบ", "หกสิบ", "เจ็ดสิบ", "แปดสิบ" , "เก้าสิบ" ) sot = Array("", "หนึ่งร้อย", "สองร้อย", "สามร้อย", "สี่ร้อย", "ห้าร้อย", "หกร้อย", "เจ็ดร้อย", "แปดร้อย ", "เก้าร้อย") razr = Array("" , "พัน", "ล้าน", "พันล้าน") mlnEnd = Array("ov", "", "a", "a", "a", " ov", "ov", "ov", "ov ", "ov ") tscEnd = Array(" ", "a", "และ", "และ", "และ", " ", " ", " " , " ", " ") razrEnd = Array(mlnEnd, mlnEnd, tscEnd, "") rub = Array("รูเบิล", "รูเบิล", "รูเบิล", "รูเบิล", "รูเบิล", "รูเบิล", "รูเบิล ", "รูเบิล", "รูเบิล", "รูเบิล" ) cop = Array("kopecks", "kopecks", "kopecks", "kopecks", "kopecks", "kopecks", "kopecks", "kopecks", "kopecks", "kopecks") ถ้าจำนวน >= 1000000000000 # หรือจำนวน< 0 Then РубПропись = CVErr(xlErrValue): Exit Function "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& If Round(Сумма, 2) >= 1 จากนั้น intPart = Left$(รูปแบบ(ผลรวม, "000000000000.00.00"), 12) สำหรับ i = 0 ถึง 3 s = Mid$(intPart, i * 3 + 1, 3) ถ้า s<>"000" จากนั้น str = str & sot(CInt(Left$(s, 1))) ถ้า Mid$(s, 2, 1) = "1" ดังนั้น str = str & ten(CInt(Right$(s, 1) ) ))) อื่น str = str & des(CInt(Mid$(s, 2, 1))) & IIf(i = 2, dec(CInt(Right$(s, 1))), ed(CInt(ขวา $ (s, 1)))) สิ้นสุดหากเกิดข้อผิดพลาด ดำเนินการต่อถัดไป str = str & IIf(Mid$(s, 2, 1) = "1", razr(3 - i) & razrEnd(i)(0), _ razr(3 - i) & razrEnd(i)(CInt(Right$(s, 1)))) ในข้อผิดพลาด GoTo 0 End If Next i str = str & IIf(Mid$(s, 2, 1) = " 1 ", rub(0), rub(CInt(Right$(s, 1)))) สิ้นสุด ถ้า RubCapital = str """""""""""""""" ถ้า Without_kopecks = False แล้ว frPart = Right$(รูปแบบ(จำนวน, "0.00"), 2) ถ้า frPart = "00" ดังนั้น frPart = "" Else ถ้า CopIn Words ดังนั้น frPart = IIf(Left$(frPart, 1) = "1", ten(CInt ( Right$(frPart, 1))) & cop(0), _ des(CInt(Left$(frPart, 1))) & dec(CInt(Right$(frPart, 1))) & cop(CInt(ขวา $ (frPart, 1)))) อื่น frPart = IIf(Left$(frPart, 1) = "1", frPart & " " & cop(0), frPart & " " & cop(CInt(Right$(frPart, 1 )))) สิ้นสุด ถ้าสิ้นสุด ถ้า RubProps = str & " " & frPart สิ้นสุด ถ้า """""""""""""""" " RubProps = str & frPart ถ้า fillCapital แล้ว Mid$(RubProps, 1, 1) = UCase(Mid$(RubCapital, 1, 1)) " ถ้า fillCapital แล้ว RubCapital = UCase(Left(RubCapital, 1)) & Mid(RubCapital, 2) สิ้นสุดฟังก์ชัน

  • ไม่มี kopecks (1) โดยมี kopecks (0)
  • Kopecks เป็นคำ (1) เป็นตัวเลข (0)
  • ขึ้นต้นด้วยคำ (0) ตัวพิมพ์ใหญ่ (1)

นี่คือวิธีการใช้ฟังก์ชัน


บันทึก

  • ฟังก์ชั่นนี้จะทำงานกับตัวเลขตั้งแต่ 0 ถึง 99,999,999
  • ก่อนที่จะคัดลอกโค้ด ให้เปลี่ยนรูปแบบแป้นพิมพ์เป็นภาษารัสเซีย (เพื่อการคัดลอกข้อความภาษารัสเซียที่ถูกต้อง)
  • ต้องวางโค้ด VBA ลงในไฟล์ทั้งหมด ( สมุดงาน Excel) ที่คุณต้องการให้ทำงาน
  • หลังจากใส่โค้ดแล้ว คุณจะต้องบันทึกไฟล์ด้วยการรองรับแมโคร xlsm (ใน Excel เริ่มตั้งแต่เวอร์ชัน 2007)
  • สามารถป้อนฟังก์ชันด้วยตนเอง หรือหากคุณลืมวิธีการเขียน ก็สามารถป้อนผ่านตัวช่วยสร้างฟังก์ชันได้ (ปุ่ม เอฟเอ็กซ์ ในแถบสูตร หมวดหมู่ User Defined)