Saltar al contenido

Escribir variables en fichero con formato de numero específico

publicado

Hola a todos,

Me gustaría saber si es posible lo siguiente. Tengo una hoja de cálculo con algunas casillas que son valores numéricos obtenidos mediante fórmulas estándar de Excel y quisiera mediante una subrutina generar un archivo de texto que tuviera un formato muy concreto de modo que los números tendrán el formato del tipo 0000000000E+0. (El número 25 por ejemplo sería 2500000000E-8). Es decir, todos los números tendrán 10 dígitos sin puntos decimales y acompañados del correspondiente exponencial, que a su vez tendrá un solo dígito.

La verdad es que no tengo ni idea de cómo hacer esto ya que creo el programa pero los valores que escribe tienen el formato General de Excel. El 25 es el 25 y el 2.5 es el 2.5

Cualquier ayuda será muy de agradecer. Un saludo.

Featured Replies

publicado

Hola:

Si le he entendido bien, le dejo una función que hace lo que Vd. ha pedido.

Saludos

Notación científica alineada a 10 caracteres.xls

publicado
  • Autor

Pues muchas gracias por la ayuda, creo que eso es exactamente lo que buscaba! Si se me permite, querría hacer una preguntita más. ¿Cómo podría hacer un código para que el formato de salida sea una cadena con un punto decimal?

He escrito algo así:

Public Function punto(Target As Range) As VariantDim r As Variant
On Error GoTo incluirpunto:
r = InStr(0, Target, ".")
Exit Function
incluirpunto:
punto = Target & "."
End Function[/CODE]

Lo que me gustaría es que el programa determine si la cadena "Target" contiene un punto decimal y en caso afirmativo, salga de la función. En el caso de que la cadena no tenga punto decimal (es decir, sea un número entero), mi objetivo es que la función InStr de un error que haga que el programa continue leyendo por "incluir punto:" para añadir un punto al final.

¿Qué estoy haciendo mal?

Muchas gracias.

publicado

Hola:

La instrucción Instr, cuando no encuentra el valor, devuelve cero no error, por lo tanto siempre sale por Exit Function.

Así debería funcionar:



Public Function punto(Target As Range) As Variant

If InStr(Target, ".") = 0 Then punto = Target & "."

End Function


[/CODE]

Saludos

publicado
  • Autor

Es cierto, no me había dado cuenta.

Muchísimas gracias por la ayuda prestada.

Un saludo.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.