تبدیل عدد به حروف در اکسل — آموزش تصویری و گام به گام

۹۸۰۱ بازدید
آخرین به‌روزرسانی: ۳۱ اردیبهشت ۱۴۰۲
زمان مطالعه: ۱۲ دقیقه
تبدیل عدد به حروف در اکسل — آموزش تصویری و گام به گام

هنگام صادر کردن یک چک، یا ارائه یک گزارش متنی، شاید بهتر باشد که ارقام را علاوه بر نمایش عددی، به صورت حرفی نیز نمایش دهیم. از طرفی چون از اکسل برای امور مالی شرکت‌ها و سازمان‌ها استفاده می‌شود، انجام این کار درون این نرم‌افزار از اهمیت بیشتری برخوردار است. به این جهت در این متن روش تبدیل عدد به حروف در اکسل را شرح می‌دهیم. البته از آنجایی که فرمول نویسی و اجرای محاسبات برای این کار، مشکل و پیچیده است، ابزاری نیز معرفی خواهیم کرد که به کمک توابع آن، قادر باشید به راحتی، تبدیل عدد به حروف در اکسل را انجام دهید.

فرض بر این است که با اکسل تا حدودی آشنایی دارید. ولی برای کسب اطلاعات بیشتر پیشنهاد می‌شود،‌ مطالب مرتبط با این متن مانند تابع VLOOKUP در اکسل و کاربردهای آن — راهنمای جامع و توابع INDEX و MATCH در اکسل برای جست‌وجوی سریعتر را مطالعه کنید. همچنین خواندن فارسی کردن اعداد در اکسل — به زبان ساده و آموزش اکسل — به زبان ساده نیز خالی از لطف نیست.

تبدیل عدد به حروف در اکسل

می‌دانید که هر عدد از یک یا چند رقم تشکیل شده که هر کدام از آن ارقام، مکان یا جایگاه مشخصی برای تعیین عدد دارند. در آموزش دبستان با جایگاه‌های «یکان»، «دهگان»، «صدگان» و احتمالا «هزارگان» آشنا شده‌اید. در اینجا هم می‌خواهیم پس از تشخیص مکان یا جایگاه هر رقم برای اعداد در اکسل، نحوه تبدیل آن را به حروف مشخص کنیم. در این بین از دو راهکار استفاده خواهیم کرد.

در روش اول، به کمک فرمول نویسی و به شکل ابتدایی، روال کار را مشخص کرده و به کمک مثالی، مسئله را حل می‌کنیم. ولی به دلیل پیچیدگی موضوع، ممکن است فرمول ارائه شده، برای هر گونه تبدیلی موثر نباشد. به یاد داشته باشید که این تکنیک را فقط برای مشخص کردن سطح مسئله و روش حل آن مطرح کرده‌ایم.

در روش دوم، از یک ابزار آماده یا تابع بیرونی استفاده می‌کنیم که توسط یک افزونه به اکسل اضافه می‌شود. به منظور راحتی کار برای خوانندگان، لینک دسترسی به کاربرگ مربوط به روش اول و دوم نیز در انتهای متن قرار گرفته است تا به کمک آن فایل مورد نظر را دریافت و به کار گیرند.

تبدیل عدد به حروف در اکسل با فرمول نویسی

یک عدد (مثلا چهار رقمی) را در نظر بگیرید که می‌خواهیم یکان، دهگان، صدگان و هزارگان آن را مشخص کنیم. اگر از سمت راست، یک رقم یک رقم از عدد مورد نظر را جدا کنیم، این کار به درستی انجام گرفته است. کافی است که این ارقام را به حروف در کنار هم گذشته و پیشوند مربوط به دهگان و صدگان و هزارگان را هم به آن اضافه کنیم.

به این منظور در اکسل بهتر است از تابع mid استفاده کنیم که از هر قسمت یک عبارت، به تعداد دلخواه، جدا کرده و نمایش می‌دهد.

کاربرگ زیر را در نظر بگیرید، عدد 7421 در سلول A1 نوشته شده است. می‌خواهیم آن را به صورت حرفی در سلول دیگر به کمک فرمول نویسی در اکسل، نمایش دهیم.

فرمول نویسی برای نمایش عدد به حروف گام اول
تفکیک ارقام و تعیین جایگاه آن‌ها در عدد

سطری که به رنگ خاکستری مشخص شده، مکان هر یک از ارقام را تعیین کرده است. همچنین در سطر آبی رنگ، این مکان براساس چپ به راست شماره‌گذاری شده است. به این معنی که برای یک عدد چهار رقمی، هزارگان در اولین رقم از سمت چپ قرار دارد، صدگان در رقم دوم، دهگان در رقم سوم و یکان در رقم چهارم از سمت چپ دیده می‌شود.

نکته: تابع MID از سمت چپ، عمل جداسازی را انجام می‌دهد، هر چند که با شمارش ارقام از سمت راست، باید هزارگان در رقم چهارم باشد.

فرمول و تابع MID در سطر سبز رنگ مشخص است. قالب پارامتری تابع MID به صورت زیر است. این تابع براساس سه پارامتر دارد.

MID(text, start_num, num_chars)

  • پارامتر اول (text): این پارامتر، یک زیر رشته را مشخص می‌کند.
  • پارامتر دوم (start_num): نقطه شروع استخراج حروف، توسط این پارامتر تعیین می‌شود.
  • پارامتر سوم (num_chars): تعداد ارقام قابل استخراج از پارامتر اول در محل تعیین شده در پارامتر دوم، را مشخص می‌کند.

بنابراین اگر به سلول A4 دقت کنید، تابع به کار رفته، سلول A1 را هدف قرار داده از مکانی که در موقعیت A3 تعیین شده (یعنی حرف اول) به اندازه یک حرف استخراج می‌کند.

=MID($A$1,A3,1)*1000

نکته: آدرس A1 را به آن جهت به صورت مطلق ($$\text{\$A\$1}$$) درآورده‌ایم، که با کپی کردن فرمول، آدرس A1 ثابت باقی بماند. ولی از جهتی، آدرس سلول A3 را به صورت نسبی حفظ کرده‌ایم، تا با کپی کردن سلول وابسته، آدرس آن به همان نسبت تغییر کند و تابع MID، ارقام بعدی عدد را استخراج کند.

رقم بدست آمده توسط تابع MID‌ در همان مکان، ضرب می‌کنیم تا برای مثال رقم ۷ به صورت ۷۰۰۰ درآید. البته این کار، این امکان را هم می‌دهد که خروجی تابع MID، به جای عبارت متنی، به صورت عددی درآید.

تشخیص هزارگان
استفاده از تابع VLOOKUP و IFERROR برای تشخیص عبارت متنی به جای ارقام

در سطر سبز کم‌رنگ (سطر پنجم) عبارت متنی را برای رقم مورد نظر طبق یک جدول مبنا و به کمک توابع VLOOKUP و IFERROR نوشته‌ایم. در پایین کاربرگ، یک جدول برای مشخص کردن اسامی ارقام قرار گرفته است که تابع VLOOKUP براساس رقمی که در سطر بالا ساخته شده، به دنبال بهترین گزینه گشته و عبارت متنی را برای آن در نظر می‌گیرد.

البته اگر صفر در این جستجو قرار گرفته باشد، تابع VLOOKUP، پیغام خطا داده که توسط تابع IFERROR این خطا با فضای خالی (NULL) که به صورت ""‌ تعیین شده، جایگزین می‌شود. تنها بخشی که مانده، قرار دادن یک عبارت «و» در بین هر یک از اسامی ارقام است. در سلول D1 یک «و» نوشته‌ایم که در مرحله بعد، به هر قسمت از بخش‌های ترکیب شده اضافه می‌کنیم.

اضافه کردن حرف ربط به عبارت ها
اضافه کردن حرف ربط به عبارت‌ها

اضافه کردن حرف ربط «و» باید با توجه به اینکه آیا لازم است آن را اضافه کنیم یا نه، انجام شود. واضح است که در ابتدا و انتهای عبارت، به حرف ربط احتیاجی نیست. پس  اگر سمت راست سلول مجاور هر عبارت متنی ساخته شده، خالی باشد، احتیاجی به اضافه کردن «و» به آن عبارت وجود ندارد. به همین جهت از یک IF کمک گرفته‌ایم که این وضعیت را بررسی می‌کند.

در انتها نیز کافی است به کمک تابع CONCATENATE یا عملگر &، عبارت‌های تولید شده را در کنار یکدیگر از چپ به راست بچینیم تا تبدیل عدد به حروف در اکسل کامل شود.

تبدیل عدد به حروف در اکسل
تبدیل عدد به حروف در اکسل به کمک فرمول و توابع

این بار فرمول نوشته شده را امتحان می‌کنیم. فرض کنید، به جای ۷۴۲۱، مقدار ۷۰۲۱ درون سلول قرار گرفته بود. باید در سلول مقصد، هفت هزار و بیست و یک نوشته شود. در تصویر زیر نتیجه به همراه ناحیه‌ای که برای تابع VLOOKUP به عنوان جدول جستجو مشخص کردیم، دیده می‌شود. خوشبختانه، روشی که به کار بردیم به درستی عمل می‌کند.

جدول راهنما برای تبدیل عدد به حروف در اکسل
جدول راهنما برای تبدیل عدد به حروف در اکسل

البته همه چیز به همین سادگی نیز نیست. برای مثال در نظر بگیرید که به جای 7421 از 7419 استفاده کنیم. این بار فرمول و محاسبات ما به صورت «هفت هزار و چهارصد و ده و نه» نتیجه را نمایش می‌دهد. زیرا اعداد ۱۱ تا ۱۹ به شکل استاندارد دهگان به همراه یکان خوانده نمی‌شوند. پس باید به کمک یک شرط، زمانی که دهگان ۱ است، قضیه را مورد بررسی قرار دهیم.

از طرفی اگر طول ارقام عدد از ۴ رقم کمتر یا بیشتر باشد، باید مکان‌های بیشتری برای ارقام هم در نظر بگیریم، مانند ده هزار، صد هزار و غیره که این کار احتیاج به فرمول‌نویسی و کنترل‌های بیشتر هم دارد. بنابراین بهتر است که برای انجام این کار از کدنویسی با VBA در اکسل کمک بگیریم و به کمک تعریف تابع مورد نیاز و شخصی‌سازی شده، این کار را انجام دهیم. بخش بعدی چنین حالتی را در نظر گرفته است.

تبدیل عدد به حروف در اکسل بوسیله افزونه

اگر افزونه Farsitools را دریافت و نصب کنید، تابع horofi در اختیارتان قرار می‌گیرد. به کمک این تابع می‌توانید هر عدد صحیحی که کمتر از ۱۵ رقم داشته باشد را به حروف تبدیل کرده و نمایش دهید.

برای دریافت این افزونه اینجا کلیک کنید. البته این پرونده به صورت فشرده است. پس از خارج کردن آن از حالت فشرده، از مسیری که در زیر دیده می‌شود، آن را نصب و راه‌ اندازی کنید.

از فهرست File گزینه Options را انتخاب کرده و از پنجره Excel Options در کادر سمت چپ، گزینه Add-ins را انتخاب کنید. در پایین صفحه با کلیک روی دکمه Go به بخش مدیریت Excel Add-ins بروید.

Excel add ins
پنجره تنظیمات اکسل و درج افزونه جدید

در پنجره محاوره‌ای Add-ins دکمه Browse را کلیک کرده و آدرس فایل دریافتی را مشخص کنید. توجه داشته باشید که این فایل باید FarsiTools.xla و با پسوند xla. باشد که بتوان از ماکرو و برنامه‌های VBA آن استفاده کرد.

excel solver add-ins
پنجره تنظیمات افزونه‌ها

در نهایت، با فعال سازی این افزونه (مطابق با تصویر زیر)، تابع horofi قابل دسترس خواهد بود.

ابزار فارسی اکسل
وجود افزونه Farsitools به همراه توابع آن

در ادامه قطعه کدی را مشاهده می‌کنید که برای تعیین تابع horofi در این افزونه مورد استفاده قرار گرفته است. روالی که صورت گرفته تقریبا با عملیاتی که در قسمت قبل انجام دادیم، مطابقت دارد. البته طول رشته عددی نیز در این بین براساس متغیر S محاسبه شده و در L ذخیره شده است. مقدار L‌ نباید از ۱۵ بیشتر باشد در غیر اینصورت عدد قابل نمایش نیست و با مقدار «بسیار بزرگ» در سلول مربوط به فرمول، مواجه خواهید شد.

کاربرگی که در تصویر زیر می‌بینید، نحوه استفاده از این تابع را مشخص کرده است. کافی است برای نمایش حرفی عددی که در سلول A1 نوشته شده، در سلول B1‌ به صورت زیر از این تابع استفاده کنید.

B1 := horofi(A1)

بنابراین اگر عدد ۷۴۲۱ را در سلول A1 نوشته باشید، عبارت «هفت هزار و چهارصد و بيست و يك» را در سلول B1 مشاهده خواهید کرد.

horofi function
تبدیل عدد به حروف در اکسل به کمک تابع horofi

کدی که در ادامه متن مشاهده می‌کنید، مربوط به تابع horofi است که به زبان VBA نوشته شده است.

1Dim K(1 To 5) As Double
2
3S = Trim(Str(Number))
4L = Len(S)
5If L > 15 Then
6Adad = ChrW(1576) & ChrW(1587) & ChrW(1610) & ChrW(1575) & ChrW(1585) & ChrW(1576) & ChrW(1586) & ChrW(1585) & ChrW(1711) & " "
7Exit Function
8End If
9For I = 1 To 15 - L
10S = "0" & S
11Next I
12For I = 1 To Int((L / 3) + 0.99)
13K(5 - I + 1) = Val(Mid(S, 3 * (5 - I) + 1, 3))
14Next I
15Flag = False
16S = " "
17For I = 1 To 5
18If K(I) <> 0 Then
19Select Case I
20Case 1
21S = S & Three(K(I)) & " " & ChrW(1578) & ChrW(1585) & ChrW(1610) & ChrW(1604) & ChrW(1610) & ChrW(1608) & ChrW(1606) & " "
22Flag = True
23Case 2
24S = S & IIf(Flag = True, ChrW(1608), " ") & Three(K(I)) & " " & ChrW(1605) & ChrW(1610) & ChrW(1604) & ChrW(1610) & ChrW(1575) & ChrW(1585) & ChrW(1583) & " "
25Flag = True
26Case 3
27S = S & IIf(Flag = True, ChrW(1608), " ") & Three(K(I)) & " " & ChrW(1605) & ChrW(1610) & ChrW(1604) & ChrW(1610) & ChrW(1608) & ChrW(1606) & " "
28Flag = True
29Case 4
30S = S & IIf(Flag = True, ChrW(1608), " ") & Three(K(I)) & " " & ChrW(1607) & ChrW(1586) & ChrW(1575) & ChrW(1585) & " "
31Flag = True
32Case 5
33S = S & IIf(Flag = True, ChrW(1608), " ") & Three(K(I)) & " "
34End Select
35End If
36Next I
37horofi = Trim(S)
38End Function

نکته: توجه داشته باشید تابع ChrW برای به کارگیری حروف فارسی و نمایش به صورت یونی‌کد است. این تابع در محیط Visual Basic اکسل قابل استفاده است.

در این بین از یک تابع دیگر نیز با نام Three بهره گرفته‌ایم که به صورت دست‌سازی در اکسل گنجانده شده و در کد این افزونه قرار دارد. این تابع، عبارت‌ها را برحسب یکان، دهگان و صدگان مشخص و به تابع horofi ارسال می‌کند. کد این تابع در زیر قابل مشاهده است.

1Function Three(ByVal Number As Integer) As String
2Dim S As String
3Dim I, L As Long
4Dim h(1 To 3) As Byte
5Dim Flag As Boolean
6L = Len(Trim(Str(Number)))
7If Number = 0 Then
8Three = " "
9Exit Function
10End If
11If Number = 100 Then
12Three = ChrW(1610) & ChrW(1603) & ChrW(1589) & ChrW(1583) & " "
13Exit Function
14End If
15
16If L = 2 Then h(1) = 0
17If L = 1 Then
18h(1) = 0
19h(2) = 0
20End If
21
22For I = 1 To L
23h(3 - I + 1) = Mid(Trim(Str(Number)), L - I + 1, 1)
24Next I
25
26Select Case h(1)
27Case 1
28S = " " & ChrW(1610) & ChrW(1603) & ChrW(1589) & ChrW(1583) & " "
29Case 2
30S = " " & ChrW(1583) & ChrW(1608) & ChrW(1610) & ChrW(1587) & ChrW(1578) & " "
31Case 3
32S = " " & ChrW(1587) & ChrW(1610) & ChrW(1589) & ChrW(1583) & " "
33Case 4
34S = " " & ChrW(1670) & ChrW(1607) & ChrW(1575) & ChrW(1585) & ChrW(1589) & ChrW(1583) & " "
35Case 5
36S = " " & ChrW(1662) & ChrW(1575) & ChrW(1606) & ChrW(1589) & ChrW(1583) & " "
37Case 6
38S = " " & ChrW(1588) & ChrW(1588) & ChrW(1589) & ChrW(1583) & " "
39Case 7
40S = " " & ChrW(1607) & ChrW(1601) & ChrW(1578) & ChrW(1589) & ChrW(1583) & " "
41Case 8
42S = " " & ChrW(1607) & ChrW(1588) & ChrW(1578) & ChrW(1589) & ChrW(1583) & " "
43Case 9
44S = " " & ChrW(1606) & ChrW(1607) & ChrW(1589) & ChrW(1583) & " "
45End Select
46
47Select Case h(2)
48Case 1
49Select Case h(3)
50Case 0
51S = S & ChrW(1608) & " " & ChrW(1583) & ChrW(1607) & "  "
52Case 1
53S = S & ChrW(1608) & " " & ChrW(1610) & ChrW(1575) & ChrW(1586) & ChrW(1583) & ChrW(1607) & " "
54Case 2
55S = S & ChrW(1608) & " " & ChrW(1583) & ChrW(1608) & ChrW(1575) & ChrW(1586) & ChrW(1583) & ChrW(1607) & " "
56Case 3
57S = S & ChrW(1608) & " " & ChrW(1587) & ChrW(1610) & ChrW(1586) & ChrW(1583) & ChrW(1607) & " "
58Case 4
59S = S & ChrW(1608) & " " & ChrW(1670) & ChrW(1607) & ChrW(1575) & ChrW(1585) & ChrW(1583) & ChrW(1607) & " "
60Case 5
61S = S & ChrW(1608) & " " & ChrW(1662) & ChrW(1575) & ChrW(1606) & ChrW(1586) & ChrW(1583) & ChrW(1607) & " "
62Case 6
63S = S & ChrW(1608) & " " & ChrW(1588) & ChrW(1575) & ChrW(1606) & ChrW(1586) & ChrW(1583) & ChrW(1607) & " "
64Case 7
65S = S & ChrW(1608) & " " & ChrW(1607) & ChrW(1601) & ChrW(1583) & ChrW(1607) & " "
66Case 8
67S = S & ChrW(1608) & " " & ChrW(1607) & ChrW(1580) & ChrW(1583) & ChrW(1607) & " "
68Case 9
69S = S & ChrW(1608) & " " & ChrW(1606) & ChrW(1608) & ChrW(1586) & ChrW(1583) & ChrW(1607) & " "
70End Select
71
72Case 2
73S = S & ChrW(1608) & " " & ChrW(1576) & ChrW(1610) & ChrW(1587) & ChrW(1578) & " "
74Case 3
75S = S & ChrW(1608) & " " & ChrW(1587) & ChrW(1610) & " "
76Case 4
77S = S & ChrW(1608) & " " & ChrW(1670) & ChrW(1607) & ChrW(1604) & " "
78Case 5
79S = S & ChrW(1608) & " " & ChrW(1662) & ChrW(1606) & ChrW(1580) & ChrW(1575) & ChrW(1607) & " "
80Case 6
81S = S & ChrW(1608) & " " & ChrW(1588) & ChrW(1589) & ChrW(1578) & " "
82Case 7
83S = S & ChrW(1608) & " " & ChrW(1607) & ChrW(1601) & ChrW(1578) & ChrW(1575) & ChrW(1583) & " "
84Case 8
85S = S & ChrW(1608) & " " & ChrW(1607) & ChrW(1588) & ChrW(1578) & ChrW(1575) & ChrW(1583) & " "
86Case 9
87S = S & ChrW(1608) & " " & ChrW(1606) & ChrW(1608) & ChrW(1583) & " "
88End Select
89
90If h(2) <> 1 Then
91Select Case h(3)
92Case 1
93S = S & ChrW(1608) & " " & ChrW(1610) & ChrW(1603)
94Case 2
95S = S & ChrW(1608) & " " & ChrW(1583) & ChrW(1608)
96Case 3
97S = S & ChrW(1608) & " " & ChrW(1587) & ChrW(1607)
98Case 4
99S = S & ChrW(1608) & " " & ChrW(1670) & ChrW(1607) & ChrW(1575) & ChrW(1585)
100Case 5
101S = S & ChrW(1608) & " " & ChrW(1662) & ChrW(1606) & ChrW(1580)
102Case 6
103S = S & ChrW(1608) & " " & ChrW(1588) & ChrW(1588)
104Case 7
105S = S & ChrW(1608) & " " & ChrW(1607) & ChrW(1601) & ChrW(1578)
106Case 8
107S = S & ChrW(1608) & " " & ChrW(1607) & ChrW(1588) & ChrW(1578)
108Case 9
109S = S & ChrW(1608) & " " & ChrW(1606) & ChrW(1607)
110End Select
111End If
112S = IIf(L < 3, Right(S, Len(S) - 1), S)
113Three = S
114End Function

با به کارگیری تابع horofi، دیگر مشکلاتی که در حالت قبل با آن برخورد کردیم، پیش نمی‌آید و نمایش عدد با هر تعداد ارقام (کمتر از ۱۵ رقم) به درستی انجام می‌شود.

به منظور دسترسی به فایل یا کارپوشه محاسباتی این مطلب، می‌توانید با کلیک کردن در اینجا، فایل مورد نظر را با نام number to letter worksheet.zip بارگذاری کرده و با قالب فشرده (zip) دریافت کنید. برای استفاده البته باید آن را از حالت فشرده خارج کرده، در اکسل بازیایی (Open) نمایید.

خلاصه و جمع‌بندی

تبدیل عدد به حروف در اکسل برای کسانی که در امور مالی و حسابداری فعالیت دارند، ضرورت مهم و الزام بزرگی محسوب می‌شود. از طرفی کسانی که با اکسل سرو کار داشته و با آن گزارش مالی تهیه می‌کنند، علاقمند هستند که این کار در جدول‌های کاری همین نرم‌افزار صورت گیرد. به همین دلیل در این متن با دو شیوه یا راهکار به بررسی تبدیل عدد به حروف در اکسل پرداختیم و همچنین کاربرگ مورد استفاده در متن را هم برای راحتی کار خوانندگان، ارائه کردیم.

توجه داشته باشید، اگر می‌خواهید خودتان، کدنویسی یا فرمول نویسی برای انجام این کار را انجام دهید، برای حالت‌های مختلف، برنامه را آزمایش کنید تا از هر گونه خطای سهوی جلوگیری کنید. چون ممکن است نتیجه حاصل از این تبدیل، به درستی صورت نگرفته باشد و حروف نوشته شده برای نمایش عدد، شما را گمراه کند. در طی این مراحل، فرمول‌نویسی و محاسبات منطقی شما هم رشد کرده و بهتر می‌توانید یک مسئله را تجزیه و تحلیل کرده، راه‌حال‌های مناسب برای آن ارائه دهید.

بر اساس رای ۱۲ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
مجله فرادرس
۵ دیدگاه برای «تبدیل عدد به حروف در اکسل — آموزش تصویری و گام به گام»

سلام..چگونه حرف ریال رو در کنار فرمول قرار بدم

درود
دستتون درد نکنه عالی بود

سلام من افزونه را نصب کردم اکسلم هنگ میکنه و سرعت کامپیوترم به شدت میاد پایین.ویندوزم 7 هست و تازه نصب کردم

سلام،با تشکر از راهنمایی و مطلب آموزشی مفید و کاربردی

سلام من افزونه را نصب کردم اکسلم هنگ میکنه و سرعت کامپیوترم به شدت میاد پایین.ویندوزم 7 هست و تازه نصب کردم

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *