Enteros de 18 digitos

26/07/2005 - 11:59 por Angel O | Informe spam
Hola a todos. Necesito hacer calcular el resto de números de 18 dígitos (o
alguno mas) dividido entre uno de 2. El problema es que Excel con la fórmula
"=Residuo(123456789012345678;97)" me devuelve "#¡NUM!" supongo que por que
el entero es demasiado largo. Alguna idea para hallar el resto de la
división entre un entero de 18 cifras entre 97?.

Gracias.

Àngel O.
 

Leer las respuestas

#1 Fernando Arroyo
26/07/2005 - 13:09 | Informe spam
No sé si habrá alguna forma más elegante de hacerlo, pero una posible solución sería usar el tipo de datos Decimal de VBA en una función personalizada. Por ejemplo:

Function MiResto(sNúmero As String, lDivisor As Long) As Long
Dim a As Variant
Dim n As Long

a = CDec(sNúmero)
n = lDivisor

For n = 0 To lDivisor
If Int((a - n) / lDivisor) = (a - n) / lDivisor Then
MiResto = n
Exit Function
End If
Next n
End Function


La sintaxis sería:

=MiResto("123456789012345678";97)

Es necesario pasar el número a dividir como una cadena de texto para evitar que Excel lo manipule. La función CDec se encarga de convertirlo en el tipo de datos Decimal, el cual admite hasta 29 dígitos si el número es un entero (y si yo no estoy malamente equivocado).

He intentado usar en la función el operador Mod de VBA (para evitar el bucle), pero se produce un desbordamiento.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Angel O" escribió en el mensaje news:
Hola a todos. Necesito hacer calcular el resto de números de 18 dígitos (o
alguno mas) dividido entre uno de 2. El problema es que Excel con la fórmula
"=Residuo(123456789012345678;97)" me devuelve "#¡NUM!" supongo que por que
el entero es demasiado largo. Alguna idea para hallar el resto de la
división entre un entero de 18 cifras entre 97?.

Gracias.

Àngel O.



Preguntas similares