¿Por qué Excel elimina los ceros a la izquierda cuando se muestran datos CSV?


9

Tengo un archivo de texto CSV con el siguiente contenido:

"Col1","Col2"
"01",A
"2",B
"10", C

Cuando lo abro con Excel, se muestra como se muestra aquí:

Tenga en cuenta que Cell A2intenta mostrar "01" como un número sin un "0" inicial.

Cuando formateo las filas 2 a 4 como "Texto", cambia la visualización a

... pero aún así el "0" principal ya no está

¿Hay alguna manera de abrir un archivo CSV en Excel y poder ver todos los ceros a la izquierda en el archivo cambiando alguna opción? No quiero tener que volver a escribir '01 en cada celda que debería tener un cero a la izquierda. Además, el uso de un apóstrofe principal requiere que los cambios se guarden en un formato XLS cuando se desea CSV. Mi objetivo es simplemente usar Excel para ver el contenido real del archivo como texto sin que Excel intente hacerme ningún favor de formateo.


La única forma en que he descubierto esto es ardua, pero parece funcionar. Copie y pegue en una nueva hoja. Establezca toda el área pegada en formato de "texto", luego bórrela y pegue los valores nuevamente. Bob es tu tía.

3
(Para nuestros usuarios de fuera del Reino Unido, "Bob es tu tía" es una expresión que se traduce vagamente a "y ya está todo listo".)
iglvzx

Robert no era mi tía. :-) Pensé que tenía éxito haciendo eso antes, pero no funcionó. Intentalo. Lo que me confundió es por qué formatear la celda como texto no da como resultado que el valor "02" se muestre con un 0 inicial a la izquierda justificado.
Chad

1
si el csv es para Excel sólo, puede utilizar los números explícitos como texto - por ejemplo, si se escribe '01en Excel, se mostrará 01sin la comilla simple ..
Aprillion

Respuestas:


6

Cuando abra el csv, tendrá la opción de especificar el delimitador y el tipo de datos para cada columna. El asistente de importación de texto tiene 3 pasos. Tenga en cuenta que mis capturas de pantalla son de Excel 2010, pero esto funcionará exactamente de la misma manera en Excel 2003.

Paso 1: seleccione delimitado (en lugar de ancho fijo)

Paso 2: seleccione coma como su delimitador

Paso 3: seleccione cada columna y cambie el formato de datos a "texto". (Verá la palabra Texto que se muestra arriba de cada columna como en la captura de pantalla a continuación).

ingrese la descripción de la imagen aquí

Los ceros iniciales ya no se eliminarán:

ingrese la descripción de la imagen aquí

ACTUALIZACIÓN : si no desea navegar por el proceso para que Excel coopere, puede usar CSVEd , un editor diseñado específicamente para editar archivos de texto delimitados. Un buen editor de texto como Notepad ++ también podría funcionar, pero no podrá ver sus datos organizados en columnas.



1
Mi problema fue que mi archivo tenía una extensión csv y el cuadro de diálogo Importar nunca aparece. Cuando cambié el nombre del archivo para que tuviera una extensión de texto, estaba todo listo y sabía a dónde ir. ty.
Chad

Aquí hay una complicación: después de importarlo como lo describe, quiero poder modificar el archivo y volver a guardarlo como CSV. Me presenta un cuadro de diálogo enrevesado y feo (¡vamos, microsoft, diseñe un formulario de diálogo personalizado para esto en lugar de usar la función MessageBox de Windows!). Elijo la opción para "mantenerlo en el mismo formato". Cuando lo hago, el valor predeterminado es un formato separado por tabulaciones. Para asegurarse de que el archivo txt se guarde con un separador de coma, debe volver a cambiar la extensión del nombre de archivo a "csv". ¿Es esto feo de qué? ¿Después de 10 versiones de Excel tenemos esto?
Chad

Hola Velika, mira la actualización al final de mi respuesta. Es mejor que no uses Excel en absoluto.
Jon Crowell

Sí, ya estaba buscando un editor CSV. Vi CSVEd. Mi impresión inicial es que parece una interfaz confusa y ametuerish. Creo que "Editor de texto tabular" se ve mejor. Gracias por tu ayuda.
Chad

13

Acabo de encontrarme con este problema. Si controla la creación del archivo CSV, puede hacer que los datos tengan el siguiente aspecto:

"Col1","Col2"
="01",A
="2",B
="10", C

Cuando se abre como Excel, conservará el 01.


Mi Excel 2010 no conserva 01 incluso con su ejemplo
OneWorld

1

formatee la columna para que muestre cómo desea (p. ej. 00 para 2 dígitos)
Esto tiene la ventaja de que se guardará con esos dígitos (pero tendría que modificar el formato cada vez que edite el CSV)


0

Primero copie todos los datos / columnas y filas de la hoja de Excel real en otra hoja de Excel solo para estar seguro, de modo que tenga los datos reales para comparar. Pasos,

  1. Copie todos los valores en la columna y péguelos en un bloc de notas.
  2. Ahora cambie el tipo de columna a texto en la hoja de Excel (recortará los ceros anteriores / finales), no se preocupe por eso.
  3. Vaya al Bloc de notas y copie todos los valores que acaba de pegar.
  4. Vaya a su hoja de Excel y pegue los valores en la misma columna.

Si tiene más de una columna con valores 0, simplemente repita lo mismo.

Días felices.


0

1) Pegar mis números en una columna de Excel (eliminará los ceros a la izquierda)

2) Luego haga clic derecho para "formatear celdas" personalizado a 0000 para un # de 4 dígitos, 00000 para # de 5 dígitos. etc ... (trae esos ceros)

3) Copie la columna y péguela en un archivo .txt. (debe tener todos los ceros a la izquierda).

4) Copie su lista .txt.

5) Haga clic derecho en cualquier columna en Excel y formatee el texto.

6) Pegue los datos copiados del .txt en la columna de Excel. (Todos los ceros iniciales permanecen)

Delimita el deseo de tu corazón.


0

Si el daño ya está hecho y tiene los datos en Excel, puede cambiar el formato de archivo mediante la opción de Formato de número personalizado. Simplemente ponga ceros para la cantidad de lugares que desee (la imagen de abajo tendrá seis dígitos)

ingrese la descripción de la imagen aquí

Aquí está Macro que también lo haría en toda su hoja. Simplemente especifique el número de dígitos.

Sub whyNot()
Dim WS As Worksheet, fMat As String, p As Long

    '''''Custom Options
    Const NumberOfPlaces As Long = 3 '' change this to number of places you want
    Set WS = ActiveSheet 'or specify the sheet name with Sheets("Sheet1")


        For p = 1 To NumberOfPlaces
        fMat = fMat & "0"
        Next p

        WS.UsedRange.Cells.NumberFormat = fMat

End Sub
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.