教えて!gooグレードポイントがdポイントに!

ご回答者様

いつもお世話になっております。
表題の件、VBAの質問です。
データという名前のシートの1行目にA列から得意先コード、B列に得意先名、C列に売上額、D列発生月と記載があります。
2行目からデータが入っています。(1行目は項目のみ)
D列の発生月ですが2020/8/1等になってしまていますのでE列に発生年度、F列に発生月という項目を作成しました。
E列にはIF(A2>=1,YEAR(D2),"")と数式を入れております。
F列にはIF(A2>=1,MONTH(D2),"")と数式を入れております。
売上額が円単位ですので千円単位に直すためにG列にIF(A2>=1,ROUNDUP(C2/1000,0),"")と数式を入れております。

下記内容が主な質問です。

A列には必ず得意先コードが入ります。(2000-07等。ブランクはありません。)
マクロでA列にデータが入っている行まで数式をコピー(セルの右下にカーソルを当てると十字になるのでダブルクリックをする)したいですがどのようにソースを記載すれば可能でしょうか。
できれば修正することを考えて列毎に数式をコピーしたいです。
恐れ入りますが何卒宜しくお願い致します。

教えて!goo グレード

A 回答 (1件)

こんばんは!



E~G列2行目の数式をA列最終行までフィル&コピー!の操作をVBAで行いたい!というコトですね。

一例です。
オートフィルの場合はマクロの記録でコードが取得できると思いますので、別の方法にしてみました。

Sub Sample1()
 Dim j As Long
 Dim lastRow As Long
  lastRow = Cells(Rows.Count, "A").End(xlUp).Row
   For j = 5 To 7 '//←E列~G列まで//
    Range(Cells(2, j), Cells(lastRow, j)).Formula = Cells(2, j).Formula
   Next j
End Sub

ちなみにオートフィルのコードだと

Sub Sample2()
 Dim lastRow As Long
  lastRow = Cells(Rows.Count, "A").End(xlUp).Row
   Range("E2:G2").AutoFill Destination:=Range(Cells(2, "E"), Cells(lastRow, "G"))
End Sub

こんな感じでしょうかね。

※ 後者の方がコード自体は短くてすみますね。m(_ _)m
    • good
    • 0
この回答へのお礼

お世話になります。
いただいたソースを使用したところ、マクロが動きました。
返信をしたつもりでしたができていませんでした。
ありがとうございました。

お礼日時:2020/09/26 22:09

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

人気Q&Aランキング