Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Texto en columna con macros

| Sin comentarios

Algunas veces cuando importamos datos de un sitio externo, ya sea de un sitio web o archivos de Office,  obtenemos celdas con una pequeña particularidad, tienen formato de texto, y esto se puede apreciar cuando seleccionamos la celda y aparece un pequeño símbolo de exclamación al lado de la celda y al apuntarlo con el cursor nos muestra un mensaje que dice "El número de esta celda tiene formato de texto o va precedido por un apóstrofo" (ver figura 1). Esto a primera vista no nos causa ningún inconveniente, pero en realidad nos afecta en el sentido en que no podemos cambiarlo de formato, ya sea a porcentaje, a número, etc.

figura 1

Figura1: Celda en formato texto

 

Existe una manera rápida y fácil de arreglar este problema, el cual es haciendo clic en "Texto en columnas" en la pestaña Datos y sin que sea necesario modificar alguna opción le damos clic en finalizar (ver figura 2). Con esto solucionamos el problema, pero tenemos un inconveniente, esta opción de "Texto en columna" sólo funciona en una sola columna, y si queremos arreglar el formato en varias columnas, la única opción sería hacerlo columna por columna. Para esto es la utilidad de esta macro, con ella nos ahorramos tiempo valioso ya que esta macro realiza todo esto por nosotros.

figura 2

(Para mayor visualización de la imagen, hacer click en la misma)

Figura 2: Función Texto en columnas

Para desarrollar esta macro hay que seguir los siguientes pasos:

Paso 1: Importar datos

Necesitamos tener datos importados a la mano. Para este caso, abran el archivo adjunto de excel que está al final de esta publicación. Estos datos fueron sacados de la siguiente página: https://datos.bancomundial.org/indicador/SL.UEM.TOTL.ZS y para descargar los datos le damos clic en el botón que dice DESCARGAR DATOS y de la lista seleccionamos EXCEL (ver figura 3).  Con el archivo descargado lo abrimos y notamos que las celdas que contienen los años tienen el problema del formato.

figura 3

(Para mayor visualización de la imagen, hacer click en la misma)

Figura 3: Página web de los datos a importar

Paso 2: Digitar la macros

Abrimos en el menú el programador y luego abrimos el editor de VBA, una vez ahí le damos doble clic en workbook y digitamos el siguiente código:

Sub TextoenColumnas()
'Paso 1: Declaramos variables
Dim MyRange As Range
Dim MyCell As Range

'Paso 2: Guardamos el workbook antes de realizar los cambios en la celda
Select Case MsgBox("No existe restablecer con esta acción. " & "Grabar Libro primero?", vbYesNoCancel)
Case Is = vbYes
ThisWorkbook.Save
Case Is = vbCancel
Exit Sub
End Select

'Paso 3: Definimos el rango de celdas
Set MyRange = Selection

'Paso 4: Realizamos iteraciones a través del rango de celdas
For Each MyCell In MyRange

'Paso 5: Restablecemos los valores de la celda
If Not IsEmpty(MyCell) Then
MyCell.Value = MyCell.Value
End If

'Paso 6: Pasar a la siguiente celda
Next MyCell

End Sub

Paso 3: Seleccionamos las celdas que queremos que se aplique la macros y corremos la macro.

Nos saldrá un mensaje si queremos guardar el archivo, si le damos en "SI", se guarda el archivo y se ejecuta la macro, si le damos en "NO", no se guarda y se ejecuta la macro, si le damos en "CANCEL" no se ejecuta la macro. Esto se puede leer en el código mostrado, y se aplica para no perder o guardar los datos iniciales aplicarles el formato.

Finalmente, cabe resaltar la utilidad de esta macro en cuanto al factor tiempo, debido a que nos ahorra bastante tiempo en el cual nos tardaríamos al aplicar el formato a cada columna. Y como acotación a este código, en éste notamos que tenemos que darle un rango de celdas seleccionadas para que funcione nuestra macro, pero si queremos podemos modificar esta macro, para que se aplique a un rango de celdas ya establecidos de un hoja activa o una hoja específica o para que aplique a un rango que esté previamente nombrado, solamente haría falta modificar el "paso 3" del código. Es cuestión de qué mejor se acomoda a cada uno de nuestros casos.

Aquí el archivo excel que nos sirve como ejemplo.

CASO. Texto en columnas

 

 

Deja una respuesta

Los campos requeridos estan marcados con *.