大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、同じ値や空白をみつけてセル結合する方法について、ご紹介します。セル結合は見た目を整えるのに便利な機能です。ただ、セル結合する量が多くなってくると大変ですので、VBAで自動化していきましょう。

はじめに

この記事では、同じ値をセル結合する方法について、ご紹介します。

セル結合は資料の見た目をきれいにすることができる便利な機能です。

ただ、一つずつセル結合するのは大変ですので、VBAで自動化すれば、効率化になります。

セル結合を自動化する方法をマスターしていきましょう。

では、同じ値をセル結合する方法について、解説していきます。

この記事で紹介すること

  • 同じ値をセル結合する方法

目次から見たい項目へ移動すると便利ですよ。

目次

同じ値をセル結合する

同じ値をセル結合してみます。

やりたいこと

やりたいことは、同じ値をセル結合したい、ということです。

イメージはこんな感じです。

同じ値をセル結合したい

やりたいことは、同じ値をセル結合したい、ということです

では、同じ値をセル結合していきます。

VBAコード

とりあえず、VBAコードをみてみましょう。

手順は、

  • 作業列に値を転記
  • 重複を削除
  • 重複しないリストと一致する値を探す
  • 一致する値のセル範囲を保存
  • 2回目以降のセル範囲はUnionでくっつけていく
  • セル範囲を結合する
  • 中央に揃える
  • 作業列をクリア

という流れです。

Sub TEST1()
    
    '作業列に値を貼り付け
    Range("C2:C9").Value = Range("A2:A9").Value
    '重複を削除
    Range("C2:C9").RemoveDuplicates Columns:=1
    
    Dim A
    
    '重複しないリストをループ
    For j = 2 To 5
        Flag = 0 'フラグをオフ
        A = Empty '初期値を入力
        '結合するリストをループ
        For i = 1 To 9
            '重複しないリストと一致した場合
            If Cells(i, "A") = Cells(j, "C") Then
                '最初の場合
                If IsEmpty(A) Then
                    '範囲を保存
                    Set A = Cells(i, "A")
                '2回目以降
                Else
                    '範囲を追加で保存
                    Set A = Union(A, Cells(i, "A"))
                End If
            End If
        Next
        Application.DisplayAlerts = False '警告を非表示
        '結合する
        A.Merge
        A.VerticalAlignment = xlCenter '上下中央揃え
        A.HorizontalAlignment = xlCenter '左右中央揃え
        Application.DisplayAlerts = True '警告を表示
    Next
    
    '作業列をクリア
    Range("C2:C9").Clear
    
End Sub

同じ値がある表を用意します。

同じ値がある表を用意

同じ値がある表を用意しました

実行手順をひとつずつ確認しながら、みていきましょう。

実行手順

実行手順です。

作業列に値を転記します。

作業列に値を転記

作業列に値を転記します

重複を削除します。

重複を削除

重複を削除します

重複しないリストをループして結合する表に一致する値があるかをループしていきます。

一致する値があるかをループする

重複しないリストをループして結合する表に一致する値があるかをループしていきます

一致するセル範囲を保存していきます。

一致したらセル範囲を保存

一致する値があったらセル範囲を保存します。

一致する値があったらセル範囲を保存します

2回目以降に一致する値があったらUnionでセル範囲をくっつけていきます。

2回目以降に一致する値があったらUnionでセル範囲をくっつけていきます

こんな感じで、重複しないリストに一致するセル範囲を保存していきます。

最後までループしたら、セルを結合して中央揃えにします。

セルを結合して中央にする

一致する値を探し終わったら、作成したセル範囲を結合します。

一致する値を探し終わったら、作成したセル範囲を結合します

上下と左右の中央揃えをします。

上下と左右の中央揃えをします

同じように他の値でもループしていって、結合していきます。

他の値もループしていく

同じように他の値でもループしていって、結合していきます

最後に作業列をクリアします。

作業列をクリア

最後に作業列をクリアします

これで、同じ値をセル結合できます。

同じ値をセル結合できた

同じ値をセル結合できました

同じ値をセル結合できました。

空白をみつけてセル結合する

空白をみつけてセル結合することもできます。

やりたいこと

やりたいことは、空白をみつけてセル結合したい、ということです。

イメージは、こんな感じです。

空白をみつけてセル結合したい

やりたいことは、空白をみつけてセル結合したい、ということです

では、空白をみつけてセル結合してみます。

VBAコード

VBAコードからみてみましょう。

手順は、

  • IF関数で同じ値を作成して、値に変換
  • 結合するリストに転記
  • 重複を削除
  • 重複しないリストと一致する値を探す
  • 一致する値のセル範囲を保存
  • 2回目以降のセル範囲はUnionでくっつけていく
  • セル範囲を結合する
  • 中央に揃える
  • 作業列をクリア

という流れです。

最初に「IF関数」で同じ値を作成するところを追加しています。

Sub TEST2()
    
    '同じ値を作成
    Range("C2:C9") = "=IF(A2<>"""",A2,C1)"
    Range("C2:C9").Value = Range("C2:C9").Value '値に変換
    
    '結合するリストに転記
    Range("A2:A9").Value = Range("C2:C9").Value
    
    '作業列の重複を削除
    Range("C2:C9").RemoveDuplicates Columns:=1
    
    Dim A
    
    '重複しないリストをループ
    For j = 2 To 5
        Flag = 0 'フラグをオフ
        A = Empty '初期値を入力
        '結合するリストをループ
        For i = 1 To 9
            '重複しないリストと一致した場合
            If Cells(i, "A") = Cells(j, "C") Then
                '最初の場合
                If IsEmpty(A) Then
                    '範囲を保存
                    Set A = Cells(i, "A")
                '2回目以降
                Else
                    '範囲を追加で保存
                    Set A = Union(A, Cells(i, "A"))
                End If
            End If
        Next
        Application.DisplayAlerts = False '警告を非表示
        '結合する
        A.Merge
        A.VerticalAlignment = xlCenter '上下中央揃え
        A.HorizontalAlignment = xlCenter '左右中央揃え
        Application.DisplayAlerts = True '警告を表示
    Next
    
    '作業列をクリア
    Range("C2:C9").Clear
    
End Sub

空白のある表を用意します。

空白のある表

空白のある表を用意しました

では、実行手順をひとつずつみていきましょう。

実行手順

実行手順です。

IF関数で同じ値を作成します。

「IF関数」で同じ値を作成

IF関数で同じ値を作成します

値を値に貼り付けて、数式を値に変換します。

値を値に貼り付けて、数式を値に変換します

結合したいリストに貼り付けます。

結合するリストに転記

結合したいリストに貼り付けます

重複を削除します。

重複を削除

重複を削除します

重複しないリストをループして結合する表に一致する値があるかをループしていきます。

一致する値を探す

重複しないリストをループして結合する表に一致する値があるかをループしていきます

重複しないリストと一致する値を探して、セル範囲を保存していきます。

セル範囲を保存する

一致する値があったらセル範囲を保存します。

一致する値があったらセル範囲を保存します

2回目以降に一致する値があったらUnionでセル範囲をくっつけていきます。

2回目以降に一致する値があったらUnionでセル範囲をくっつけていきます

最後までループしたら、セルを結合して、中央揃えします。

セルを結合して中央にする

一致する値を探し終わったら、作成したセル範囲を結合します。

一致する値を探し終わったら、作成したセル範囲を結合します

上下と左右の中央揃えをします。

上下と左右の中央揃えをします

同じように他の値でもループしていって、結合していきます。

他の値でもループしていく

同じように他の値でもループしていって、結合していきます

最後に作業列をクリアします。

作業列をクリア

最後に作業列をクリアします

これで、空白セルをみつけてセル結合できます。

空白セルをみつけてセル結合できた

空白セルをみつけてセル結合できました

空白セルをみつけてセル結合できました。

セル結合がすでに含まれている場合

セル結合が「すでに含まれている」場合でも、同じVBAコードでセル結合できます。

ちょっとやってみます。

一部のセルにすでに、セル結合がある表を用意します。

一部のセルにセル結合がある表

一部のセルにすでに、セル結合がある表を用意しました

VBAコードを実行してみます。

空白セルをみつけてセル結合できた

同じVBAコードで、セル結合が含まれていても、空白セルをみつけてセル結合できました

同じVBAコードで、セル結合が含まれていても、空白セルをみつけてセル結合できました。

こんな感じで、セル結合を自動化できます。

セル結合を使いこなしていきましょう。

おわりに

この記事では、同じ値をセル結合する方法について、ご紹介しました。

セル結合は資料の見た目をきれいにすることができる便利な機能です。

ただ、一つずつセル結合するのは大変ですので、VBAで自動化すれば、効率化になります。

セル結合を自動化する方法をマスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す