は、だから私は、カラム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行をスキップするにはどうすればいいですか?私は研究を続け、私が思いつくものを見ていきますが、シンプルでエレガントな答えを歓迎します。
VBAの代わりにピボットテーブルを使用すると、後でフォーマットすることができます。これを試しましたか? – maxhob17
@ maxが指摘しているように、ピボットテーブルを使用することをお勧めします。 1つを挿入する方法がわからない場合、検索またはGoogleは簡単にあなたを助けるはずです。このフォーマットをインプレースで適用する必要がある場合(実際のデータでは、データを参照する別のシートに何らかの形で表示するだけでなく)、VBAを使用する必要があります。 VBAの場合は、最初にデータを並べ替える必要があります(複数の条件で検索機能を使用すると詳細情報が得られます)。そして、行をループして、ポイント1-5で既に投稿したようなワークフローを実行します。 VBAでこれらの手順を実現するための支援が必要な場合は、コメントを残してください。 –
私はピボットテーブルについて考えましたが、彼らは2番目の画像で示したようにフォーマットしたがります。私は確認した。私はVBAが私の最高の、おそらく唯一の選択肢だと思います。 私はKutoolsforExcel用のツールを見つけました。私が望むように重複したセルをマージしますが、ワークシート全体に対して列ごとに実行します。したがって、列Bはすべて1つのセルに結合されます。私はVBAでサブルーチンを設定する方法を知っていますので、すばらしい人たちがステップ1〜3と5を実行するマクロを手に入れることができたら、Kutoolsを呼び出すことができます。 –