Excel'in çalışma sayfasında sayıları İngilizce sözcükler olarak görüntüleyen varsayılan bir işlevi yoktur, ancak aşağıdaki SpellNumber işlev kodunu VBA (Visual Basic for Applications) modülüne yapıştırarak bu özelliği ekleyebilirsiniz. Bu işlev, dolar ve cent tutarlarını formülle sözcüklere dönüştürmenize olanak tanır, bu nedenle 22,50 dolar ve elli sent Twenty-Two olarak okunur. Denetimleri yazdırmak için şablon olarak Excel kullanıyorsanız bu çok yararlı olabilir.
Sayısal değerleri sözcük olarak görüntülemeden metin biçimine dönüştürmek istiyorsanız, bunun yerine METNEÇEVİr işlevini kullanın.
Not: Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; açık veya zımni hiçbir garanti vermez. Bu, satılabilirlik veya belirli bir amaca uygunluk ile ilgili zımni garantileri içerir, ancak bunlarla sınırlı değildir. Bu makalede, VBA programlama dilini ve yordamları oluşturmak ve hatalarını ayıklamak için kullanılan araçları bildiğiniz varsayılır. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğini açıklamaya yardımcı olabilir. Ancak bu örnekler, ek işlevler sağlamak veya özel gereksinimlerinizi karşılamak için yordamlar oluşturmak için bu örnekleri değiştirmez.
Sayıları sözcüklere dönüştürmek için SpellNumber işlevini oluşturma
-
Visual Basic Düzenleyicisi'ni (VBE) açmak için Alt + F11 klavye kısayolunu kullanın.
Not: Visual Basic Düzenleyicisi'ne, şeridinizde Geliştirici sekmesini göstererek de erişebilirsiniz.
-
Ekle sekmesine ve modül'e tıklayın.
-
Aşağıdaki kod satırlarını kopyalayın.
Not: Kullanıcı Tanımlı İşlev (UDF) olarak bilinen bu kod, çalışma sayfanızın tamamında sayıları metne dönüştürme görevini otomatikleştirir.
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
-
Kod satırlarını Module1 (Kod) kutusuna yapıştırın.
-
Excel'e dönmek için Alt + Q tuşlarına basın. SpellNumber işlevi artık kullanıma hazırdır.
Not: Bu işlev yalnızca geçerli çalışma kitabı için çalışır. Bu işlevi başka bir çalışma kitabında kullanmak için, kodu kopyalayıp bu çalışma kitabına yapıştırma adımlarını yinelemeniz gerekir.
Tek tek hücrelerde SpellNumber işlevini kullanma
-
= YazımSayısı(A1) formülünü, yazılı bir sayıyı görüntülemek istediğiniz hücreye yazın; burada A1, dönüştürmek istediğiniz sayıyı içeren hücredir. =SpellNumber(22,50) gibi bir değeri el ile de yazabilirsiniz.
-
Formülü onaylamak için Enter tuşuna basın.
SpellNumber işlev çalışma kitabınızı kaydetme
Excel, makro işlevlerine sahip bir çalışma kitabını standart makro içermeyen çalışma kitabı biçiminde (.xlsx) kaydedemez. Dosya > Kaydet'e tıklarsanız. VB projesi iletişim kutusu açılır. Hayır’a tıklayın.
Dosyanızı geçerli biçimde tutmak için dosyanızı Excel Macro-Enabled Çalışma Kitabı (.xlsm) olarak kaydedebilirsiniz.
-
Dosya > Farklı Kaydet’e tıklayın.
-
Kayıt türü açılan menüsüne tıklayın ve Excel Macro-Enabled Çalışma Kitabı'nı seçin.
-
Kaydet'e tıklayın.