MACRO Números almacenados como texto EXCEL 2007

Diariamente en mi trabajo de la industria automotriz, genero un reporte de mi sistema el cual contiene números almacenados como texto. La cantidad de filas y columnas es muy variable pero también tiene celdas que deben ser texto. Necesito su privilegiado apoyo para poder hacer la conversión de todas las celdas que tengan números como texto en número de toda la hoja, por favor espero contar con su pronta, efectiva y amable ayuda. Excelente día! Atentamente: Edgar U.

2 Respuestas

Respuesta
1
Veamos si tienes datos numéricos como texto y estos están "solos", es decir del tipo 1235 y no del tipo "asd1235", pues entonces esos "solos", los puedes pasar a numero sencillamente seleccionando toda la hoja, y aplicando formato de celda numérico.
Ahora como no pones ejemplo de los datos ni ubicaciones es algo difícil darte una mejor respuesta ( al menos para mí)
Hola Experto, el reporte que me genera mi sistema pasa los valores numéricos al formato "0000132" o "-0000132", como son demasiados números con este inconveniente debo hacer manualmente la selección de la primera celda que contiene este error, seleccionar todas las celdas del la hoja, regresar a la alerta de error y seleccionar la opción "Convertir en número". Esto lo hago muchas veces al día y esto es solo una parte de lo que debo hacer pero es lo único en lo que no he encontrado solución, si necesitas más detalles y tienes el gusto de ayudarme estaré muy agradecido.
Saludos.
Y con la opción F5 botón "especial" seleccionas "Celdas con fórmulas - Errores"
Debería tomar todas las celdas con error y luego le aplicas el formato
Anexo dejo la imagen de mi archivo, solo necesito convertir todo a número con macro, espero que la ayuda visual te de una mejor visión, GRACIAS! http://www.imagengratis.org/images/proceso.gif
Ok. Probemos esto basdo en tu rango desde DE hast O
Abre el editor de Vba ALT + F11, en el editor selecciona la hoja que contiene los datos, y dale doble click, se abrirá una nueva ventana allí pegas esto:
Sub numerar()
Dim r As Range
Dim fila As Long
fila = Application.WorksheetFunction.CountA(Range("D:D")) + 5
If fila = 0 Then Exit Sub
Application.ScreenUpdating = False
For Each r In Range("D5" & ":" & "O" & fila)
r = (r + 0)
DoEvents
Next
Set r = Nothing
Application.ScreenUpdating = True
MsgBox "Terminado", vbInformation
End Sub
Luego grabas la hoja
El macro se llama "numerar" y se corre como cualquier macro ALT+F8
Tardara tanto tiempo como datos tengas en ese rango, en todo caso cuando termine te aparecerá un mensaje indicando que ha finalizado.
Desde luego, prueba esto en una copia de la data original, por si acaso.
Bien espero te sirva.
Experto, al correr la macro me genera el siguiente error: "Se ha producido el error ´13´ en tiempo de ejecución : no coinciden los tipos", ¿sabes a que se debe?.
Gracias nuevamente!
Me he dado cuenta que todo va muy bien y cambiando los rangos la macro genera error cuando en la revisión se topa con una celda vacía, en realidad no tarda mucho y solo es ese ultimo detalle, espero contar con tu paciente ayuda, MIL GRACIAS!
Prueba así:
Sub numerar()
Dim r As Range
Dim fila As Long
fila = Application.WorksheetFunction.CountA(Range("D:D")) + 5
If fila = 0 Then Exit Sub
Application.ScreenUpdating = False
For Each r In Range("D5" & ":" & "O" & fila)
On Error Resume Next
If Len(r) > 0 Then r = (r + 0)
DoEvents
Next
Set r = Nothing
Application.ScreenUpdating = True
MsgBox "Terminado", vbInformation
End Sub
Modifica tu los rangos a los que te sean adecuados, el bucle ahora tomara solo las celdas que contengan algo ( así sea un espacio).
Este tema esta RESUELTO, gracias por tu paciencia y ayuda, que tengas excelente tarde y te seguiré molestando en caso de que tenga otra duda XD.
Edgar U.
Respuesta
1
Para aplicarlo a una hoja que tiene texto y números mezclados se deben definir los rangos.
Aquí tienes un ejemplo para cambiar números almacenados como textos de la columna F. Adáptalo a tus necesidades.
Sub Conv_text_Num()
Dim finAs Range
Dim f,ffAs Integer
Const x = 1
Set fin = Range("F"&Rows.Count).End(xlUp)
f = Cells(fin.Row, 6).Row
For ff = 2 To f
If Range("f" & ff).Value <> "" Then _
Range("f" & ff).Value = Range("f" & ff).Value * x
Next
End Sub
Hola amigo, abusando de tu experiencia me podrías decir como debo modificar el ejemplo de tal forma que me cambie el texto a número de toda la columna A a toda la columna T, gracias!
Acá tienes
Sub Conv_text_Num()
Application.ScreenUpdating = False
Dim f, ff As Integer
Range("A1").Select
Const x = 1
For i = 1 To 20
Cells(1, i).Select
fin = Cells(1, i).End(xlDown).Row
For ff = 1 To fin
If Cells(ff, i).Value <> "" Then _
Cells(ff, i).Value = Cells(ff, i).Value * x
Next
Next i
Application.ScreenUpdating = True
End Sub
Ten presente que se puede poner pesado el libro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas