Agregar Guion a Texto

Solo consultas sobre macros y código VBA Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

Re: Agregar Guion a Texto

Notapor Potter2K10 » 08 Ene 2010 13:20

=REEMPLAZAR(A1;2;;"-")

fíjate que el 2 indica la posición en la que quieres insertar el guión, así que en la macro sólo deberás cambiar el 2 por la posición en la que quieras el guión.

así que la macro igual podría ser (para texto de cualquier longitud):

Código: Seleccionar todo
Sub prueba()
    Dim uf As Long
    uf = Range("a" & Rows.Count).End(xlUp).Row
    Range("a1:a" & uf) = _
    Evaluate("index(replace(a1:a" & uf & ",2,,""-""),0)")
End Sub
[/quote]

Hola nuevamente, he estado verificando el codigo y ya lo comprendi, ahora estoy intentando modificarlo para hacer dinamica la columna donde inicie a poner el guion y tengo este codigo no se que me sale mal que unas veces funciona y otras no, tendras alguna idea como mejorar el codigo.

Sub Guion()
Dim uf As Long
Set rng = Application.InputBox("celda a poner guion", "indicar celda", Type:=8)
rng.Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select
ruta = Selection.Address(RowAbsolute:=False)
Range(ruta) = _
Evaluate("index(left(ruta,2)&""-""&right(ruta,1),0)")
End Sub

Gracias
espero tu respuesta
salu2
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Potter2K10
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 14:04

Re: Agregar Guion a Texto

Notapor mjrofra » 08 Ene 2010 13:55

de pronto así:

Código: Seleccionar todo
Sub Guion()
Dim uf As Long, Rng As Range
Set Rng = Application.InputBox("Seleccione los datos", "Seleccionar los datos", Type:=8)
Rng = Evaluate("index(left(" & Rng.Address & ",2)&""-""&right(" & Rng.Address & ",1),0)")
End Sub


En el inputbox selecciona todos los datos a los que le quieres insertar el guión, no sólo una celda, sino todo el rango de datos.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mjrofra
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 21:08
Ubicación: Colombia

Re: Agregar Guion a Texto

Notapor mjrofra » 08 Ene 2010 14:00

y tras copiar acá el código me doy cuenta que ya está sobrando la variable "uf" que ya no se va a usar, así que podría ser simplemente así:

Código: Seleccionar todo
Sub Guion()
Dim Rng As Range
Set Rng = Application.InputBox("Seleccione los datos", Type:=8)
Rng = Evaluate("index(left(" & Rng.Address & _
      ",2)&""-""&right(" & Rng.Address & ",1),0)")
End Sub
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mjrofra
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 21:08
Ubicación: Colombia

Re: Agregar Guion a Texto

Notapor Potter2K10 » 08 Ene 2010 14:57

Hola, estoy revisando y no funciona da #VALUE! en el resultado.


Creo que es un error de sintaxis.

cuando estube probando me dio ese error por que el rango es absoluto y la formula como la planteas usa rangos relativos, creo que ahi esta el error.


salu2.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Potter2K10
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 14:04

Re: Agregar Guion a Texto

Notapor sailepaty » 08 Ene 2010 16:37

Una mas combinando la propuesta de Hector y lineas del codigo de Mauricio.

Código: Seleccionar todo
Sub AddSlash()
    Dim rRng As Range
    Dim sTxt As String
    sTxt = "Transpose(Transpose(Left(REMPLAZA,2)&""-""&Mid(REMPLAZA,3,250)))"
    Set rRng = Application.InputBox("Seleccione los datos", Type:=8)
    rRng = Evaluate(Replace(sTxt, "REMPLAZA", rRng.Address))
End Sub



Saludos
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
sailepaty
Miembro Frecuente
Miembro Frecuente
 
Registrado: 27 Oct 2004 12:31
Ubicación: Dallas, TX

Re: Agregar Guion a Texto

Notapor mjrofra » 08 Ene 2010 16:46

Potter2K10 escribió:Hola, estoy revisando y no funciona da #VALUE! en el resultado.

Creo que es un error de sintaxis.

cuando estube probando me dio ese error por que el rango es absoluto y la formula como la planteas usa rangos relativos, creo que ahi esta el error...


pues esto es extraño, a mi me está funcionando bien... prueba esta, haciendo uso de la función remplazar (creo que sería la que yo usaría por su sencillez):

Código: Seleccionar todo
Sub Guion()
Dim Rng As Range
Set Rng = Application.InputBox("Seleccione los datos", Type:=8)
Rng = Evaluate("index(replace(" & Rng.Address & ",2,,""-""),0)")
End Sub
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mjrofra
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 21:08
Ubicación: Colombia

Re: Agregar Guion a Texto

Notapor mjrofra » 08 Ene 2010 16:51

sailepaty escribió:Una mas combinando la propuesta de Hector y lineas del codigo de Mauricio.

Código: Seleccionar todo
Sub AddSlash()
    Dim rRng As Range
    Dim sTxt As String
    sTxt = "Transpose(Transpose(Left(REMPLAZA,2)&""-""&Mid(REMPLAZA,3,250)))"
    Set rRng = Application.InputBox("Seleccione los datos", Type:=8)
    rRng = Evaluate(Replace(sTxt, "REMPLAZA", rRng.Address))
End Sub



Saludos


Me alegra verte por acá sailepaty.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mjrofra
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 21:08
Ubicación: Colombia

Re: Agregar Guion a Texto

Notapor Potter2K10 » 08 Ene 2010 17:06

Código: Seleccionar todo
Sub Guion()
Dim Rng As Range
Set Rng = Application.InputBox("Seleccione los datos", Type:=8)
Rng = Evaluate("index(replace(" & Rng.Address & ",2,,""-""),0)")
End Sub
[/quote]


Siento mucho molestar tanto pero la verdad es que al seleccionar el rango me referia a la primera celda donde inicia la columna no hacer la seleccion yo, ya que en ocaciones son mas de mil celdas las que hay que seleccionar por eso queria que contara desde la celda activa que yo indique hasta el final. Por eso no me funcionaba el macro por que yo solo seleccionaba la primer celda de la columna pero ya entendi, bueno gracias a todos los que participaron aqui en esto, se les agradece por todo el tiempo usado.

Salu2
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Potter2K10
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 14:04

Re: Agregar Guion a Texto

Notapor mjrofra » 08 Ene 2010 17:36

Potter2K10 escribió:Siento mucho molestar tanto...


no molestas a nadie, jeje, al contrario, gracias a tus preguntas es que aprendemos todos en el foro, si no fueran por ellas no habría foro.

Potter2K10 escribió:...al seleccionar el rango me referia a la primera celda donde inicia la columna no hacer la seleccion yo, ya que en ocaciones son mas de mil celdas las que hay que seleccionar por eso queria que contara desde la celda activa que yo indique hasta el final. Por eso no me funcionaba el macro por que yo solo seleccionaba la primer celda de la columna pero ya entendi, bueno gracias a todos los que participaron aqui en esto, se les agradece por todo el tiempo usado


Pues no habrá qeu modificar mucho para que funcione como quieres:

Código: Seleccionar todo
Sub Guion()
Dim Rng As Range
Set Rng = Application.InputBox("Seleccione los datos", Type:=8)
Set Rng = Range(Rng.Address, Rng.End(xlDown).Address)
Rng = Evaluate("index(replace(" & Rng.Address & ",2,,""-""),0)")
End Sub


En todo caso, para seleccionar todo los datos en una columna, basta con que selecciones el primer dato y luego, con el primer dato seleccionado, presionas Ctrl+Mayús (Ctrl+Shift) y manteniendo presionado Ctrl+Mayús presionas la flecha hacia abajo. Así seleccionaras todos los datos en la columna a partir del primer dato seleccionado, no tendrás que seleccionarlos todos manualmente :D (de pronto ya lo sabias, igual a lo mejor alguien más no y para eso es el foro).
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
mjrofra
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Dic 2009 21:08
Ubicación: Colombia

Anterior

Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados