名簿管理ツールなどから出力したCSVファイルなどをExcelで整形して印刷したい場合があります。このとき、同じ項目が連続ですべて表記され並んでいると、非常に読みづらいですね。そこで、連続した値を結合して読みやすい表に整形するプログラムを作ってみます。

整形前(左)同じ部署名が連続で並んでいて見づらい。整形後(右)同じ部署名ならセルを結合して見やすく
整形前(左)同じ部署名が連続で並んでいて見づらい。整形後(右)同じ部署名ならセルを結合して見やすく
[画像のクリックで拡大表示]

 今回のプログラムは、上下に隣り合うセルが同一の値(文字列)ならば、セルを結合するというものです。名簿の数が少なければ、マウスでセルを選択して「セルの結合」ボタンを数回押すば良いのですが、数が多かったり毎週同じような作業をする場合には、自動化した方が楽でしょう。

【使い方】

 以下のプログラムを、なでしこエディタに貼りつけて保存します。そして、セルの結合を実行したいExcelファイルを同じフォルダに「sample.xls」という名前で保存します。そして、なでしこエディタの実行ボタンをクリックしてください。

 すると、Excelが起動して、「sample.xls」を読み込み、連続でセルを結合し、「結果.xls」という名前で処理結果を保存します。

 名簿の雛形を用意したので練習してみましょう。「sample.xls」はこちらからダウンロードしてください。

【プログラム】

#-----------------------------------------------------------------------
# 上下に隣接するセルを結合するプログラム
#-----------------------------------------------------------------------
対象ファイル=「{母艦パス}sample.xls」
保存先=「{母艦パス}結果.xls」
検索列名=「A」#列名
検索開始行=2
#-----------------------------------------------------------------------
エクセル起動。
対象ファイルをエクセル開く。
前回値=空。
行番号=検索開始行。
オンの間
  値=「{検索列名}{行番号}」のエクセルセル取得。
  もし、値が空ならば、抜ける。
  もし(値=前回値)ならば
    「{検索列名}{行番号}」へ空をエクセルセル設定。#警告回避のため。
    「{検索列名}{行番号}:{検索列名}{行番号-1}」をエクセル選択。
    エクセル選択範囲マージ。
  前回値=値。
  行番号=行番号+1
保存先へエクセル保存。
「マージ完了しました」と言う。
終わる。
#-----------------------------------------------------------------------

(注意点)保存先のExcelファイルを開いたまま実行すると保存に失敗しますので、Excelファイルは閉じた状態で実行してください。