Excelで作成しているデータに変更を加えたいことがあります。データ件数が5個とか10個ぐらいなら迷わず手動で加工します。50個ぐらいになると手動でやろうか、マクロを作成しようかと迷い始めます。数百個以上になったら、もうマクロを使うしかありません。
つい先日、Excelで9列×4000行のデータを3列×1万2000行に並べ替えました。単純なコピー・アンド・ペーストではできないのでマクロの出番です。この作業ができるマクロはすでに作成してありました。日経パソコン2006年9月25日号の森本家のワークシートです。
ずいぶん前に作成したマクロで、その後も何度か使っているので動作に問題はないはずです。9列×4000行のデータをいったん1列×3万6000行に変換して、その後3列×1万2000行に整形すればいいと高をくくっていました。Excel 2003では最大6万5536行のデータが扱えるので大丈夫だと思っていました。
ところがマクロを動かしてみると……いやーもう時間がかかるのなんのって、コーヒーを1杯飲んでも終わらない。トイレに行って戻ってきてもまだやっている。そのうち会議が始まる時間になったのでそのまま席を離れて戻ってみると、なんとパソコン自体がハングアップしていました。
運悪くハングアップにぶつかっただけかもしれませんが、これだけ時間がかかっては使い物になりません。同じワークシート上でひたすら行挿入を繰り返すマクロなので動きが遅かったようです。しかも1行のデータとして1本の原稿が入っているというかなり大きなデータだったので処理が重かったようです。
使えるはずのマクロが役に立たないとなると、一から作り直すしかありません。普段、Excelのマクロを作成するときは森本家のワークシートのネタとして使えるように汎用性を考えるのですが、もうそんなことを考える余裕はありません。動きが遅い原因になっていそうなExcelの行挿はやめて、元のデータを別のワークシート上に整形しながら出力するマクロにしました。その結果、あっけないほど簡単に作業は終了しました。
汎用性を無視して作成したマクロですが、せっかっく作ったので何かの機会に紹介したいと考えています。