• ベストアンサー

マクロで値がある列までコピー

マクロの初心者です。    A列    B列    C列 1 使用年  使用月  使用期限 2 2010    5   2010-05 3 空欄    空欄   空欄 4 0      0    - . . . マクロでC2には下の関数が自動で入力されるようにしてるのですが、A列に値がある行にだけ、C2の関数をコピーできるようにしたいのです。 宜しくお願い致します。 C列の関数:=IF(ISBLANK(A2),"",IF(ISERR(DATE(A2,B2,1)),"-",TEXT(DATE(A2,B2,1),"yyyy-mm")))

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

おはようございます。#1,#3のmerlionXXです。 > 回答をいただいたマクロはC列全体にC2の関数をコピーをするのでしょうか? 違いますよ。A列に数値がある行にだけ式をコピーします。

aoaoaoki
質問者

お礼

お礼が遅くなってすいませんでした。 想像していた通りに動きました。 ありがとうございました。

その他の回答 (3)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

#1です。 もし対象の行数が非常に多く#1のマクロでは時間がかかるようでしたらこういうやりかたもあります。 Sub test02() Dim lr As Long With ActiveSheet lr = .Cells(Rows.Count, "A").End(xlUp).Row .Range("A3:A" & lr).SpecialCells(xlCellTypeConstants, 1).Offset(0, 2).FormulaR1C1 = .Range("C2").FormulaR1C1 End With End Sub

aoaoaoki
質問者

補足

回答ありがとうございます。 明日会社で試そうと思っているのですが、1つ質問があります。 回答をいただいたマクロはC列全体にC2の関数をコピーをするのでしょうか? できたら、A3から最後に値があるセルで止まるマクロを教えて頂けないでしょうか?最後に空欄になることはないそうです。 このデータをACCESSにインポートするのですが、空欄の行もインポートするのでどうにかならないかと思ってますので。 宜しくお願い致します。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

=IF(ISBLANK(A2),"",IF(ISERR(DATE(A2,B2,1)),"-",TEXT(DATE(A2,B2,1),"yyyy-mm"))) の式は、ご自身で考えられたものでしょうか。 別に、マクロでC列に記述していく必要もない、しっかりした数式です。 上記式が、C2に入っていれば、C2クリックして、マウスをセルの右下に持っておくと、 表示が+になります。 そのまま、マウスでドラックして下方向へ移動すると、同様の式が、下まで記述されていきます。 その式の内容は、A列は、空白であれば、空白という意味がすでに、記述されていますが? ご質問の意味が、違っていれば忘れてください。

aoaoaoki
質問者

補足

回答ありがとうございます。 説明が変でした。 後で、確認をしたら空欄はないそうなので、上の関数でなくても良いようです。 ただ、1つ問題があります。 A列が空欄になったら、C3から下にC2の関数のコピーを制限できるようなマクロが作りたいです。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

提示された関数では:=IF(ISBLANK(A2),"", と、A列が空白なら非表示になってるのですからA列に値がある行にだけと限定する必要もないとは思いますが、そのようなリクエストですので・・・・。 Sub test01() Dim lr As Long, i As Long With ActiveSheet lr = .Cells(Rows.Count, "A").End(xlUp).Row For i = 3 To lr If .Cells(i, "A").Value <> "" Then .Range("C2").Copy Destination:=.Cells(i, "C") End If Next End With End Sub

関連するQ&A