結合しているセルへのオートフィル
セルの頭に式を入れていて、それを最終行までオートフィルしたいのですが、うまくいきません。
セルは全て2行ずつ結合しています。
その状態で
With Cells(Rows.Count, 5).End(xlUp)
.Offset(1, 1) = "最終判定"
.Offset(1, 2) = "最終判定"
.Offset(1, 3) = "最終判定"
.Offset(1, 4) = "最終判定"
.Offset(1, 5) = "最終判定"
.Offset(1, 6) = "最終判定"
.Offset(1, 7) = "最終判定"
.Offset(1, 8) = "最終判定"
.Offset(1, 9) = "最終判定"
.Offset(1, 10) = "最終判定"
.Offset(1, 11) = "最終判定"
.Offset(1, 12) = "最終判定"
Range("F5:F6").AutoFill Destination:=Range(Range("F5:Q6"), Selection.End(xlDown)), Type:=xlFillSeries
というマクロを使用していますが(色々弄くり回していたので原型と少々変わってるかもしれません)、セルが結合している為出来ませんなどのエラーが出ます。
そこで回避手段として下記のマクロを組んでみました。
Public Sub testcode()
'ダミーデータ
'5000行まで結合する為にダミーの判定用データを作成する(5000行までまずいかない)
With Cells(5000, 5)
.Offset(1, 1) = "最終行判定用"
.Offset(1, 2) = "最終行判定用"
.Offset(1, 3) = "最終行判定用"
.Offset(1, 4) = "最終行判定用"
.Offset(1, 5) = "最終行判定用"
.Offset(1, 6) = "最終行判定用"
.Offset(1, 7) = "最終行判定用"
.Offset(1, 8) = "最終行判定用"
.Offset(1, 9) = "最終行判定用"
.Offset(1, 10) = "最終行判定用"
.Offset(1, 11) = "最終行判定用"
.Offset(1, 12) = "最終行判定用"
End With
'月の下のセルを結合する
For m = 6 To 17
Set c = Cells(5, m)
Cells(5, m).Activate
Do Until c.Value <> "" Or c.Offset(1).Value <> ""
c.Resize(2).Merge
Set c = c.Offset(1)
Loop
Next m
Range("F5") = "=IF~省略"
Range("F5:F6").AutoFill Destination:=Range("F5:Q6"), Type:=xlFillSeries
'ダミーの5000行までオートフィルする
Range("F5:Q6").AutoFill Destination:=Range("F5:Q5000"), Type:=xlFillSeries
With Range("F5:Q5000")
'選択範囲内で中央配置
.HorizontalAlignment = xlHAlignCenterAcrossSelection
.Copy
End With
Range("F5").PasteSpecial Paste:=xlPasteValues
'コピーの解除
Application.CutCopyMode = False
'ダミーデータの選択
Range(Cells(Rows.Count, 5).End(xlUp).Offset(1, 1), Cells(Rows.Count, 5).End(xlUp).Offset(1, 12)).Select
'削除
Range(Cells(Rows.Count, 5).End(xlUp).Offset(1, 1), Cells(5001, 17)).Delete
End Sub
1.まず、F~Q列の5001行に文字を入れる
2.5000行まで2行ずつセルを結合する、F~Q列全て行う
3.F5にオートフィルしたい式を入れる
4.F5~Q6(ここも2行ずつ結合してあります)までオートフィルをする
5.F5~Q6に入っている式を下方向へオートフィルする
6.本来なら不要のダミーデータを選択し、削除する
A~E列までは別にデータが入っていて、F~Q列はA~E列の最終行に合わせてオートフィルさせる、という目的で上記マクロを作成し使用しております。
一応これで動くのですが問題点があります。
1.5000行まで無駄なデータを入れているため結合処理が遅い(普段は300~1500程度だが中途半端に設定すると最終行が取得できない可能性があるため)
2.同じく無駄なデータの削除処理が遅い
以上2点が問題点となっております。
上記処理をなくしたいのですが、2行ずつの結合したセルに対して、位置が不明確な場合、オートフィルを飛ばすのは難しいでしょうか?
よいマクロが有れば教えてください。
お礼
ありがとうございます。 これからはF1も活用していきたいと思います。