............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

copiar y pegar superindices

Ver el tema anterior Ver el tema siguiente Ir abajo

copiar y pegar superindices

Mensaje por moctezuma48 el Jue Oct 11, 2012 2:01 pm

¡ Hola a tod@s !

Mi pregunta es la siguiente:

Tengo una hoja en la que quiero sustituir todas las palabra km2 por km con el 2 final como superindice
Lo que saber es la forma de sustituir TODAS al mismo tiempo sin tener que ir cambiando el formato celda por celda

Muchas gracias por vuestra ayuda

moctezuma48

Masculino Cantidad de envíos : 43
Edad : 48
Ciudad - Pais : ESPAÑA
Version de Excel : 2007
Fecha de inscripción : 29/06/2011

Volver arriba Ir abajo

Re: copiar y pegar superindices

Mensaje por avalencia el Miér Nov 07, 2012 6:10 pm

Hola:

Debes usar una macro.

Código:

Option Compare Text

Sub Superindice()

Dim celda As Range

For Each celda In ActiveSheet.Range("A1:B10")

If celda.Value = "km2" Then
celda.Characters(3, 1).Font.Superscript = True
End If

Next celda

End Sub

Solo adaptala a tu rango y listo. Saludos

Abraham

_________________
Microsoft MVP 2010

avalencia
MS MVP
MS MVP

Masculino Cantidad de envíos : 99
Edad : 39
Ciudad - Pais : Lima - Peru
Version de Excel : 2003 - 2007 - 2010
Fecha de inscripción : 28/06/2009

http://abrahamexcel.webcindario.com/

Volver arriba Ir abajo

Re: copiar y pegar superindices

Mensaje por moises melgar el Miér Nov 07, 2012 7:02 pm

Usado como base el ejemplo del MS MVP avalencia y con apoyo de un ejemplo de la ayuda de Excel para VBA adjunto lo siguiente:

En este ejemplo se buscan todas las celdas del libro 1 que contienen el valor KM2 y el tercer caracter se convierte en superindice.

Código:
Sub Superindice1()
With Worksheets(1).Cells
    Set c = .Find("KM2", LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Characters(3, 1).Font.Superscript = True
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
End Sub
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: copiar y pegar superindices

Mensaje por avalencia el Jue Nov 08, 2012 1:23 am

Hola:

Moises, me gusta tu ejemplo y el uso de 'Find', solo un par de cuestiones: No usar 'Cells', mejor usar el rango necesario ya que sino la búsqueda en tantas celdas hace que el proceso se vuelva un poco más lento y no olvidar tampoco que los bucles tipo 'Loop' normalmente requieren un poco más de lineas de código que los bucles tipo 'For', ademas que son un poquito más lentos.

Saludos

Abraham


_________________
Microsoft MVP 2010

avalencia
MS MVP
MS MVP

Masculino Cantidad de envíos : 99
Edad : 39
Ciudad - Pais : Lima - Peru
Version de Excel : 2003 - 2007 - 2010
Fecha de inscripción : 28/06/2009

http://abrahamexcel.webcindario.com/

Volver arriba Ir abajo

Re: copiar y pegar superindices

Mensaje por moises melgar el Jue Nov 08, 2012 2:26 am

Le agradesco MVP Avalencia

Con las correciones que me mencionas sustituyendo .cells por un rango
y el Do por for adjunto lo siguiente:
Código:
Sub Superindice2() ' cambiar el rango por el rango al cual aplicaras el cambio
With Worksheets(1).Range("A1:B10")
    Set c = .Find("KM2", LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
    For x = 1 To WorksheetFunction.CountIf(Hoja1.Range("A1:B10"), "KM2")
        c.Characters(3, 1).Font.Superscript = True
        Set c = .FindNext(c)
    Next x
    End If
End With
End Sub
lo malo es que hay que colocar el rango a buscar en dos ocaciones, se me ocurrio tambien que al codigo colocarle ActiveWindow.RangeSelection.Address
para que el usuario tenga la posibilidad que desde excel seleccione el rango donde quiere que se ejecute su macro y luego ejecutarla (VBA excel tiene cada cosa)
Código:
Sub Superindice3() 'Selecciona tu rango y luego ejecuta
With Worksheets(1).Range(ActiveWindow.RangeSelection.Address)
    Set c = .Find("KM2", LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
    For x = 1 To WorksheetFunction.CountIf(Hoja1.Range(ActiveWindow.RangeSelection.Address), "KM2")
        c.Characters(3, 1).Font.Superscript = True
        Set c = .FindNext(c)
    Next x
    End If
End With
End Sub

Pero en sentido de rapides llego a reconocer que lo mas simple es lo mas adecuado.
avatar
moises melgar
Jr_Moderator

Masculino Cantidad de envíos : 552
Edad : 29
Ciudad - Pais : Coatzacoalcos - Mexico
Version de Excel : 2007 - 2010
Fecha de inscripción : 25/05/2010

Volver arriba Ir abajo

Re: copiar y pegar superindices

Mensaje por moctezuma48 el Jue Nov 08, 2012 5:30 pm


Me ha quedado todo muy claro.

Muchísimas gracias a todos por vuestra ayuda y todas vuestras explicaciones.


moctezuma48

Masculino Cantidad de envíos : 43
Edad : 48
Ciudad - Pais : ESPAÑA
Version de Excel : 2007
Fecha de inscripción : 29/06/2011

Volver arriba Ir abajo

Re: copiar y pegar superindices

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.