web-dev-qa-db-ja.com

列がテキストとしてフォーマットされているときに、数値としてフォーマットされたExcel列の先頭のゼロが失われるのはなぜですか?

スプレッドシートをCSVにエクスポートする必要があります。列の1つは、先頭にゼロが付いた東海岸の郵便番号を含む郵便番号です。エクスポート時に先頭のゼロを保持することを期待してその列をテキストとして再フォーマットすると、列はすぐに右揃えから左揃えになり、先行ゼロはなくなります!私は正反対を期待します。テキストから数値に再フォーマットするとゼロを失う可能性があるということです。

先行ゼロをどのように保存できますか?

8
mrblint

理論

Excelには、セル内のデータに関して、無関係な2つの異なる概念があります。それはraw/stored valuedisplay valueです。

「生の」または保存された値は、フォーマットされていない表現の実際のデータです。生データのtypeには、数値、テキスト、日付などを指定できます。

「表示」値は、データのフォーマット方法です。 Excel GUIを使用すると、生の値ではなく表示値が表示されます。

問題は、CSVにエクスポートするときに、表示値ではなく、raw値を取得してエクスポートすることです。したがって、[セルの書式設定]ダイアログを使用して先行ゼロを含むようにデータを書式設定しても、基になる値に先行ゼロが含まれていない場合、エクスポートも同様になりません。

すべてのデータを(Excelスプレッドシートで)テキストとしてフォーマットし、必要に応じてadd先行ゼロを追加する必要があります。これにより、生の値に先行ゼロがあると思わせる表示値が排除されます(そうではありません)。

解決

ゼロはセルの内容の一部としては存在せず、書式設定のみなので、テキストとして書式設定しても取得されません。次の列の数式を使用してみてください。例: A2にエントリがある5桁(?)の郵便番号がある場合は、この式をB2に入れてください

=TEXT(A2,"00000")

数式を列にコピーします

その結果はテキスト値です(おそらく実際の先行ゼロを使用)。別の列にこの値を入力したら、元の列に「値を貼り付け」をコピーして実行し、基礎となるすべてのデータをゼロが埋め込まれたデータに置き換えることができます。次に、余分な列を削除します。

6
barry houdini

セルにはテキストではなく数値が含まれています。 02010の数値は、数値2010と同じです。これをテキストとしてフォーマットすると、02010ではなく2010の通常のテキスト表現が得られます。

先頭のゼロを保持するには、データを数値ではなく文字列として入力します。たとえば、値として= "02010"と入力します。

すべての数値が同じ長さ(たとえば5桁)であると仮定して、先行ゼロを単純に表示するには、カスタム形式を使用します。カスタムFOrlistから0を選択し、それを00000に変更します。すべての数値は先行ゼロ付きの5桁で表示されます。ただし、このデータをCSVファイルに保存する場合、先頭のゼロはありません。それらを保持する唯一の方法は、データを文字列として入力することです。

2
Charles Engelke

Excelを使用してから長い時間が経ちましたが、常に先頭のゼロの前に 'を付けると、Excelはそれを数値として解釈しようとするのではなく、文字列として扱います。

0
Sander Steffann