Excel אינו כולל פונקציית ברירת מחדל המציגה מספרים כמילים באנגלית בגליון עבודה, אך באפשרותך להוסיף יכולת זו על-ידי הדבקת קוד הפונקציה של SpellNumber הבא במודול VBA (Visual Basic for Applications). פונקציה זו מאפשרת לך להמיר סכומי דולרים וסנטים למילים באמצעות נוסחה, כך ש- 22.50 יוקראו כTwenty-Two דולרים ו-50 סנט. פעולה זו עשויה להיות שימושית מאוד אם אתה משתמש ב- Excel כתבנית כדי להדפיס את ההבדקות.
אם ברצונך להמיר ערכים מספריים לתבנית טקסט מבלי להציג אותם כמילים, השתמש בפונקציה TEXT במקום זאת.
הערה: Microsoft מספקת דוגמאות תיכנות לאיור בלבד, ללא אחריות, מפורשת או משתמעת. הדבר כולל, אך אינו מוגבל לאחריות המשתמעת של סוחר או התאמה למטרה מסוימת. מאמר זה מבוסס על ההנחה שאתה מכיר את שפת התיכנות של VBA, עם הכלים המשמשים ליצירה ול איתור באגים בהליכים. מהנדסי התמיכה של Microsoft יכולים לעזור להסביר את הפונקציונליות של הליך מסוים. עם זאת, הם לא שינוי דוגמאות אלה כדי לספק פונקציונליות נוספת, או לבנות הליכים כדי לעמוד בדרישות הספציפיות שלך.
יצירת הפונקציה SpellNumber להמרת מספרים למילים
-
השתמש בקיצור המקשים Alt + F11 כדי לפתוח את עורך Visual Basic (VBE).
הערה: באפשרותך גם לגשת לעורך Visual Basic על-ידי הצגת הכרטיסיה 'מפתחים ' ברצועת הכלים.
-
לחץ על הכרטיסיה הוספה ולאחר מכן לחץ על מודול.
-
העתק את שורות הקוד הבאות.
הערה: קוד זה, שנקרא פונקציה המוגדרת על-ידי המשתמש (UDF), הופך את המשימה של המרת מספרים לטקסט ברחבי גליון העבודה לאוטומטית.
Option Explicit 'Main Function Function SpellNumber(ByVal MyNumber) Dim Dollars, Cents, Temp Dim DecimalPlace, Count ReDim Place(9) As String Place(2) = " Thousand " Place(3) = " Million " Place(4) = " Billion " Place(5) = " Trillion " ' String representation of amount. MyNumber = Trim(Str(MyNumber)) ' Position of decimal place 0 if none. DecimalPlace = InStr(MyNumber, ".") ' Convert cents and set MyNumber to dollar amount. If DecimalPlace > 0 Then Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & _ "00", 2)) MyNumber = Trim(Left(MyNumber, DecimalPlace - 1)) End If Count = 1 Do While MyNumber <> "" Temp = GetHundreds(Right(MyNumber, 3)) If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars If Len(MyNumber) > 3 Then MyNumber = Left(MyNumber, Len(MyNumber) - 3) Else MyNumber = "" End If Count = Count + 1 Loop Select Case Dollars Case "" Dollars = "No Dollars" Case "One" Dollars = "One Dollar" Case Else Dollars = Dollars & " Dollars" End Select Select Case Cents Case "" Cents = " and No Cents" Case "One" Cents = " and One Cent" Case Else Cents = " and " & Cents & " Cents" End Select SpellNumber = Dollars & Cents End Function ' Converts a number from 100-999 into text Function GetHundreds(ByVal MyNumber) Dim Result As String If Val(MyNumber) = 0 Then Exit Function MyNumber = Right("000" & MyNumber, 3) ' Convert the hundreds place. If Mid(MyNumber, 1, 1) <> "0" Then Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred " End If ' Convert the tens and ones place. If Mid(MyNumber, 2, 1) <> "0" Then Result = Result & GetTens(Mid(MyNumber, 2)) Else Result = Result & GetDigit(Mid(MyNumber, 3)) End If GetHundreds = Result End Function ' Converts a number from 10 to 99 into text. Function GetTens(TensText) Dim Result As String Result = "" ' Null out the temporary function value. If Val(Left(TensText, 1)) = 1 Then ' If value between 10-19... Select Case Val(TensText) Case 10: Result = "Ten" Case 11: Result = "Eleven" Case 12: Result = "Twelve" Case 13: Result = "Thirteen" Case 14: Result = "Fourteen" Case 15: Result = "Fifteen" Case 16: Result = "Sixteen" Case 17: Result = "Seventeen" Case 18: Result = "Eighteen" Case 19: Result = "Nineteen" Case Else End Select Else ' If value between 20-99... Select Case Val(Left(TensText, 1)) Case 2: Result = "Twenty " Case 3: Result = "Thirty " Case 4: Result = "Forty " Case 5: Result = "Fifty " Case 6: Result = "Sixty " Case 7: Result = "Seventy " Case 8: Result = "Eighty " Case 9: Result = "Ninety " Case Else End Select Result = Result & GetDigit _ (Right(TensText, 1)) ' Retrieve ones place. End If GetTens = Result End Function ' Converts a number from 1 to 9 into text. Function GetDigit(Digit) Select Case Val(Digit) Case 1: GetDigit = "One" Case 2: GetDigit = "Two" Case 3: GetDigit = "Three" Case 4: GetDigit = "Four" Case 5: GetDigit = "Five" Case 6: GetDigit = "Six" Case 7: GetDigit = "Seven" Case 8: GetDigit = "Eight" Case 9: GetDigit = "Nine" Case Else: GetDigit = "" End Select End Function
-
הדבק את שורות הקוד בתיבה Module1 (קוד ).
-
הקש Alt + Q כדי לחזור ל- Excel. הפונקציה SpellNumber מוכנה כעת לשימוש.
הערה: פונקציה זו פועלת רק עבור חוברת העבודה הנוכחית. כדי להשתמש בפונקציה זו בחוברת עבודה אחרת, עליך לחזור על השלבים להעתקה והדבקה של הקוד בחוברת עבודה זו.
שימוש בפונקציה SpellNumber בתאים בודדים
-
הקלד את הנוסחה =SpellNumber(A1) בתא שבו ברצונך להציג מספר כתוב, כאשר A1 הוא התא המכיל את המספר שברצונך להמיר. באפשרותך גם להקליד באופן ידני את הערך, כגון =SpellNumber(22.50).
-
הקש Enter כדי לאשר את הנוסחה.
שמירת חוברת העבודה של פונקציית SpellNumber
ל- Excel אין אפשרות לשמור חוברת עבודה עם פונקציות מאקרו בתבנית הרגילה של חוברת עבודה ללא פקודות מאקרו (.xlsx). אם תלחץ על קובץ >שמור. נפתחת תיבת דו-שיח של פרוייקט VB . לחץ על לא.
באפשרותך לשמור את הקובץ כקובץ Excel Macro-Enabled Workbook (.xlsm) כדי להשאיר את הקובץ בתבנית הנוכחית שלו.
-
לחץ על קובץ > שמירה בשם.
-
לחץ על התפריט הנפתח שמור כסוג ובחר Excel Macro-Enabled חוברת עבודה.
-
לחץ על שמור.