読者です 読者をやめる 読者になる 読者になる

エクセルでCSV開いたら不具合が起きてた話

表題の通りなんですが、私はこの現象について全く知らなかったので、

当初はデータを吐いてる元々の業者の問題だと思ってたのね。

 

うちの会社には、他社ががほとんどやってる業務の窓口みたいなことして

ちょっと手間賃もらってる部署があるんですがそこの貰えるお金の話なんですけどね。

毎月勝手に見てってよ、必要ならダウンロードしてよ、形式で

テキストとCSV(同じ内容)が投げてある。インターネッツ上にです。

ログインして拾いに行くんですね。

そもそも一括ダウンロードせんでも1日分のログを1ページで毎日見に行ったら

1行づつ拾えるんですが、そんなページ毎日見に行っていちいち印刷するのが

結構面倒くさいので専らダウンロードしておりました。

で、このテキスト形式が曲者で、

○○ ×× yy/mm/dd

△△ □□ yy/mm/dd

というデータがあったとして、

<<CSV形式>>

○○,××,,yy/mm/dd,

△△,□□,,yy/mm/dd,

 

まあ無難にこんな感じ。

<<テキスト形式>>

○○××yy/mm/dd△△□□…

改行なし、区切り記号なんもなし…ふざけんな。

 

上記のような事情でCSVを安易に選択しておったわけなんですが、

そこに何の件のお金かっていう識別コードが入ってるんです。

各行に付き1つ、上の例でいうと○○とか△△の部分ですね。

拾ってきたデータを何気なくEXCELで開く。

識別番号は発行会社が勝手につけてるので詳細は不明です。

とりあえずどうやら

謎の2桁数字(通し番号?)+うちの企業コード+顧客番号10桁の内の左から8桁位+00

っていう、なんか片手落ちの番号の付け方だったんですよね。

企業コード(向こうが勝手に発行している)は別にいいんですけど、

顧客コードは明らかに100番単位の10桁とかではなく、

しっかりバラバラの数字で下二桁入ってるんです。

仮にさいごの二桁以外同じコードの顧客を持ってたら

これ同じ番号になっちゃうよね、区別つかないよねっていう。

 

で、どうも意味分かんないよねって思ってたある日っていうか昨日、

インターネットで当日見れるデータの方は、

下二桁が必ず00なんて意味わからん番号ではないことに気付きました。

 

ピンときたのでぐぐったらEXCELについて以下のようなページを発見

Excel のセルに桁数の多い数字を入力すると最後の桁がゼロに変更される

まんまじゃねーか。

というかあの、整数型?integer?long?とかああいう感じの?

はるか昔に全然違うソフトでやったけどそういう感じの話しよね。

 

なんですが私はEXCEL2010でレイアウト変更になって結構混乱したクチでして

ひどくあっさりとインポート機能は消し去られたと信じ混んでました。

昨日言われて調べる迄、CSVを開くときには

[ファイルを開く]しか使っておらんかったので、

データ形式が変更できない=ゼロに変更され放題という

憂き目に会っていたわけです。

 

なんだかんだで解決したので備忘録です。

因みに昨日の会話でちらっと出た、

データの頭のゼロとかも消しちゃうよね的な奴は

関数で無理やり別セルに正データ作っちゃうクチです。

Countで文字数カウント、正しい桁との差を拾う、足りない分だけ0を付加、

でもすごく長い関数になっちゃうネー。

でも私が作ったファイルは1セルに5行に渡る関数とかよく入っているのです