Una aplicación me exporta valores a excel, pero en el caso de los números, me
exporta con los siguientes patrones:
14.475,28 (o sea, número normal)
333.21 (texto, ya que el . hace que excel lo considere texto)
333.21- (texto, con el signo - en la derecha en lugar de la izda y el . en
lugar de ,)
13.321,44- (texto por el signo -)
Supongamos que cualquiera de estos datos esta en A1. Con la siguiente
formula he conseguido que me los convierta en números normales
=SI(ESERROR(ENCONTRAR("-";A3))=VERDADERO;SI(ESNUMERO(A3*1)úLSO;REEMPLAZAR(A3;ENCONTRAR(".";A3);1;",")*1;A3*1);SI(ESERROR(("-"&IZQUIERDA(A3;ENCONTRAR("-";A3)-1))*1)=VERDADERO;(IZQUIERDA("-"&REEMPLAZAR(A3;ENCONTRAR(".";A3);1;",");LARGO(A3)))*1;("-"&IZQUIERDA(A3;ENCONTRAR("-";A3)-1))*1))
La cuestión es, que estoy intentando hacer una FUNCTION para crear un
complemento y que lo utilicen otras personas con esta misma formula pero no
hay manera.
La verdad es que no tengo claro como utilizar formulas de excel dentro de
VB. Os paso el código que he utilizado:
Function ImporteTransformar(NumeroRaro)
' Condicional 1: Existe el caracter "-"?
If "find("" - ""; NumeroRaro)" = True Then
' Condicional 2: Separa los decimales con "." en vez de ","?
If "iserror("" - "" & left(NumeroRaro; find("" - ""; NumeroRaro) - 1))*1
= True" Then
ImporteTransformar = "left("" - ""&replace(NumeroRaro; find(""."";
NumeroRaro); 1; "",""); len(NumeroRaro))"
Else
ImporteTransformar = "(""-""&left(NumeroRaro; find(""-"";
NumeroRaro) - 1)) * 1"
End If
Else
' Condicional 3: Sabiendo que "-" no existe, es un numero?
If "isnumber(NumeroRaro)" = True Then
ImporteTransformar = NumeroRaro * 1
Else
ImporteTransformar = "Replace(NumeroRaro; Find("".""; NumeroRaro);
1; "","") * 1"
End If
End If
End Function
Vamos, que yo me estoy volviendo bastante loco. Seguramente sea un fallo en
la sintaxis en la utilización de las fórmulas de excel dentro de VB...
Si has tenido la paciencia de leer hasta aquí, ya tienes todos mis
agradecimientos!!!
Leer las respuestas