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:
     

Agregar Guion a Texto

Notapor Potter2K10 » 05 Ene 2010 18:16

Hola, buenas tardes a todo los maestros de excel del foro.

mi pregunta es esta: como puede agregar un guion a un texto sin formulas si no con macros ya que tengo que agregarlos a diario, por ejemplo si tengo esto en A1:A10 ,JKL, EDT, BFR, ERT, WSX, OIU, TRD, QAZ, CDF, VFR
y quiero que quede asi J-KL,E-DT, B-FR, E-RT,etc. como lo hago con una macro, se que se puede con una columa auxiliar con formulas pero lo necesito con macro lo he hecho usando REPLACE algo asi: =REPLACE(A1,2,,"-") lo que no quuiero es usar una columna auxiliar si no en la misma celda tomar el valor y sobreescribirlo de ya con el guion.

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 Héctor Miguel » 05 Ene 2010 20:46

hola, !

suponiendo que los datos que expones estuvieran en el rango [B2:B10] (o ajusta a tu rango real)

- abre el editor de vba (atajo de teclado: alt + F11)
- muestra la ventana de inmediato (atajo: ctrl + G)
- copia/pega (o escribe) lo siguiente (y pulsas {enter} para su ejecucion)

[b2:b10] = [transpose(transpose(left(b2:b10)&"-"&mid(b2:b10,2,30)))]

saludos,
hector.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Héctor Miguel
Miembro Frecuente
Miembro Frecuente
 
Registrado: 26 Mar 2005 18:31

Re: Agregar Guion a Texto

Notapor Antoni » 06 Ene 2010 05:58

Te adjunto otra macro, que, hace lo que pides y solo actúa la primera vez que la ejecutas.

Código: Seleccionar todo
Sub Colocar_Guion()

Dim x As Long  'fila
Dim y As Long  'columna

Dim ix As Long 'fila inicial
Dim fx As Long 'fila final

Dim iy As Long 'columna inicial
Dim fy As Long 'columna final

ix = 1
fx = 1

iy = 1
fy = 10

ThisWorkbook.Worksheets("Hoja1").Activate 'sustituye Hoja1 por el nombre de tu hoja
For x = ix To fx
    For y = iy To fy
        If Mid(Cells(x, y), 2, 1) <> "-" Then
           Cells(x, y) = _
              Left(Cells(x, y), 1) & "-" & Right(Cells(x, y), Len(Cells(x, y)) - 1)
        End If
    Next y
Next x

End Sub
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Agregar Guion a Texto

Notapor Antoni » 06 Ene 2010 06:10

¡Ah!, Se me olvidaba:

Para ejecutar la macro:

Alt+F11 (Ejecuta el editor de VB)

Ctrl+R (Visualiza el proyecto)

Click derecho en Modulos\Añadir\Módulo (Añade un Módulo vacio)

Doble click en Módulo1 + Copiar/Pegar el código de la macro (Inserta el código de la macro)

F5 (Ejecuta la macro)
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Agregar Guion a Texto

Notapor sailepaty » 06 Ene 2010 13:26

Héctor Miguel escribió:[b2:b10] = [transpose(transpose(left(b2:b10)&"-"&mid(b2:b10,2,30)))]


Muy bueno Héctor, me lo apunto.

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 Potter2K10 » 06 Ene 2010 14:45

Hey gracias a todos por los aportes estan de lujo, me serviran un monton, nuevamente muchas gracias.

me sacaron de un apuro, luego vuelvo con mas interrogantes.


Salu2, desde El Salvador.

:lol: :lol: :lol:
* 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 » 06 Ene 2010 15:39

Bueno, y viendo la fantástica solución de Héctor, pues se me ocurrió que se podría hacer una macro que se ajuste a la cantidad de datos siguiendo la idea de Héctor, tal vez así (suponiendo que los datos están en la columna A, empiezan en A1 pero puede variar la cantidad):

Código: Seleccionar todo
Sub prueba()
    Dim uf As Long
    uf = Range("a" & Rows.Count).End(xlUp).Row
    Range("a1:a" & uf) = _
    Evaluate("index(left(a1:a" & uf & "10)&""-""&right(a1:a" & uf & ",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 » 06 Ene 2010 15:41

sailepaty escribió:
Muy bueno Héctor, me lo apunto.

Saludos


un saludo sailepaty, qué bueno verte por acá.
* 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 » 06 Ene 2010 16:25

creo que hay un error en el código que acabo de copiar arriba, debía ser:

Código: Seleccionar todo
Sub prueba()
    Dim uf As Long
    uf = Range("a" & Rows.Count).End(xlUp).Row
    Range("a1:a" & uf) = _
    Evaluate("index(left(a1:a" & uf & ")&""-""&right(a1:a" & uf & ",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 Potter2K10 » 07 Ene 2010 14:59

Hola mjrofra esta muy intersante la macro que publicaste, solo que no la comprendo, serias tan amable de explicarla un poco, ya que veo que es mas rapida que las otras opciones y me gustaria entenderla, asi por ejemplo si yo quisiera que el quion no me aparesca como segundo caracter, si no que como tercero, como tendria que modificar el codigo, ya intente varias opciones y no logro hacerlo.

Salu2

Espero te pases por aqui de nuevo y me respondas o si alguien mas sabe como hacerlo lo publique.

:?: :?:
gracias.
* 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 federico ramirez marron » 07 Ene 2010 18:02

modifica esto uf & ",2),0)")

por esto uf & ",3),0)") , el merito principal es para hector, ya que se saco de la manga esa respuesta que me dejo de aseis!!!

Potter2K10 escribió:Hola mjrofra esta muy intersante la macro que publicaste, solo que no la comprendo, serias tan amable de explicarla un poco, ya que veo que es mas rapida que las otras opciones y me gustaria entenderla, asi por ejemplo si yo quisiera que el quion no me aparesca como segundo caracter, si no que como tercero, como tendria que modificar el codigo, ya intente varias opciones y no logro hacerlo.

Salu2

Espero te pases por aqui de nuevo y me respondas o si alguien mas sabe como hacerlo lo publique.

:?: :?:
gracias.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
federico ramirez marron
Miembro Frecuente
Miembro Frecuente
 
Registrado: 21 Sep 2004 21:24
Ubicación: ACAPULCO

Re: Agregar Guion a Texto

Notapor mjrofra » 07 Ene 2010 18:25

Potter2K10 escribió:...si yo quisiera que el quion no me aparesca como segundo caracter, si no que como tercero, como tendria que modificar el codigo, ya intente varias opciones y no logro hacerlo...


todo lo que estoy haciendo, es usar esta fórmula y reemplazar el rango de datos con el resultado de ella:

=IZQUIERDA(A1)&"-"&DERECHA(A1;2)

prueba ingresando esa fórmula frente a los datos y verás que tienes el resultado que buscabas... siempre y cuando todos los datos tengan tres caracteres como en el ejemplo que pusiste originalmente.

si quieres que insertar el guión como tercer caracter en lugar de segundo, la fórmula debería ser esta:

=IZQUIERDA(A1;2)&"-"&DERECHA(A1;1)

por lo que la macro debería quedar así:

Código: Seleccionar todo
Sub prueba()
    Dim uf As Long
    uf = Range("a" & Rows.Count).End(xlUp).Row
    Range("a1:a" & uf) = _
    Evaluate("index(left(a1:a" & uf & ",2)&""-""&right(a1:a" & uf & ",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 mjrofra » 07 Ene 2010 19:11

y en caso de que quieras tener más control sobre la macro, podrías probar algo así:

Código: Seleccionar todo
Sub prueba()
   
    Dim uf As Long, Der As String, Izq As String
   
    Const Pos As Byte = 2
    Const Car As String = "-"
   
    uf = Range("a" & Rows.Count).End(xlUp).Row
    Der = "left(a1:a" & uf & "," & Pos & ")&"""
    Izq = """&right(a1:a" & uf & ",len(a1:a" & uf & ")-" & Pos & ")"
    Range("a1:a" & uf) = Evaluate("=index(" & Der & Car & Izq & ",0)")
   
End Sub


Ahí, podrás seleccionar la posición en la que quieres insertar el caracter y el caracter que quieres insertar:

Código: Seleccionar todo
Const Pos As Byte = 2
Const Car As String = "-"


En este caso posición (pos) = 2, caracter (car) = "-". Y como ves, he modificado la fórmula para que se pueda usar con otras longitudes de texto, no sólo con texto de tres caracteres.

La fórmula resultante, siendo 2 la posición y "-" el caracter que se va a insertar, es:

=DERECHA(A1,2)&"-"&IZQUIERDA(A1,LARGO(A1)-2)
* 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 » 07 Ene 2010 19:14

federico ramirez marron escribió:...el merito principal es para hector, ya que se saco de la manga esa respuesta que me dejo de aseis!!!...
[/quote]

al César lo que es del César.

el mérito, por supuesto, es de Héctor.
* 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 » 07 Ene 2010 22:32

y me quedé pensando... incluso con una fórmula tan sencilla como esta funcionará:

=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
* 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

Siguiente

Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: jeladio, obeddonis y 4 invitados