2016-11-04 9 views
0

をオフに基づいて範囲または行に重複したセルを結合しようとすると、私は始めていますものです:は、だからここに「マスターキー」欄

enter image description here

そして、ここでは、私はそれがどのように見えるしたいものですそれが行われたとき:

enter image description here

私は何それが行う必要があると思う:

1)ルートのカラム012を通過します )重複値

3))最初の重複ルート値と最後

4との間のすべての行を選択し、その範囲内のすべての重複するセルをマージを探す

5.)データの最後の行に移動するまで繰り返します。

私の問題は、私が本当にやりたいことをするためにvbaについて十分に知りませんし、すでにこれを行うコードを見つけることに幸運を祈ることができませんでした。私は努力し続けるつもりですが、このサイトのすばらしい人々が提供できる援助/洞察を歓迎します。

+0

VBAの代わりにピボットテーブルを使用すると、後でフォーマットすることができます。これを試しましたか? – maxhob17

+0

@ maxが指摘しているように、ピボットテーブルを使用することをお勧めします。 1つを挿入する方法がわからない場合、検索またはGoogleは簡単にあなたを助けるはずです。このフォーマットをインプレースで適用する必要がある場合(実際のデータでは、データを参照する別のシートに何らかの形で表示するだけでなく)、VBAを使用する必要があります。 VBAの場合は、最初にデータを並べ替える必要があります(複数の条件で検索機能を使用すると詳細情報が得られます)。そして、行をループして、ポイント1-5で既に投稿したようなワークフローを実行します。 VBAでこれらの手順を実現するための支援が必要な場合は、コメントを残してください。 –

+0

私はピボットテーブルについて考えましたが、彼らは2番目の画像で示したようにフォーマットしたがります。私は確認した。私はVBAが私の最高の、おそらく唯一の選択肢だと思います。 私はKutoolsforExcel用のツールを見つけました。私が望むように重複したセルをマージしますが、ワークシート全体に対して列ごとに実行します。したがって、列Bはすべて1つのセルに結合されます。私はVBAでサブルーチンを設定する方法を知っていますので、すばらしい人たちがステップ1〜3と5を実行するマクロを手に入れることができたら、Kutoolsを呼び出すことができます。 –

答えて

0

は、だから私は、カラム1へのルートを移動し、このコードで動作するように私のマクロを得た:

Sheets("Master").Select 
With ActiveSheet 
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
End With 
Dim KRng As Range, Kxcell As Range 
Dim KxRows As Integer 
Dim KeyRng As Range 

Set KeyRng = Range("A4:A" & LastRow) 
KeyRng.Select 
'Application.ScreenUpdating = False 
'Application.DisplayAlerts = False 
KxRows = KeyRng.Rows.Count 
     For Each KRng In KeyRng.Columns 
      For c = 1 To KxRows - 1 
       For d = c + 1 To KxRows 
        If KRng.Cells(c, 1).Value <> KRng.Cells(d, 1).Value Then 
       Exit For 
      End If 
     Next 
    KeyRng.Parent.Range(KRng.Cells(c, 1), KRng.Cells(d - 1, 1)).Select 
    With Selection 
    ActiveCell.Resize(d - c, 60).Select 
    End With 
    Call MergeSameCell 
    KeyRng.Parent.Range(KRng.Cells(c, 1), KRng.Cells(d - 1, 1)).Select 


    c = d - 1 
Next 

次 Application.DisplayAlerts = Trueの
Application.ScreenUpdating = Trueの

End Subの

ここで私の質問は、右側の60列を選択しても、8列から12行をスキップするにはどうすればいいですか?私は研究を続け、私が思いつくものを見ていきますが、シンプルでエレガントな答えを歓迎します。

+0

私は基本的にマクロの最初の半分が問題の範囲に対して何をしているのかを元に戻すコードを追加しましたが、最初にそれらのセルを選択しない方法があれば、このマクロをきれいにすることができますアップ。 –

関連する問題