Ir ao conteúdo
  • Cadastre-se

Excel Como Usar a Função TRUNC no VBA Disponível no Excel


Ir à solução Resolvido por Visitante,

Posts recomendados

18 minutos atrás, osvaldomp disse:

Utilize Fix() ou Int(). Verifique na ajuda do VBA a diferença entre as duas.

@osvaldomp obrigado pela ajuda. não existe nenhuma das duas funções em WorksheetFunction. eu preciso extrair, de um número double, até a centésima casa sem arredondar. exemplo: de 1,2357, eu quero extrair 1,23 e não 1,24 arredondado.

Link para o comentário
Compartilhar em outros sites

  • Solução

Me parece que não existe uma função nativa que faça isso, nem no Excel e nem no VBA.

 

Uma forma de contornar é:

1. deslocar a vírgula até a casa decimal que deseja extrair, no seu exemplo ficaria 123,57, isso equivale a multiplicar o valor original por 100

2. em seguida toma-se o inteiro resultante e divide-se pelo valor antes multiplicado ~~~> 123 / 100 = 1,23

 

Para extrair outros valores:

1,2357 ~~~> 1,2 ~~~> usaria 10 como fator

1,2357 ~~~> 1,235 ~~~> usaria 1000 como fator

 

Sub Teste()
Dim x As Double, v As Integer
 x = 71.23658
 For v = 1 To 5
  MsgBox Int(x * (10 ^ v)) / (10 ^ v)
 Next v
End Sub

 

Link para o comentário
Compartilhar em outros sites

3 minutos atrás, olliver.soul disse:

@MrBoorjs  Segue uma alternativa,

 


Function Truncar(dNumero As Double, iDigitos As Integer)
    Truncar = Int(dNumero * 10 ^ iDigitos) / 10 ^ iDigitos
End Function

Sub Main()
    MsgBox Truncar(1.2357, 2)
End Sub

 

@olliver.soul cara, valeu mesmo pela ajuda. pelo que li na documentação (https://docs.microsoft.com/en-us/javascript/api/excel/excel.functions?view=excel-js-preview#trunc-number--numdigits-), a minha versão do ExcelAPI não possui essa função disponível. terei que fazer uma versão lusitana dessa função ou melhor, usar a função que você me enviou (com certeza será a sua).

 

obrigado pela atenção prestada.

adicionado 3 minutos depois
4 minutos atrás, osvaldomp disse:

Me parece que não existe uma função nativa que faça isso, nem no Excel e nem no VBA.

 

Uma forma de contornar é:

1. deslocar a vírgula até a casa decimal que deseja extrair, no seu exemplo ficaria 123,57, isso equivale a multiplicar o valor original por 100

2. em seguida toma-se o inteiro resultante e divide-se pelo valor antes multiplicado ~~~> 123 / 100 = 1,23

 

Para extrair outros valores:

1,2357 ~~~> 1,2 ~~~> usaria 10 como fator

1,2357 ~~~> 1,235 ~~~> usaria 1000 como fator

 


Sub Teste()
Dim x As Double, v As Integer
 x = 71.23658
 For v = 1 To 5
  MsgBox Int(x * (10 ^ v)) / (10 ^ v)
 Next v
End Sub

 

@osvaldomp valeu pela ajuda. eu já faço exatamente assim como você me enviou. só queria usar algo nativo, mas, tudo bem. parece que a versão do meu ExcelAPI não possui essa função.

 

obrigado pela atenção prestada.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!