シーゴの Excel 研究室

タイトル変更しました (旧称:今日を乗り切るExcel研究所)

Excel で CSV ファイルを「0落ち」や「文字化け」なしで開きたい

今回は、Excel で CSV ファイルを開くと起きる「0落ち」や「文字化け」の問題に対処する手段の一つとして、「クエリ エディター」を使う方法を紹介します。 また関連して、Excel で CSV ファイルの再読み込みをするマクロを作成します。

f:id:shego:20180211154053p:plain

Excel の CSV 問題とは

Excel で CSV ファイルを開くと、いろいろと問題が起きがちなのですが、一番よく遭遇するのはいわゆる「0落ち(ゼロ落ち)」と「文字化け」でしょう。

「0落ち」は、「00123」のような0詰め番号の 0 が無くなり、ただの「123」になってしまう現象で、Excel がデータを数字列を数値に変換するために起こります。 これは0詰だけの問題ではなく、ほかにも勝手に数値に変換されるデータに、カッコ付き数字((123))、金額(\123)、全角数字(123)、日付などがあります。 もっと言えば、「セルの書式設定」の「表示形式」にあるパターンに当てはまるデータはどれも数値変換で壊される可能性があります。

もう一つの「文字化け」は、日本語の文字がめちゃくちゃな読めない文字となって表示されることです。これは、CSVのテキストエンコーディングが、標準的な「UTF-8」となっているのに、 Excel が「シフトJIS」と読み違えるために起こる現象です。 UTF-8 の問題については別記事に取り上げました。

www.shegolab.jp

これらの問題は本当に余計で迷惑なことで、全国 Excel ユーザイライラ度ランキンクトップ3以内には入っているのではないでしょうか。

続きを読む

シフトJISのテキストファイルをUTF-8に変換するバッチ

今回の記事では、テキストファイルのエンコーディングを、シフト JIS から BOM あり/なしの UTF-8 に変換するバッチプログラムを紹介します。

内容が Excel から少し離れますが、次の記事で CSV ファイルの文字化け問題を取り上げる予定で、それに関連して Windows でのテキストエンコーディングの話題を本記事として切り離し、先行公開するものです。

【本記事のバッチは非推奨です】
改善された最新版の UTF-8 変換バッチを公開しました。
本記事のバッチは非推奨とさせていただきます。
本記事の一部バッチにあった不具合を解消したうえ、信頼性、使い勝手もよくなっていますので、今後はこちらのご利用をよろしくお願いいたします。 www.shegolab.jp  

【更新 2018/05/12】 バッチプログラムを一部修正しました。Windows 10 の UTF-8 サポートへの対応です。(追記参照)

Windows のテキストエンコーディング事情

そもそもなぜ Windows でよく文字化けするのでしょうか。

ちゃんと説明すると長くなるのですが、一言でいえばそれは Windows が、ヘンクツだからです。
もう少し詳しく説明すると Windows を作った世界的企業である某社の中の人たちが、ヘンクツだからです。

現在、インターネットやコンピュータで主流となっているテキストファイルのエンコーディング方式は、国際標準規格の「UTF-8」と呼ばれているものです。
これにより、テキストファイルは国や言語、システムの種類によらずに交換できるようになっています。

しかしヘンクツな Windows 環境では、旧来の「シフトJIS(Shift_JIS)」という日本語専用の方式をかたくなに使い続けており、世界標準の UTF-8 のファイルを開いても文字化けして読めないのです。

もちろん、国際的 OS である Windows さんのほうでもだいぶ前から UTF-8 に対応してはいるのですが、これまたヘンクツなことに、それは「BOM 付き UTF-8」という、非常に不可解な方式で、言わば「オレオレ UTF-8 」とでも呼べるものなのです。
このオレオレ UTF-8 のファイルは、他システムとのやり取りするとなると、かえって不具合を起こす原因となるという困りものです。

続きを読む

Excel の画像をファイルに保存したい

今回は、シートに貼り付けた画像をファイルに保存する方法について調べます。
また、それを自動化するマクロを作成します。

f:id:shego:20171203232642p:plain

貼り付け画像をファイルに保存できない

Excelシートには画像も貼り付けられるので、スクラップブック的な使い方もあります。

パソコン関連のブログなど書いていると、ウィンドウ画面のキャプチャ画像を沢山取るわけですが、それらを Excel シートに貼ってまとめておいたりします。 Excel には正にそのための「スナップショット」というおベンリ機能があって重宝します。

しかし、せっかく集めたのキャプチャを画像ファイルとして書き出す機能がありません。 仕方ないので、いったん「ペイント」にコピー&ペーストして画像ファイルに保存するのですが、これがまた使えないソフトです。

ペイントはウィンドウを一つしか開けないので、画像の余白をギリギリまでトリミングしなおしたり、ファイル名変更前に Ctrl+S して前の画像を上書き保存してしまったりで、「余計な仕事をやらされている感」が募ります。

Word や PowerPoint なら「図として保存」で画像をファイルに保存できるのに、Excel にそれが無いのは一体何の嫌がらせでしょうか。

続きを読む

Excel セルの日付を文字列に変換したい

日付をそのままの文字列に変換する手順を検討し、それを自動化するそのマクロを作成します。

f:id:shego:20171123223825p:plain

日付が数値になってしまう

Excel が扱う日付データの実体は、単なる数値です。

セルに日付っぽいテキストを入力すると、日付データとして扱ってくれますが、このときセルの値としては勝手に数値(シリアル値)に変換されます。

それが日付に見えているのはセルの書式設定でやっていることです。 セルの表示形式に日付の書式が設定されていると、数値を基準日からの経過日数とみなして年月日や時分秒に換算し、日付形式で表示されるようになっています。

何かしてそれが外れたときに、元の数値が裸で現れることになります。

日付を見た目そのままの日付テキストとして扱いたい時には、それをなんとかして文字列データに変換しなければなりません。

続きを読む

同じ値のセルを結合したい

同じ値が連続しているセル範囲の結合と解除をする方法を検討します。また、それを一括で行うマクロを作成します。

セル結合の誘惑

シートに、同じ値が連続しているセル領域があります。

ここではそのようなセル領域を「連続セル」と呼ぶことにします。

人にはどうも、連続セルを一つのセルに結合したくなる強い習性があるようです。

確かに、表形式の列などで、冗長な連続セルを一つに結合すれば、体裁として構成が分かり易くなります。

一方、セルを結合されてしまうと、並べ替えや CSV 出力など、データとしてシートを使いたい時に困ることになるといった弊害があることも、今ではよく知られているところです。

見た目はきれいでも、それがために強いられる余分で非効率な作業にはイライラが募ります。

イライラの原因は、連続セルの結合と解除を一括でやる効率的な方法が無いからで、使う方だけでなく、作る方でも相当なイライラとなっています。

逆に言えば、この手間さえ軽減できれば、結合セルもそんなに悪いものではありません。

問題は、連続セルの結合そのものが悪いのではなく、それを一括で手軽に行う手段が Excel の機能として提供されないことにあります。

続きを読む