Excelでセル結合をすると値が消えることがある
Excelで2つ以上セルに値が入っている状態でセル結合をした場合、一つのセルの値だけが残され、他のセルの値は削除されてしまいます。
Wordでは作成した表の中のセルを結合した際は値がすべて反映されています。
この挙動の違いはどこから来るのかわかりませんが、Excelで作業する際はセルの値をすべて残す操作ができる方が便利に感じたので、VBAを使用して解決する方法を考えてみました。
すべてのセルの内容を残してセル結合をするVBAコード
今回作成したコードは1列の中の選択範囲に入っているセルの内容をすべて一番上のセルに移し、かつセルの結合を実行するものになります。
ショートカットを割り振って実行させると操作も楽になります。
VBAコードにショートカットを割り振る方法はこちらを参考にしてください。
Sub 元のセルの文字を残してセル同士を結合する()
Dim x
Dim i As Long
x = Cells(Selection.Row, Selection.Column).Value
For i = 1 To Selection.Rows.Count - 1
x = x & vbCrLf & Cells(Selection.Row + i, Selection.Column)
Cells(Selection.Row + i, Selection.Column) = “” ’結合するなら消さなくても問題ないが、結合しない場合はこの操作が必要
Next i
Cells(Selection.Row, Selection.Column).Value = x
Application.DisplayAlerts = False ’アラームを出ないようにする
Range(Cells(Selection.Row, Selection.Column), Cells(Selection.Row + Selection.Rows.Count - 1, Selection.Column)).MergeCells = True ’セルを結合する
Application.DisplayAlerts = True ’アラームを出るように戻す
End Sub
Dim x
Dim i As Long
x = Cells(Selection.Row, Selection.Column).Value
For i = 1 To Selection.Rows.Count - 1
x = x & vbCrLf & Cells(Selection.Row + i, Selection.Column)
Cells(Selection.Row + i, Selection.Column) = “” ’結合するなら消さなくても問題ないが、結合しない場合はこの操作が必要
Next i
Cells(Selection.Row, Selection.Column).Value = x
Application.DisplayAlerts = False ’アラームを出ないようにする
Range(Cells(Selection.Row, Selection.Column), Cells(Selection.Row + Selection.Rows.Count - 1, Selection.Column)).MergeCells = True ’セルを結合する
Application.DisplayAlerts = True ’アラームを出るように戻す
End Sub
下3行はセルの結合を実行するためのもので、セルを結合する必要がなければこの部分は削除してください。
逆にセルの値を改行ごとに分割するVBAコードはこちらを参考にしてください。
スポンサーリンク
マクロ実行時の動画
「あいうえお~まみむめも」を書いたセルを結合するコードを実行したときの動画を用意しました。
セルの結合を実行しない場合と実行する場合の両方について、動画を載せておきます。
セルの値を統合する(セル結合なし)
セルの値を統合する(セル結合あり)
おすすめ書籍 (広告)
Amazon 楽天 Yahoo検索 |
---|
Amazon 価格:¥2,420円 |
楽天Kobo電子書籍ストア 価格:2,574円 |
楽天Kobo電子書籍ストア 価格:2,574円 |
bookfanプレミアム 価格:2,420円 |
bookfanプレミアム 価格:2,200円 |
コメント