営業した日付とその日の売上を記録する、測定した日付とそのときの体重を記録する。そんな方針でデータを記録していくことはよくあります。データとして不備がなくても、パソコンで処理しようとすると不便なことがあります。そこで抜け落ちている日付を自動的に埋めてくれるワークシートを作りました。

 データの例が図1左です。よく見ていただくと3日と4日、10日と11日がありません。もちろんこの程度なら手作業でも大丈夫ですが大きなデータだと大変です。日経パソコンのホームページからダウンロードできるファイルを使って、A2セルを選択した状態でキーボードから[Ctrl]と[Shift]と[J]を同時に押してください。すると図1右のように抜けていた日付の部分に行が挿入され、その日付が現れます。

図1 日付をよく見ると3~4日、10~11日のデータがない。A2セルを選択した状態で[Ctrl]+[Shift]+[J]を押すと、抜け落ちていた日付が曜日表示も含めて現れた。後々の処理を考えると日付に抜けのないデータの方が扱いやすい

データ「寄せ」に便利

 図1のように、測定しなかった日を飛ばして記録していてもExcelで集計したり、グラフ化するときに問題を回避するテクニックはいくらでもあります。ところが別のデータとして血圧や運動量、天候、気温、などを記録していた場合はどうでしょう。データによって抜けている日が違っていると1つの表に寄せるのはちょっと面倒です。このマクロを使ってすべてのデータを連続した日付の表にしておけば簡単に貼り合わせるだけで1つの表にできます。

 わずかのマクロですから見ていきましょう(図2)。「’」(アポストロフィー)で始まる薄い色の行はコメントですからマクロの動作には影響がありません。マクロを読みやすいようにコメントを付けましたが、追加でいくつか説明しておきましょう。

図2 マクロはたったこれだけ。色の薄い文字はプログラムの働きを説明したコメントなので動作には関係ない。上下のセルの値の差が1よりも大きいときは間に1行挿入して「上のセルの値+1」を入力している。セルの色や書式などは行挿入すると自動的に引き継がれる

 1行目の「Sub 連続値()」はこのマクロが「連続値」という名前だということを表します。一番下の「End Sub」までが「連続値」マクロです。

 ダウンロードしていただくファイルではこのマクロをキーボードの[Ctrl]+[Shift]+[J]に割り当ててあります。「連続値」というマクロ名を指定して実行することもできます。

 Excelで先にこのファイルを開いておけば、お手持ちのデータにも[Ctrl]+[Shift]+[J]を押すことで抜けた日付を埋められます。ただし万一、データが壊れても困らないようにオリジナルはコピーしてお試しください。

 このマクロはデータの日付が「下に行くほど新しい」という前提で作ってあります。順序が逆になっていたり同じ日付のデータが複数個混じっている場合はそこで停止します。「If」で始まる行が2つあり、1つ目がこの停止させる機能です。2つ目の「If」で始まる行とその下2行のプログラムで行を挿入して、日付を埋めています。セルの書式などは行を挿入したときに自動的にコピーされます。

 もし「下に行くほど古い」データに適用したい場合は、Excelの機能を使ってあらかじめデータを昇順に並べ替えてからマクロを実行し、その後で降順に並べ替えればいいでしょう。もちろんマクロを改造する手もあります。

 このマクロは日付以外のデータにも使えます。飛び飛びの整数を元に、行を挿入しながら1ずつ増える連続数値に変えているだけだからです。受験番号でも商品番号でも、元が連続した整数ならば応用できます。

サンプルファイルの公開は終了しました。