セルが結合されたところに、貼り付けをすると、「この操作は結合したセルには行えません」のエラーが出てしまいます。
そこれ、事前にA列に1列をいれておき、貼り付けしたい形式を合わせるために、セルを結合するマクロを作成しました。
上記エクセルの説明
上記エクセルは、実行した結果の内容です。
‘
‘ E5のセルに初めの行を入れておく
‘ F5のセルに最終行+1の数字を入れておく
‘ G5のセルに結合する列を入れておく
‘ H5には、G5の数字に合わせて、列番号がでるようにvlookupにて計算式をたてておく
H5の式は、=+HLOOKUP(G5,A1:N2,2,0) です。
①まず、A列に、1行のみ、貼り付けたい行を値コピーしておきます。
②スタートボタン押す。
③上記エクセルの結果のようになりますので、必要な部分をコピーして
④貼り付けたいファイルに移動して貼付してください。
マクロ
Sub セルの結合() ' ' Macro 貼り付け先が、セルが結合されていると値貼付できないため 'A列に入れたものを、指定する列分だけセルを結合するマクロです。 ' ' ' E5のセルに初めの行を入れておく ' F5のセルに最終行+1の数字を入れておく ' G5のセルに結合する列を入れておく ' H5には、G5の数字に合わせて、列番号がでるようにvlookupにて計算式をたてておく N = Cells(5, 5) P = Cells(5, 6) 列記号 = Cells(5, 8) Do While N < P 範囲 = "A" & N & ":" & 列記号 & N N = N + 1 Range(範囲).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Loop End Sub
マクロの説明
N = Cells(5, 5) 初めの行をNの変数に入れます。この場合は、E5セル
P = Cells(5, 6) 終わりの行をPの変数に入れます。この場合は、F5セル
列記号 = Cells(5, 8) 行数を指定したのは数なので、数を列記号に変換して、列記号という変数に入れます。
次は、ループの公式です。初めの行Nが最終行Pより小さいときにぐるぐる中身を回すものです。
Do While N < P N = N + 1 Loop
範囲 = “A” & N & “:” & 列記号 & N
上記は、NとPと列記号から、セルを結合する範囲を作成しております。A19:G19のような形を作ってます。
Range(範囲).Select
範囲の文字を作ったら、その範囲を選択しています。
With Selection End With
With Selection ~ End With は、いらないかもですが、この部分がないと、センタリングとかなくなってしまうので、
たぶん、貼り付け先は、セルを結合した形式なので、そのままにしておきましょう。
以下が、今回の目玉のセルを結合する記述となります。
Selection.Merge
もう一つのマクロ
行削除のボタンも作っておきました。
一度、セルの結合をされたところを元に戻す作業が必要なので、どうしたら、元に戻せるかを考えたところ、行削除するのが、良いと考えました。以下のような感じになりました。
Sub 行削除() ' N = Cells(5, 5) P = Cells(5, 6) 行 = N & ":" & P Rows(行).Select Selection.Delete Shift:=xlUp Range("A1").Select End Sub
コメント