Excelで扱うCSVファイル

表示形式を設定する

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
「001」などのデータは、セルに代入すると「1」になってしまいます。そうならないためには、セルに表示形式を設定します。
講師:
09:07

字幕

このレッスンではCSV データを読み込むときに表示形式を設定するという解説をします。まず このチャプターで使うテキストファイルを準備しておきましょう。C ドライブに Work というフォルダを作成しチャプター2の Sample.txtSample.csvData.csv を保存してください尚 このレッスンでは Data.csv を使います。この Data.csv の中にはこのようなデータが入力されています。左から日付、文字列、数字というデータがカンマで区切られています。そして一番右の数字には001、002といった具合に数字の先頭に0がついています。このようなcsvのデータをもしダブルクリックしてブックとして開くとエクセルはデータをセルに代入する時に先頭の0を削除してしまいます。これはエクセルの仕様です。ある意味仕方ありません。しかしこうした頭の0先頭の0が消えてしまっては 困る時があります。そんな時はCSVのデータをブックとして扱うのではなく、テキストファイルとして扱ってやればいいんです。CSV のデータをテキストファイルとして扱いセルに代入する考え方をおさらいしておきましょう。VBA でテキストファイルを扱う時はまずファイルを開きます。 これには Open ステイトメントを使います。ファイルからデータを読み込むのでFor の後ろには Input を指定します。こうして開いたファイルから1行分のデータを読み込みます。このとき使うのがLine Input ステイトメントです。この書き方は1番のファイルから1行分のデータを読み込み変数バッファに格納する そういう命令です。この時 使用する変数は必ず文字列型でなけれはいけません。この読み込んだ1行分のデータはカンマで区切られています。したがって それを Split 関数で分割します。Split 関数は配列を返します。したがってその配列を受け取れるのはバリアント型の変数です。ここでは temp としました。バリアント型変数は配列を受け取ると自分自身をパッと配列に変えてしまいます。したがってその配列となったバリアント型変数の各部屋をそれぞれの列に代入していきます。この一連の流れを Do Loop で繰り返します。Do Loop の条件はLine Input で読み取りポイントがeof に達するまでeof に達していない間読み込みを続けるということです。Do Loop が終了したら開いたファイルを閉じます。 閉じる時には close という命令を使用します。このように VBA でCSV のデータを扱うのですが先ほども言ったようにエクセルはセルに 001 と入力しエンターキーを押すと1となるように作られています。これは仕方のない事です。では セルに 001という文字を代入するにはどうしたらいいんでしょう。そのためには001を代入する前にそのセルに文字列の表示形式を設定するしか手はありません。したがってマクロでやる時も考え方は一緒です。配列のデータをセルに代入する前に表示形式を設定してやります。VBA でセルの表示形式を設定するには表示形式を設定したいセルのNumberFormat プロパティに書式記号を設定します。例えば この場合セルに3桁カンマの表示形式が設定されます。あるいは @マークを指定するとこのセルの表示形式が文字列に設定されます。今回はこれを使います。先ほどの CSV データをセルに代入する考え方これを VBA のコードに表すとこのようになります。Cells (i, 1) = tmp (0)と書かれたこの3行で配列データをa 列、b 列、c 列に代入しています。この部分だけを取り出して考えてみましょう。 ここでは c 列に代入する配列の2号室のデータここが 001、あるいは002という形でしたね。したがって c 列に代入する前にc 列の表示形式を文字列に変更してやります。こうすることでCSV のデータに保存されている001、002というような数字の0が消えることはありません。また同様に 1-1といった形式が日付になってしまうことを防ぐ効果もあります。では このマクロの動作を確認してみましょう。チャプター2の Input.xslm を開きシート2を開いてください。尚、ブックを開いたときマクロが無効にされました。という旨のメッセージが表示されたらコンテンツの有効化ボタンをクリックするなどしてマクロを有効にしてください。もし、シート2に何かデータが入力されいたら列ごと選択をして右クリックの削除を実行してください。では VBE を起動します。開発タブを開き左端のビジュアルベーシックボタンをクリックします。実行すると VBE が起動されます。ここではモジュール5をダブルクリックしてください。オープンで Data.cvs を開きLine Input で一行ずつ読み込みます。読み込んだデータをSplit 関数で分割しています。 Split 関数は配列を返しますので変数 tmp はバリアント型で宣言しています。配列の2号室数値データが 00で始まっているので代入する前に表示形式を文字列に変更しています。コードの意味を理解して動作をイメージしたらマクロを実行してみましょう。サブユーザーフォームの実行ボタンをクリックすると001といったデータが 0が消されることなくセルに代入されました。こうした考え方を使うと例えば 条件分岐を使うなどしてある特定のデータだけをCSV からワークシートに読み込むなども可能です。CSV データはエクセルの形式ではありません。単なるテキストファイルです。したがって エクセルにお任せで開いてもらうのではなくこのようにテキストファイルとして扱ってやると様々なトラブルを回避することが出来ます。このレッスンではCSV データを読み込むときに表示形式を設定するという解説をしました。

Excelで扱うCSVファイル

CSV形式で保存されたテキストファイルをダブルクリックすると通常Excelが自動的に起動しますが、しばしばデータが正しく読み込まれないなどのトラブルが発生します。このコースでは必要な用途に合わせて適切にデータを読み込めるように、CSVファイルを扱ううえで必要な知識や読み込み・出力のさいの注意点などについて解説します。

2時間04分 (20 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 1,990
発売日:2014年03月05日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。