「結合セル」に殺意を覚えたら読む記事。VBAで一瞬にしてデータを「あるべき姿」に戻す方法

【業務効率化】VBA
スポンサーリンク

突然ですが、「セル結合」って、滅びればいいのにと思いませんか?

見た目は綺麗かもしれません。でも、並び替えはできないし、コピペはずれるし、フィルターも効かない。

これを作った人は、後の作業のことを考えてないの!?」と、モニターの前で発狂しかけた経験、私も500回くらいあります。

でも、しょうがないですよね。文句を言ってるだけではファイルは直りません

今回は、「セル結合を解除して、空白になった部分に上のデータを自動で埋める」コードを紹介します。

これを使えば、手作業でカチカチ解除してコピペしていた10~30分の作業が、わずか0.5秒で終わります。

【業務効率化】VBAの記事を見る

「ただ解除する」だけじゃダメなの?

Excelの「結合解除」ボタンを押すと、左上のデータだけが残り、他のセルは「空っぽ」になりますよね。

空っぽのままだと、結局データとして使い物になりません。

私たちがやりたいのはこれです。

  1. 結合をバラバラにする。
  2. 空っぽになったセルに、正しい値(上のセルの値)を入れる。

これを手動でやると面倒ですし、どこかでミスが起きますが、VBA(マクロ)なら一瞬です。

コピペで使える!「結合解除&穴埋め」マクロ

以下の「結合解除&穴埋め」コードを標準モジュールにコピペしてください。

Sub 結合解除と穴埋め()
    ' 選択した範囲の結合を解除して、空白を上の値で埋めるマクロ
    Dim rng As Range
   
    ' エラー回避:範囲が選択されていない場合は終了
    If TypeName(Selection) <> "Range" Then Exit Sub

    Application.ScreenUpdating = False ' 画面のチラツキ防止
   
    Set rng = Selection
   
    ' 1. 結合を解除する
    rng.UnMerge
   
    ' 2. 空白セル(元結合されていた部分)に数式を入れる
    On Error Resume Next ' 空白がない場合のエラー無視
    rng.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
   
    ' 3. 数式を「値」に変換して固定する
    rng.Value = rng.Value
   
    On Error GoTo 0
    Application.ScreenUpdating = True
   
    MsgBox "結合を解除してデータを整えました!", vbInformation
End Sub

使い方は簡単
①結合を解除したい範囲をマウスでぐわっと選択する。
②このマクロを実行する。
これだけで面倒な作業時間は確実に減ります!

補足:【R1C1形式とは】相対指定のルール

※興味がない方はスキップして大丈夫です。

R1C1形式は、行(Row)と列(Column)をどちらも数字で指定する方法です。 

普段使っているA1形式では、列をアルファベット(A, B, C…)で数えますが、R1C1形式では「何行目の、何列目」というように、すべて数値で位置を特定します。

今回のコードで使われている [ ](スクエアブラケット)は、現在のセルから見た相対的な位置(ズレ)を表します。

  • R[1]C:1行下、同じ列
  • R[-1]C:1行上、同じ列
  • RC[1]:同じ行、1列右
  • RC[-1]:同じ行、1列左

カッコの中にマイナスを入れると「上」や「左」へ戻り、プラスを入れると「下」や「右」へ進みます。

数字が入っていない(RCの直後に数字がない)場合は、現在と同じ位置を指します。

逆に「結合」したい時は?

データ処理の観点からは推奨しませんが、上司への提出資料やクライアントからの要望でどうしても結合が必要な場合もありますよね。

シンプルに「選択範囲を結合する(警告なし)」コードも置いておきます。

Sub 警告なしで結合()
    ' 選択範囲を強制的に結合する(データは左上のみ残る)
    Application.DisplayAlerts = False 
    Selection.Merge
    Application.DisplayAlerts = True
End Sub

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました