formula

09/08/2007 - 18:01 por Jiordie | Informe spam
Hola a todos, quiero saber si es posible o existe una formula que haga lo
que necesito, que es lo siguiente, tengo en una columna los siguientes
datos:
123BOGOTA
12ARMENIA
135BARRANQUILLA
1CUCUTA


quiero separar sólo las letras de los numeros en dos columnas o por lo menos
en una columna las letras.

esto se puede? (las longitudies de las cadenas al igual que las de los
numeros son variables).

Muchas gracias dede ya!!

Preguntas similare

Leer las respuestas

#1 David
09/08/2007 - 18:40 | Informe spam
Hola, Jiordie. ¿Sabes VBA? Podrías probar con las siguientes funciones
personalizadas:

Function Valores(x As String)
Dim r As String, j As Integer
For j = 1 To Len(x)
If Mid(x, j, 1) >= "0" And Mid(x, j, 1) <= "9" Then
r = r & Mid(x, j, 1)
Else
Exit For
End If
Next j
Valores = r
End Function

Function Textos(x As String)
Dim r As String, j As Integer
For j = 1 To Len(x)
If Mid(x, j, 1) < "0" Or Mid(x, j, 1) > "9" Then
r = r & Mid(x, j, 1)
End If
Next j
Textos = r
End Function

En una columna, podrías utilizar Valores( ), y en la otra Textos( ), y luego
copiar y pegar como valores los resultados.

Comentas si es el resultado esperado.

Saludos.



"Jiordie" escribió:

Hola a todos, quiero saber si es posible o existe una formula que haga lo
que necesito, que es lo siguiente, tengo en una columna los siguientes
datos:
123BOGOTA
12ARMENIA
135BARRANQUILLA
1CUCUTA


quiero separar sólo las letras de los numeros en dos columnas o por lo menos
en una columna las letras.

esto se puede? (las longitudies de las cadenas al igual que las de los
numeros son variables).

Muchas gracias dede ya!!



Respuesta Responder a este mensaje
#2 Jiordie
09/08/2007 - 19:09 | Informe spam
Perfectoooo!!!!, muchas gracias,



"David" escribió en el mensaje
news:
Hola, Jiordie. ¿Sabes VBA? Podrías probar con las siguientes funciones
personalizadas:

Function Valores(x As String)
Dim r As String, j As Integer
For j = 1 To Len(x)
If Mid(x, j, 1) >= "0" And Mid(x, j, 1) <= "9" Then
r = r & Mid(x, j, 1)
Else
Exit For
End If
Next j
Valores = r
End Function

Function Textos(x As String)
Dim r As String, j As Integer
For j = 1 To Len(x)
If Mid(x, j, 1) < "0" Or Mid(x, j, 1) > "9" Then
r = r & Mid(x, j, 1)
End If
Next j
Textos = r
End Function

En una columna, podrías utilizar Valores( ), y en la otra Textos( ), y
luego
copiar y pegar como valores los resultados.

Comentas si es el resultado esperado.

Saludos.



"Jiordie" escribió:

Hola a todos, quiero saber si es posible o existe una formula que haga lo
que necesito, que es lo siguiente, tengo en una columna los siguientes
datos:
123BOGOTA
12ARMENIA
135BARRANQUILLA
1CUCUTA


quiero separar sólo las letras de los numeros en dos columnas o por lo
menos
en una columna las letras.

esto se puede? (las longitudies de las cadenas al igual que las de los
numeros son variables).

Muchas gracias dede ya!!



Respuesta Responder a este mensaje
#3 Pablov
09/08/2007 - 19:52 | Informe spam
Otra opcion es con esta macro.

Sub sacarLetras()

Dim contenido, caracter, nuevoString As String
Dim largo, subindice As Integer
Dim numeroNue As Long
Dim primeravez, armarstr As Boolean

primeravez = True
armarstr = True

numeroNue = 0
For i = 1 To 10
contenido = Cells(i, 1)
largo = Len(contenido)
subindice = 1
inicio = 1
For j = 1 To largo
caracter = Mid(contenido, inicio, subindice)
subindice = subindice + 1
If IsNumeric(caracter) Then
numeroNue = Int(caracter)
Else
If primeravez Then
subindice = subindice - 1
primeravez = False
inicio = Len(caracter)
Else
If armarstr Then
nuevoString = nuevoString + caracter
armarstr = False
End If
End If
End If
Next j
Cells(i, 2) = numeroNue
numeroNue = 0
Cells(i, 3) = caracter
nuevoString = ""
primeravez = True
armarstr = True
inicio = 1
Next i
End Sub


"Jiordie" escribió:

Perfectoooo!!!!, muchas gracias,



"David" escribió en el mensaje
news:
> Hola, Jiordie. ¿Sabes VBA? Podrías probar con las siguientes funciones
> personalizadas:
>
> Function Valores(x As String)
> Dim r As String, j As Integer
> For j = 1 To Len(x)
> If Mid(x, j, 1) >= "0" And Mid(x, j, 1) <= "9" Then
> r = r & Mid(x, j, 1)
> Else
> Exit For
> End If
> Next j
> Valores = r
> End Function
>
> Function Textos(x As String)
> Dim r As String, j As Integer
> For j = 1 To Len(x)
> If Mid(x, j, 1) < "0" Or Mid(x, j, 1) > "9" Then
> r = r & Mid(x, j, 1)
> End If
> Next j
> Textos = r
> End Function
>
> En una columna, podrías utilizar Valores( ), y en la otra Textos( ), y
> luego
> copiar y pegar como valores los resultados.
>
> Comentas si es el resultado esperado.
>
> Saludos.
>
>
>
> "Jiordie" escribió:
>
>> Hola a todos, quiero saber si es posible o existe una formula que haga lo
>> que necesito, que es lo siguiente, tengo en una columna los siguientes
>> datos:
>> 123BOGOTA
>> 12ARMENIA
>> 135BARRANQUILLA
>> 1CUCUTA
>>
>>
>> quiero separar sólo las letras de los numeros en dos columnas o por lo
>> menos
>> en una columna las letras.
>>
>> esto se puede? (las longitudies de las cadenas al igual que las de los
>> numeros son variables).
>>
>> Muchas gracias dede ya!!
>>
>>
>>



Respuesta Responder a este mensaje
#4 Héctor Miguel
09/08/2007 - 20:17 | Informe spam
hola, alex ?

... es posible o existe una formula que haga lo... lo siguiente
tengo en una columna los siguientes datos:
123BOGOTA
12ARMENIA
135BARRANQUILLA
1CUCUTA
... separar solo las letras de los numeros en dos columnas o por lo menos en una columna las letras.
... (las longitudies de las cadenas al igual que las de los numeros son variables).



si asumimos que siempre sera una *serie* unica de x_numeros al inicio y el resto seran letras...
y suponemos que el primer dato esta en la celda 'A1'... prueba con las siguientes formulas:

[B1] =izquierda(a1,sumaproducto((largo(a1)-largo(sustituir(a1,{0\1\2\3\4\5\6\7\8\9},"")))))
[C1] =sustituir(a1,b1,"")

si quieres que el resultado [texto] en la columna B sea *tratado* como numero...
-> agrega un doble-menos despues del signo '=' en las formulas de la columna B [p.e. =--izquierda(a1,sumaproducto(..]

solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D
y es posible que debas sustituir el caracter "\" por otro que use tu sistema como separador de filas en matrices constantes -?-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#5 julian-vlc-sp
09/08/2007 - 20:55 | Informe spam
¡Importante!: Colabora con el grupo.Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias.

Chapeau.

Me permito abusar de ti de nuevo, y te pediría una explicación cuando tengas
un ratito.

¿Por qué {0\1\2\3\4\5\6\7\8\9} no funciona hasta que no está dentro de
SUMAPRODUCTO (dentro de SUMA también funciona)?

Si en A1 tengo 123ABCD

= sustituir(a1,{0\1\2\3\4\5\6\7\8\9},"") no hace nada y me devuelve 123ABCD

en consecuencia,

= largo(sustituir(a1,{0\1\2\3\4\5\6\7\8\9},"")) me devuelve 7

y lógicamente

= largo(a1) - largo(sustituir(a1,{0\1\2\3\4\5\6\7\8\9},"")) me devuelve 0

pero sigo añadiendo, y al poner

= sumaproducto((largo(a1)-largo(sustituir(a1,{0\1\2\3\4\5\6\7\8\9},""))))

me encuentro con la sorpresa de que me devuelve 3 que es lo necesitamos para
sacar los números.

¿Me lo explicas por favor?

¿Tiene algo que ver con las funciones que admiten matrices y las que no?

En caso afirmativo, ¿Cómo podemos saber cuales las admiten? ¿Acaso en la
ayuda mirando función por función?


SALUDOS.
Julián-Valencia-España
http://ijulian.iespana.es/


"Héctor Miguel" escribió en el mensaje
news:
hola, alex ?

... es posible o existe una formula que haga lo... lo siguiente
tengo en una columna los siguientes datos:
123BOGOTA
12ARMENIA
135BARRANQUILLA
1CUCUTA
... separar solo las letras de los numeros en dos columnas o por lo menos
en una columna las letras.
... (las longitudies de las cadenas al igual que las de los numeros son
variables).



si asumimos que siempre sera una *serie* unica de x_numeros al inicio y el
resto seran letras...
y suponemos que el primer dato esta en la celda 'A1'... prueba con las
siguientes formulas:

[B1]
=izquierda(a1,sumaproducto((largo(a1)-largo(sustituir(a1,{0\1\2\3\4\5\6\7\8\9},"")))))
[C1] =sustituir(a1,b1,"")

si quieres que el resultado [texto] en la columna B sea *tratado* como
numero...
-> agrega un doble-menos despues del signo '=' en las formulas de la
columna B [p.e. =--izquierda(a1,sumaproducto(..]

solo toma en cuenta que mi sistema usa como separador de argumentos a la
coma ',' NO al punto y coma ';' :D
y es posible que debas sustituir el caracter "\" por otro que use tu
sistema como separador de filas en matrices constantes -?-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida