【エクセルVBA】隣り合ったセルの値が同じだったら結合(列方向)

EXCEL

エクセルVBAを勉強中のシバマメです!

エクセルVBA、とっても便利です。

手間のかかることが一気にできちゃいます。

下の様な表があった場合。

人に見せるために、セルを結合したい場合があると思います。

隣り合ったセルの値が同じ時に、セルを結合して一つに見せたい。

そんな時に、下の簡単なコードで実現できちゃいます。

あまり、需要ないかもしれませんが…

例え1000行あろうと、あっという間です。

手作業だと数十分、数時間かかるかも。

でも、VBAなら、こんな短いとコードだけです。

そのうえ、簡単な内容です。

Sub Yokoketugou()

    With Application ' 警告を非表示に
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With

    Dim maxCol As Long
    Dim maxRow As Long
    Dim i As Long
    Dim j As Long
   
        maxRow = Cells(Rows.Count, 1).End(xlUp).Row
        maxCol = Cells(1, Columns.Count).End(xlToLeft).Column
   
        For j = 1 To maxRow
            For i = maxCol To 1 Step -1
                If Cells(j, i).Value = Cells(j, i + 1) Then
                    Range(Cells(j, i), Cells(j, i + 1)).Merge
                End If
            Next i
        Next j
       
    With Application ' 警告を表示に戻しておきます。
        .DisplayAlerts = True
        .ScreenUpdating = True
    End With
       
End Sub

簡単にコードの説明

  • 3〜6 警告非表示です。これをしとかないと、毎回確認とかされてしまいます。
  • 8〜11 変数の設定です。変数名の付け方は、ルールに従いましょう。
  • 13〜14 最終列と最終行の取得。
  • 15〜21 ここで、処理です。隣り合うセルの中身が同じ場合は、結合します。
  • 23〜26 警告非表示にしたのを戻しておきます。

使い方

  1. 下記のコードを個人用マクロブックに保存しましょう。
    個人用マクロブック作成方法
  2. 対象のエクセル表を開いた状態でマクロを実行します。
  3. F5 or ▶ボタンで実行

実行すると↓のようになります。

シバマメのラインスタンプ販売中です!

↓よろしければクリックお願いします🌼
ブログランキング・にほんブログ村へにほんブログ村






コメント

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