Formula no Excel para Escrever Numero por Extenso

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 

Veja também mais Fórmulas com a letra F

Fórmulas que começam com:

Comentários