Hatena::ブログ(Diary)

SO NOTE そうのて (;^ω^) このページをアンテナに追加 RSSフィード Twitter

2010.03.31

ExcelでCSVファイルを簡単にインポートする方法

まず最初に、csvファイルってなーに?*1な方は、↓を参考にして下さい。


で、前置き。MS-OfficeインストールされてるPCの場合、意識的に関連付けを変えたりしていない限り、拡張子csvのファイルはExcelに関連付けられているので、csvファイルのアイコンは↓な感じだと思います。

f:id:so_blue:20100331002411p:image

csvファイルといっても、WikipediaやIT用語辞典にもある様に、所詮、区切り文字*2で区切られたテキストファイルでしかないので、テキストエディタで開くと↓な感じになってます。

f:id:so_blue:20100331001255p:image

ただ、これをアイコンダブルクリック、つまりはExcelで開いちゃうと...

f:id:so_blue:20100331002959p:image

あららら、なんかテキストエディタで開いたのと様子が違いますね。おかしい箇所を挙げると、

  • 店舗コードが日付になってしまっている
  • 商品コードの前ゼロが消えてしまっている

なんでこんな事になっちゃうかというと、Excelcsvファイルを普通*3に開くと、

  • 「1-1」みたいな文字列は日付と認識して、書式を日付にしてしまう
  • 前ゼロのついている値が数値のみで構成されている場合、数値だと解釈して前ゼロをカットしてしまう

こんな風に開かれては、Excelでおちおちcsvファイルの編集も出来ません。

そんな事ではまずいので、Excelの標準機能にあるcsvインポート機能を使う訳ですが、このインポート機能も使いにくいというか、結構面倒臭いんですね。試しにsample.csvcsvインポート機能で取り込む手順を説明してみます。Excelのverは2003ですが、他のverでもそれほど違いはありません。


データファイルの選択ダイアログの呼び出し

f:id:so_blue:20100331012545p:image

メニューの「データ - 外部データの取り込み - データの取り込み」をクリックします。

csvファイルの選択

f:id:so_blue:20100331014311p:image

ファイルの種類を「すべてのファイル」に変更*4し、対象ファイルを選択して「開く」ボタンをクリックします。

テキストファイルウィザード 1/3

f:id:so_blue:20100331014933p:image

「カンマやタブなどの〜」を選択し、「次へ」をクリックします。

テキストファイルウィザード 2/3

f:id:so_blue:20100331015608p:image

サンプルファイルの区切り文字はカンマなので、区切り文字は「カンマ」にチェックを入れて、「次へ」をクリックします。

テキストファイルウィザード 3/3

f:id:so_blue:20100331020245p:image

今回の場合、最低限、店舗コード列と商品コード列はデータ形式文字列として取り込む必要があるので、それぞれの列のデータ形式を「文字列」に設定し、「完了」をクリックします。

インポート開始セルを決める

f:id:so_blue:20100331020858p:image

インポート開始セルを指定します。選択したセルが左上端となりデータが取り込まれます。通常はA1セルを指定する事が多いと思います。

インポート完了

f:id:so_blue:20100331020854p:image

ようやくインポート完了です。今回の場合、店舗コード列と商品コード列のみデータ形式を指定して取り込むだけですんだので、この標準機能を使った方法でもそれほど面倒ではないですが、列数がもっと多かったり、インポートしないといけないファイルが多かったりすると、標準(推奨?)機能とはいえ非常に面倒です。かといって、横着してそのまま開くとおかしな書式が適用される恐れが…どうすればいいんだ!!ガッデム!!!!


という訳で

ようやく本題に入りますが、Excelcsvファイルを開く時に問題になるのが、余計な書式が適用される事による値の変更です。これをさせない様にするには、全て文字列として取り込んでしまう事です。これが一番間違いのない方法です。という訳でその手順です。

テキストエディタcsvファイルを開き、全文コピーする

f:id:so_blue:20100331223533p:image

メモ帳等のテキストエディタを起動し、対象のcsvファイルをウィンドウにドラッグ&ドロップ*5します。csvファイルを開いたら、Ctrl+Aで全文選択し、次にCtrl+Cでコピーします。ちなみに自分的には、csvファイルについては関連付けをテキストエディタにしちゃった方がいいと思ってます。仕事上、結構な頻度でcsvファイルを編集される方なら尚更関連付けを変更する事をおすすめします。csvファイルをExcelに関連付けてるとそのうち痛い目に遭うと思われます。

コピーした内容をExcelのシートに貼り付ける

f:id:so_blue:20100331223936p:image

Excelのファイルを開き、Ctrl+Vします。キャプチャ画像では少しわかりにくいですが、全行ともA列のセルに内容が全て貼り付けられています。

区切り位置指定ウィザードの呼び出し

f:id:so_blue:20100331224822p:image

A列ごと選択し、メニューの「データ - 区切り位置」をクリックします。

区切り位置指定ウィザード 1/3

f:id:so_blue:20100331231755p:image

csvインポート機能を使った時のウィザードとそっくりですね。この場合も「カンマやタブなどの〜」を選択し、「次へ」をクリックします。

区切り位置指定ウィザード 2/3

f:id:so_blue:20100331232830p:image

こちらも区切り文字「カンマ」にチェックを入れて「完了」をクリックします。ウィザードはまだ2/3ですが、終わらせてしまって構いません。

一旦、値を全て消去した後、全セルの書式を文字列にする

f:id:so_blue:20100331233701p:image

ウィザードを途中で終わらせたのでおかしな書式が適用されていますね。ただ、この段階ではこれで構いません。で、ひとまず、シート左上端の赤い部分をクリックして全セル選択状態にし、Deleteキーを押して全てのセルの値を消去します。

f:id:so_blue:20100331234411p:image

その後、赤い部分を右クリックして、コンテキストメニューの「セルの書式」を選択し、書式を「文字列」に設定します。

再度テキストエディタで開いた内容をコピペして完了

f:id:so_blue:20100331234745p:image

再度「テキストエディタcsvファイルを開き、全文コピーする」の要領で全文コピーし、シートのA1セルを選択した状態でCtrl+Vすれば取り込み完了です。お疲れ様でした(;^ω^)


この手順で取り込む事の利点

区切り文字情報が記憶されている為、Excelを落とさない限りは、以降、全セルの書式を文字列に設定→テキストエディタcsvファイルを開いてコピー→シートに貼り付け、とするだけでおかしな書式を適用される事無く、csvファイルをシート上に取り込む事が可能です。複数ファイルをExcelのシート上に取り込まないといけない場合、少ない手順で確実に取り込む事が出来るので非常に有効です。

長くなりましたが、頻繁にcsvファイルをExcelに取り込む必要がある仕事をされてる方で、Excel標準のcsvインポート機能で取り込むのが面倒だなぁって感じてた方は是非お試し下さい。

*1:ってな方がそもそもこのエントリを見てるとは思えませんが...(;^ω^)

*2:カンマやタブ文字が一般的ですね。

*3:後述のcsvインポート機能使えば適切なフォーマットで開く事も出来ます。

*4:でないとcsvファイルが表示されません。

*5テキストエディタで開けばいいだけなので、もちろん他の方法でもOKです

サンクス!!サンクス!! 2011/07/13 21:56 できましたー! 大したデータ量でなくても、取り込んで1つのページに表示できないとされてたのですが、メモ帳に一旦コピーしたら簡単に出来ました。感激です。ありがとう!!

so_blueso_blue 2011/07/13 23:22 お役に立てて幸いです( ^ω^)

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/so_blue/20100331/1270047670