Re: Alternativa a SUSTITUIR() 30 veces.

25/12/2005 - 22:16 por javier99 | Informe spam
Gracias, KL

A esta cadena de texto, siempre la misma cadena
12345678

quería hacerle desaparecer cualquiera de los caracteres variables que pueden estar repetidos (no siguen ningun orden, la cadena puede ser de longitud variable, hasta 30 caracteres máximo), y que estarían en una columna. Como en este ejemplo

147
3783
6981
3689

12312312312311111312312322222

Siempre son números, el "0" no entra
Lo he dejado mas simple, pero en realidad la cadena sería de unos 30 caracteres como máximo. Como en el último ejemplo. El resulado que busco no le afecta.


El resultado correcto debería quedaría así

3568
12456
2345
124

45678

Andaba con un "SODOKU" e intentaba plantearlo de alguna forma que me sirviera para hallar una solución

Sebeis de alguan función o formula para conseguir ese resultado que busco??


También probé concatenando así:
=CONCATENAR(K16;L16;M16;N16;O16)
y despues trataba de SUSTITUIR()

=SUSTITUIR(123456789;CONCATENAR(K16;L16;M16;N16;O16);""

Pero así no me daba el resultado correcto...
Era mejor no componer esa cadena y aplicar SUSTITUIR() 30 veces... entonces SÍ conseguía lo que busco. Pero me parece exagerado hacerlo así

=SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(F$11;K16;"");L16;"");M16;"");N16;"");O16;""

Si lo ve algun amigo mio se echaría a reir. :))

Es un juego. Gracias.
Saludos.

javie

javier99

Ver este tema: http://www.softwaremix.net/viewtopic-468599.htm

Enviado desde http://www.softwaremix.net
 

Leer las respuestas

#1 KL
26/12/2005 - 18:50 | Informe spam
Hola javier99,

Lo unico que se me ocurre es:
1) usar la funcion SUSTITUIR hasta 7 veces (el limite de anidaciones) en una celda y luego seguir en otra
2)usar una funcion personalizada en VBA, algo asi:

Public Function MSUSTITUIR(txt As String, busc, _
sust As String) As String
On Error GoTo ManejoErr
For Each i In busc
txt = Replace(txt, i, sust)
Next i
MSUSTITUIR = txt
Exit Function
ManejoErr:
MSUSTITUIR = Replace(txt, busc, sust)
End Function

copias el codigo en un modulo estandar (que no sea de hoja, ThisWorkbook o UserForm) y llamas la formula desde una celda de esta
manera:

=MSUSTITUIR(A1;F1:J1;"")

donde:

A1 - contiene la cadena de texto inicial
F1:J1 - es el rango horizontal o vertical o matriz fija que contiene los caracteres a sustituir
"" - es el caracter que sustituye los anteriores.

3) Tambien mira a ver estos ejemplos de como resolver los sudoku

Andy Pope: http://andypope.info/fun/SuDoku.zip
Dan Cory: http://office.microsoft.com/en-us/t...21033.aspx

Saludos,
KL


"javier99" wrote in message news:

Gracias, KL:

A esta cadena de texto, siempre la misma cadena:
123456789

quería hacerle desaparecer cualquiera de los caracteres variables que pueden estar repetidos (no siguen ningun orden, la cadena
puede ser de longitud variable, hasta 30 caracteres máximo), y que estarían en una columna. Como en este ejemplo:

1472
37833
69818
36895

123123123123111113123123222222

Siempre son números, el "0" no entra.
Lo he dejado mas simple, pero en realidad la cadena sería de unos 30 caracteres como máximo. Como en el último ejemplo. El
resulado que busco no le afecta.



El resultado correcto debería quedaría así:

35689
124569
23457
1247

456789


Andaba con un "SODOKU" e intentaba plantearlo de alguna forma que me sirviera para hallar una solución.

Sebeis de alguan función o formula para conseguir ese resultado que busco??




También probé concatenando así:
=CONCATENAR(K16;L16;M16;N16;O16)
y despues trataba de SUSTITUIR():

=SUSTITUIR(123456789;CONCATENAR(K16;L16;M16;N16;O16);"")

Pero así no me daba el resultado correcto...
Era mejor no componer esa cadena y aplicar SUSTITUIR() 30 veces... entonces SÍ conseguía lo que busco. Pero me parece exagerado
hacerlo así:

=SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(SUSTITUIR(F$11;K16;"");L16;"");M16;"");N16;"");O16;"")

Si lo ve algun amigo mio se echaría a reir. :)))

Es un juego. Gracias.
Saludos.

javier


javier99


Ver este tema: http://www.softwaremix.net/viewtopic-468599.html

Enviado desde http://www.softwaremix.net


Preguntas similares