Rutina excel para dar enter con macro

Tengo el problema con algunas tablas de archivos de otros sistemas exportados a excel donde algunos datos no tienen el formato adecuado al abrirlo en excel por lo que debo entrar a cada celda con este problema y presionar la tecla enter para que el formato se corrija, me pasa principalmente con el formato de números, fechas, etc. Agradecería me ayudaran con una rutina para hacer esto de forma automática mediante una macro. Lo que haría seria entrar a cada celda, una por una, en el rango desde A1 hasta Z1000 sin importar si en ese rango hay datos o no y sin diferenciar los formatos de deban tener ya que el problema se soluciona solo con entrar y dar enter.

1 respuesta

Respuesta
1

¿Puedes poner una captura de pantalla de tus datos?

Este solo es un ejemplo de un archivo donde tengo ese problema, pero mi uso de ese tipo de archivos es frecuente y las tablas contienen muchas filas y es algo tardado o complicado dar enter a cada celda para corregir el formato. Este tabla solo tiene una columna con el error, pero hay otros donde solo algunas celdas tiene este error. Gracias

Al tener esa marca verde en la esquina no me permite manejar los datos como número ni me permite cambiar el formato.

Es porque el numero esta convertido en texto, ¿y es pasa solo en una columna o en varias?, este es un ejemplo esta macro convierte todo numero como texto a numero y lo formatea en este caso solo formate la columna 4 o folio, pruébalo sobre una copia de tu información y comentas.

Sub formatear()
Set datos = Range("b6").CurrentRegion
With datos
    Set datos = .Rows(2).Resize(.Rows.Count - 1, .Columns.Count)
    .Value = .Value
    .Columns(4).NumberFormat = "0"
End With
End Sub

Ya lo probé en un par de archivos y funciono muy bien. Excepto cuando los datos no estan en un mismo rango de tabla o cuando son dos o tablas en la hoja. Por eso decía lo del rango A1:Z1000 para poder aplicarlo a cualquier hoja que, considero siempre estarán en ese rango sin dejar afuera ninguna celda; si no es posible, esta me sirvió muy bien.

muchas gracias

Bueno entonces prueba con esa macro, actúa sobre las áreas de la hoja que tengan datos puede ser uno o un millón, las tablas tienen que estar una al lado de otro de preferencia o si están una abajo de otra, estas tienen que tener la misma estructura es decir si la columna a de la tabla 1 tiene números, la columna de la tabla b debe tener números.

Sub formatear()
Set datos = ActiveSheet.UsedRange
With datos
    .Value = .Value
        For I = 1 To .Columns.Count
            numero = .Cells(2, I)
            If IsNumeric(numero) = True Then
                .Columns(I).NumberFormat = "general"
            End If
        Next I
End With
End Sub

¡Gracias! 

Simplemente sublime. Exactamente lo que imaginé debía hacer. Funciona a la perfección. Te felicito y agradezco por compartir tus conocimientos. Saludos

Y como una manera de agrdecer, dale un valor a mi solución.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas