এম এস এক্সেলে সংখ্যাকে কথায় রুপান্তরিত করুন
- Details
- Category: কম্পিউটার
- Published on Saturday, 05 May 2012 00:43
- Written by Super User
- Hits: 1306
এম এস এক্সেলে যে কোন সংখ্যা কথায় লিখতে এম এস এক্সেলের ভিজুয়াল বেসিক মডিউল চালু করুন। এর পর নিচের কোডগুলি কপি করে পেস্ট করুন। এবার মডিউলটি ও ভিজুয়াল বেসিক ক্লোজ করুন। এর ফলে আপনার এক্সেল ওয়ার্কশীটে =WordNum() নামে নতুন একটি ফাংশন যোগ হবে।
ভিজুয়াল বেসিক মডিউল চালু করতে-
১. এম.এস. এক্সেল ২০০৩ চালূ করুন।
২. Tools – Macro – Visual Basic Editor ক্লিক করুন অথবা Alt+F11 প্রেস করুন।
নিচের স্ক্রীনশটটি দেখুন

৩. Microsoft Visual Basic নামে নতুন একটি প্রোগাম চালূ হবে।
৪. এখানে নতুন মডিউল নেয়ার জন্য- Insert – Module ক্লিক করলে নিচের স্ক্রীন শটের মত Book1 – Module1 (Code) নামে নতুন একটি ইউন্ডো আসবে।

৫. এখানে General এর নিচের বক্সে আমাদের কোড গুলো লিখতে হবে।
কোড লেখা শেষ হলে এখানে কোন সেভ করার অপশন নাই। যা লিখবেন সব অটোমেটিক্যালি সেভ হয়ে যাবে। তাই শুধুমাত্র প্রথমে Book1 – Module1 (Code) নামের ইউন্ডোটি ক্লোজ করুন এরপর Book1 – Module1 (Code) নামের ইউন্ডোটি ক্লোজ করুন।
এখন =WordNum এর পরের বন্ধনীর মধ্যে যে সংখ্যা লিখে ইন্টার প্রেস করবেন, আপনি সেই সংখ্যাটিই কথায় দেখতে পারবেন্ । বন্ধনীর মধ্যে যদি সেল নম্বর দেন তাহলে ঐ সেলে যে সংখ্যা থাকবে, সেটিই কথায় দেখতে পারবেন। কোডটি নিম্নরূপ-
Option Explicit
Public Numbers As Variant, Tens As Variant
Sub SetNums()
Numbers = Array("", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen")
Tens = Array("", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety")
End Sub
Function WordNum(MyNumber As Double) As String
Dim DecimalPosition As Integer, ValNo As Variant, StrNo As String
Dim NumStr As String, n As Integer, Temp1 As String, Temp2 As String
' This macro was written by Chris Mead - www.MeadInKent.co.uk
If Abs(MyNumber) > 999999999 Then
WordNum = "Value too large"
Exit Function
End If
SetNums
' String representation of amount (excl decimals)
NumStr = Right("000000000" & Trim(Str(Int(Abs(MyNumber)))), 9)
ValNo = Array(0, Val(Mid(NumStr, 1, 3)), Val(Mid(NumStr, 4, 3)), Val(Mid(NumStr, 7, 3)))
For n = 3 To 1 Step -1 'analyse the absolute number as 3 sets of 3 digits
StrNo = Format(ValNo(n), "000")
If ValNo(n) > 0 Then
Temp1 = GetTens(Val(Right(StrNo, 2)))
If Left(StrNo, 1) <> "0" Then
Temp2 = Numbers(Val(Left(StrNo, 1))) & " hundred"
If Temp1 <> "" Then Temp2 = Temp2 & " and "
Else
Temp2 = ""
End If
If n = 3 Then
If Temp2 = "" And ValNo(1) + ValNo(2) > 0 Then Temp2 = "and "
WordNum = Trim(Temp2 & Temp1)
End If
If n = 2 Then WordNum = Trim(Temp2 & Temp1 & " thousand " & WordNum)
If n = 1 Then WordNum = Trim(Temp2 & Temp1 & " million " & WordNum)
End If
Next n
NumStr = Trim(Str(Abs(MyNumber)))
' Values after the decimal place
DecimalPosition = InStr(NumStr, ".")
Numbers(0) = "Zero"
If DecimalPosition > 0 And DecimalPosition < Len(NumStr) Then
Temp1 = " point"
For n = DecimalPosition + 1 To Len(NumStr)
Temp1 = Temp1 & " " & Numbers(Val(Mid(NumStr, n, 1)))
Next n
WordNum = WordNum & Temp1
End If
If Len(WordNum) = 0 Or Left(WordNum, 2) = " p" Then
WordNum = "Zero" & WordNum
End If
End Function
Function GetTens(TensNum As Integer) As String
' Converts a number from 0 to 99 into text.
If TensNum <= 19 Then
GetTens = Numbers(TensNum)
Else
Dim MyNo As String
MyNo = Format(TensNum, "00")
GetTens = Tens(Val(Left(MyNo, 1))) & " " & Numbers(Val(Right(MyNo, 1)))
End If
End Function








