Infelizmente, não há uma fórmula nativa no Excel para escrever números por extenso. No entanto, existem algumas maneiras de fazer isso usando funções e macros personalizadas. Aqui estão algumas opções:
Opção 1: Usar uma função personalizada
Você pode usar uma função personalizada para converter números em palavras. Aqui está um exemplo de uma função que faz isso em inglês:
``` Function SpellNumber(ByVal MyNumber) As StringIf MyNumber = 0 Then SpellNumber = "Zero" Exit FunctionEnd If
' Convert negative numbers If MyNumber < 0 ThenSpellNumber = "Minus "MyNumber = Abs(MyNumber) End If Dim Dollars, Cents, Temp Dim DecimalPlace, Count ReDim Place(9) As String Place(2) = " Thousand " Place(3) = " Million " Place(4) = " Billion " ' Change decimal separator to "." MyNumber = Replace(MyNumber, ",", ".") ' Extract dollars and cents DecimalPlace = InStr(MyNumber, ".") If DecimalPlace > 0 ThenCents = Mid(MyNumber, DecimalPlace + 1)MyNumber = Left(MyNumber, DecimalPlace - 1) End If ' Convert cents If Len(Cents) = 1 ThenCents = Cents & "0" End If If Len(Cents) > 2 ThenCents = Left(Cents, 2) End If Temp = " " & GetTens(Cents) & " Cents" ' Convert dollars Count = 1 Do While MyNumber <> ""Temp = " " & GetHundreds(Right(MyNumber, 3)) & _ Place(Count) & TempMyNumber = Left(MyNumber, Len(MyNumber) - 3)Count = Count + 1 Loop Dollars = Temp ' Remove leading spaces If Left(Dollars, 1) = " " ThenDollars = Right(Dollars, Len(Dollars) - 1) End If ' Capitalize first letter SpellNumber = StrConv(Left(Dollars, 1), vbUpperCase) & _Right(Dollars, Len(Dollars) - 1) & Temp
End Function
Function GetHundreds(ByVal MyNumber)Dim Result As StringIf Val(MyNumber) = 0 Then Exit FunctionEnd IfMyNumber = Right("000" & MyNumber, 3)If Mid(MyNumber, 1, 1) <> "0" Then Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "End IfIf Mid(MyNumber, 2, 1) <> "0" Then Result = Result & GetTens(Mid(MyNumber, 2))Else Result = Result & GetDigit(Mid(MyNumber, 3))End IfGetHundreds = Result End Function
Function GetTens(ByVal TensText)Dim Result As StringResult = ""If Val(Left(TensText, 1)) = 1 Then 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 SelectElse 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))End IfGetTens = Result End Function
Function GetDigit(ByVal 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 ```
Para usar essa função, basta colocar o número que deseja escrever por extenso em uma célula, e usar a função assim:
=SpellNumber(A1)
Substitua "A1" pela célula que contém o número que você quer escrever por extenso.
Opção 2: Usar uma macro personalizada
Outra opção é criar uma macro personalizada para escrever números por extenso. Aqui está um exemplo de uma macro que faz isso em inglês:
``` Sub SpellNumber()Dim MyNumber As DoubleDim Dollars As StringDim Cents As StringDim Temp As StringDim DecimalPlace As LongDim Count As Long
MyNumber = CDbl(ActiveCell.Value) ' Convert negative numbers If MyNumber < 0 ThenTemp = "Minus "MyNumber = Abs(MyNumber) End If ' Extract dollars and cents DecimalPlace = InStr(MyNumber, ".") If DecimalPlace > 0 ThenCents = Mid(MyNumber, DecimalPlace + 1)MyNumber = Left(MyNumber, DecimalPlace - 1) End If ' Convert cents If Len(Cents) = 1 ThenCents = Cents & "0" End If If Len(Cents) > 2 ThenCents = Left(Cents, 2) End If Temp = " " & GetTens(Cents) & " Cents" ' Convert dollars Count = 1 Do While MyNumber <> ""Temp = " " & GetHundreds(Right(MyNumber, 3)) & _ IIf(Count