アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロの初心者です。
   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")))

A 回答 (4件)

おはようございます。

#1,#3のmerlionXXです。

> 回答をいただいたマクロはC列全体にC2の関数をコピーをするのでしょうか?

違いますよ。A列に数値がある行にだけ式をコピーします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/02/25 20:34

#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

この回答への補足

回答ありがとうございます。
明日会社で試そうと思っているのですが、1つ質問があります。

回答をいただいたマクロはC列全体にC2の関数をコピーをするのでしょうか?
できたら、A3から最後に値があるセルで止まるマクロを教えて頂けないでしょうか?最後に空欄になることはないそうです。

このデータをACCESSにインポートするのですが、空欄の行もインポートするのでどうにかならないかと思ってますので。

宜しくお願い致します。

補足日時:2008/02/20 23:52
    • good
    • 0

=IF(ISBLANK(A2),"",IF(ISERR(DATE(A2,B2,1)),"-",TEXT(DATE(A2,B2,1),"yyyy-mm")))


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

この回答への補足

回答ありがとうございます。
説明が変でした。
後で、確認をしたら空欄はないそうなので、上の関数でなくても良いようです。

ただ、1つ問題があります。
A列が空欄になったら、C3から下にC2の関数のコピーを制限できるようなマクロが作りたいです。

補足日時:2008/02/20 23:55
    • good
    • 0

提示された関数では:=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
    • good
    • 0

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