[[20190613124730]] 『マクロ末尾まで計算式をセルに入力するには』(ちんぷんかんぷん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロ末尾まで計算式をセルに入力するには』(ちんぷんかんぷん)

Range("C2:C26").Formula = "=ROUNDDOWN(A2*B2,0)"

この式のC26の部分を末尾セルが増減しても、そこまで計算式が入るようにしたいのですが、難しくてわかりません。

末尾を調べる式Cells(Rows.Count, 3).End(xlUp).Row

これが必要な事は分かったのですが、その後がさっぱりです。。。

<失敗1> 定義エラー

Range("C2:Cells(Rows.Count, 3).End(xlUp).Row").Formula = "=ROUNDDOWN(A2*B2,0)"

<失敗2> 全部同じ数式=ROUNDDOWN(A2*B2,0)に

Sub test()

Dim i As Long

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row

Cells(i, 3).Formula = "=ROUNDDOWN(A2*B2,0)"

Next i

End Sub

解決策を教えて下さいm(__)m

< 使用 Excel:Office365、使用 OS:Windows10 >


Range("C2", Cells(Rows.Count, "C").End(xlUp)).Formula = "=ROUNDDOWN(A2*B2,0)"
(ピンク) 2019/06/13(木) 13:37

 ピンクさんとちょっとかぶっちゃいましたが(^^;

 <失敗1>については、
 Range("C2:C" & Cells(Rows.Count, 3).End(xlUp).Row).Formula = "=ROUNDDOWN(A2*B2,0)"
 または、
 Range("C2", Cells(Rows.Count, 3).End(xlUp)).Formula = "=ROUNDDOWN(A2*B2,0)"
 とか。

 <失敗2>については、
 Cells(i, 3).Formula = "=ROUNDDOWN(A2*B2,0)"
 ↓
 Cells(i, 3).Formula = "=ROUNDDOWN(A" & i & "*B" & i & ",0)"
 ですかね。 でも失敗1を修正してしまえば、こっちは必要なさそう(^^)

(虎) 2019/06/13(木) 13:44


書いているあいだに皆さんとかぶっちゃったけど投稿しちゃいます。

失敗1はある意味惜しいとおもいます。
Range(範囲の始まりとなるセル,範囲の終わりとなるセル)という書き方でセル範囲を表現出来ます。

    Sub 失敗1の修正1()
        Range("C2", Cells(Rows.Count, "C").End(xlUp)).Formula = "=ROUNDDOWN(A2*B2,0)"
    End Sub

また、Range ("セル範囲を表す文字列")でもセル範囲を表現出来ます

    Sub 失敗1の修正2()
        Range("C2:" & Cells(Rows.Count, "C").End(xlUp).Address).Formula = "=ROUNDDOWN(A2*B2,0)"
    End Sub

    Sub 失敗1の修正3()
        Range("C2:C" & Cells(Rows.Count, "C").End(xlUp).Row).Formula = "=ROUNDDOWN(A2*B2,0)"
    End Sub

失敗2は、変数「i」の変化に合わせての数式の行も変えてあげないとダメですね

    Sub 失敗2の修正t()
        Dim i As Long

        For i = 2 To Cells(Rows.Count, "C").End(xlUp).Row
            Cells(i, "C").Formula = "=ROUNDDOWN(A" & i & "*B" & i & ",0)"
        Next i

    End Sub

ただ、どちらの案も、Cells(Rows.Count, "C").End(xlUp)でC列の最終セルがつかめることが前提ですね、
(これから、数式を設定しようとしている列の最終セルが分かっているというのがちょっとしっくり来ません)
なので、私なら既にデータがあるであろうA列ないしB列で対象範囲を求めてから、C列にずらすという考え方をするとおもいます。

    Sub 私なら()
        Range("A2", Cells(Rows.Count, "A").End(xlUp)).Offset(, 2).Formula = "=ROUNDDOWN(A2*B2,0)"
    End Sub

(もこな2) 2019/06/13(木) 14:02


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.