プロが教える店舗&オフィスのセキュリティ対策術

VBA初心者です。

エクセルで同じデータが入っている箇所を縦結合と横結合をしたいのですが方法がわかりません

イメージとしては以下の通りです。

1 2 3
1 2 3
1 3 4
2 2 4
4 4 5
2 3 6
3 4 7

質問者からの補足コメント

  • すみませんスクショではありませんがイメージはこんな感じです。

    「VBA初心者です。 エクセルで同じデータ」の補足画像1
      補足日時:2020/10/22 11:31

A 回答 (4件)

イメージが全くわからないです。


実際のイメージのスクリーンショットを補足頂けますか?
    • good
    • 1

こんにちは



セル範囲のMargeメソッドで可能です。
https://docs.microsoft.com/ja-jp/office/vba/api/ …

セルの結合は基本的に矩形のセル範囲でしかできませんので、L型やT型のようなセル範囲が同じ値となっている場合に、どのように扱うのかは質問者様次第となります。
    • good
    • 1

添付図の同じ色のセルを結合セルにしたいと理解しました。


それであってますか。
但し、その場合、No2のかたも指摘されていますが、
添付図の右側の黄色のセルを結合セルにはできません。
その場合は、どのようにするかを提示してください。
そうすれば、更に具体的な回答が得られるかと。
「VBA初心者です。 エクセルで同じデータ」の回答画像3
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
その認識で間違いありません。

また、左側になった場合はメッセージボックスでエラー分を出したいと考えています。

お礼日時:2020/10/22 12:01

とりあえず、こんなもんでどうでしょう?


L型やT型の場合の対応は、Excelにまかせているので、ご希望通りにならないかもしれません。当然、エラーメッセージなんて出ないので、どうしても必要であれば、ご自分で修正してみて下さい。

Sub sample()
Dim d As Object
Dim r As Variant
Set d = CreateObject("Scripting.Dictionary")
For Each r In Cells.SpecialCells(xlCellTypeConstants, 23)
If d.Exists(r.Value) Then
Set d(r.Value) = Union(d(r.Value), r)
Else
Set d(r.Value) = r
End If
Next r
Application.DisplayAlerts = False
For Each r In d.items
r.MergeCells = True
Next r
End Sub
    • good
    • 0
この回答へのお礼

遅くなりましたが解決できました!
ありがとうございました。

お礼日時:2020/10/26 13:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!