【VBA】うんざりする結合セルから解放!MergeAreaの使い方

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

こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!

毎日、誰かが作った「見た目だけ綺麗なExcel」と戦って消耗していませんか?

なんでここ結合してんの…!!」と心の中で叫び、並び替えもフィルターもできずに手作業で修正を繰り返す。そんな地獄のような作業、もう終わりにしましょう。

今日は、Excel VBAで結合セルを自在に操るための「MergeArea」について解説します。

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

結合セルは「敵」ですが、VBAならコントロールできる

正直、Excelでの「セルの結合」は、データ管理の観点から言えば悪です。

しかし、慣れていない人さんや新入社員、ときには取引先が作ったデータは、見栄えのために結合されたものが山のように存在します。これを避けては通れません。

せっかくVBAで自動化しても、

「結合セルの値を取得しようとしたら、空白が返ってきた」

なんてこともよくありますよね。

例えば、A1からA3が結合されているとき、VBAで Range(“A2”).Value を取得しようとしても、結果は「空」です。Excelは結合されたセルの左上のセル(A1)にしか値を持っていないからです。

ここで役立つのが今回のテーマ、 MergeArea(マージエリア) です。

MergeAreaとは?

簡単に言うと、「そのセルが結合されている範囲全体」を教えてくれるプロパティです。

これを使えば、「A2セルが含まれている結合セルの、一番左上の値を持ってきて!」という命令が可能になります。

①結合セルの値を正しく取得するコード

このコードで、「選択したセルが結合されていても、いなくても、確実に値を拾う」ことができます。

Sub GetMergedValue()
    ' 選択しているセルの値を正しく取得してメッセージで表示する
   
    Dim targetCell As Range
    Dim realValue As Variant
   
    ' 現在選択しているセルをセット
    Set targetCell = ActiveCell
   
    ' 【ポイント】MergeArea.Cells(1, 1)を使う
    realValue = targetCell.MergeArea.Cells(1, 1).Value
   
    MsgBox "取得した値: " & realValue
   
End Sub

コード解説

targetCell.MergeArea は、そのセルが結合されていれば「結合範囲全体」を、結合されていなければ「そのセル単体」を返します。

その範囲の .Cells(1, 1) (つまり1行目の1列目=左上)を指定することで、結合の有無に関わらず、常にデータが入っているセルを狙い撃ちできます。

②結合範囲全体を操作する

「結合セルの一部だけ色を変えたいのにできない!」という時も、MergeAreaを使えば可能です。

Sub ColorMergedArea()
    ' A1セルが含まれる結合範囲全体を黄色にする
   
    Dim rng As Range
    Set rng = Range("A1")
   
    ' MergeAreaに対して色を指定すると、結合全体に反映される
    rng.MergeArea.Interior.Color = vbYellow
   
    ' 結合範囲のアドレス(番地)をイミディエイトウィンドウに表示
    Debug.Print "結合範囲は: " & rng.MergeArea.Address
   
End Sub

最後に

セル結合しまくったフォーマットを押し付けてくる環境は、自分一人だけではどうすることもできないかもしれません。

でも、文句を言っていても何も変わりません。スキルを身につけて、せめて自分が関わる分だけでも対処していきましょう。

今回は値取得と指定色で色付けの2つを紹介しました。
もし結合セルに対して追加で何かしたい処理があれば、これらをベースにさらに処理を追加していけばOKです。

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


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

この記事を書いた人
ぐー

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

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

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

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

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

コメント

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