[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA 計算の繰り返し』(なー)
VBAで計算の繰り返し処理を行いたいです。
<シート1>
│A │ B │ C │ D 1│10 │ 12 │ 13 │ 6 2│6 │ 4 │ 10 │ 7 3│18 │ 27 │ 10 │ 8 ・│・ │ ・ │ ・ │ ・ ・│・ │ ・ │ ・ │ ・ ・│・ │ ・ │ ・ │ ・
といったように値が入っています。
A2〜Aaまでで、aはそのときによって変わるので、変数とします
次にシート2にて計算を行います。
シート2での計算は、
B2−A2
B3−A3
・
・
C2−B2
C3−B3
・
・
D2−C2
D3−C3
・
・
といったように値が入っているセル分の差分を出し、表示します。
この場合、すべての計算を終え、表示するまでの繰り返し処理はどのように記述したらよいのでしょうか?
空白セルが出たところで計算を終えるようにしたいです。
空白セルまでの繰り返しは、
n = Cells(Rows.Count, "A").End(xlUp).Row
で行えると聞いたのですが・・・
挑戦してはいますが何分VBA初心者なのでセルをRange("A2")みたいに特定しないような繰り返し処理に躓いています・・・
分かりにくくて申し訳ないですが教えてください。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
基準セルがあると思います
>B2−A2
シート2のA2にはいるのですか?
(++) 2017/12/04(月) 16:22
こんなの? Sub TST() Dim OUT_RANGE As Range Dim ROW_CNT As Integer Dim COLUMN_CNT As Integer
Set OUT_RANGE = Worksheets("Sheet2").Range("A1")
With Worksheets("Sheet1") For COLUMN_CNT = 2 To 4 For ROW_CNT = 1 To .Cells(Rows.Count, "A").End(xlUp).Row OUT_RANGE.Value = .Cells(ROW_CNT, COLUMN_CNT) - .Cells(ROW_CNT, COLUMN_CNT - 1) Set OUT_RANGE = OUT_RANGE.Offset(1) Next Next End With End Sub
(ねむねむ) 2017/12/04(月) 16:33
数式でやってみた。 =IFERROR(INDEX(Sheet1!A:D,MOD(ROW(A1)-1,COUNTA(Sheet1!A:A))+1,INT((ROW(A1)-1)/COUNTA(Sheet1!A:A))+2)-INDEX(Sheet1!$A:$D,MOD(ROW(A1)-1,COUNTA(Sheet1!A:A))+1,INT((ROW(A1)-1)/COUNTA(Sheet1!A:A))+1),"") なお、VBAも式もSheet1のA1セルから値があるものとしてSheet2のA1セルから表示している。 (ねむねむ) 2017/12/04(月) 16:43
おっとデータが数値なので =IFERROR(INDEX(Sheet1!A:D,MOD(ROW(A1)-1,COUNT(Sheet1!A:A))+1,INT((ROW(A1)-1)/COUNT(Sheet1!A:A))+2)-INDEX(Sheet1!$A:$D,MOD(ROW(A1)-1,COUNT(Sheet1!A:A))+1,INT((ROW(A1)-1)/COUNT(Sheet1!A:A))+1),"") でいいのか。 (ねむねむ) 2017/12/04(月) 16:53
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.