プロが教える店舗&オフィスのセキュリティ対策術

いつも大変お世話になっております。
以下のコードを実行すると
添付したファイルのようになります。
合計の値が間違って出てくるのです
どこがまちがっているわかる方お願い致します。
よろしくお願い致します。

Sub asf()
Dim Box As Variant
Dim Ans As Variant
Dim i, j As Long
Dim col As Variant
Dim y As Long


col = Array(1, 3)
x = Cells(Rows.Count, 34).End(xlUp).Row + 1
Box = Range("ai549", Range("ai" & Rows.Count).End(xlUp)).Resize(, 3).Value


ReDim Ans(1 To 1, 1 To UBound(Box, 2))

For i = LBound(Box, 2) To UBound(Box, 2)
For j = LBound(Box) To UBound(Box)
Ans(1, i) = Ans(1, i) + Box(j, i)
Next j
Next i


For y = 35 To 37 Step 2

Cells(561, y) = Ans

Next y

「配列のやり方」の質問画像

質問者からの補足コメント

  • うーん・・・

    Cells(561, y) = Ans(y-34)有効範囲でないと
    メッセージがでます

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/05/10 16:51
  • どう思う?

    ありがどうございました。
    意味が分かりました。
    ちなみにわかればおしえてくれませんでしょうか
    一列とばしてFor y = 35 To 37 
    Cells(561, y) = Ans(1, y - 34)
    Next y

    指定された列のみ合計ってできますでしようか。
    col = array(35,36,39)
    for y = lbound(col) to ubound(col)
    ふうになかなかうまくいきません

    No.2の回答に寄せられた補足コメントです。 補足日時:2019/05/10 18:07

A 回答 (2件)

もとい


Ans(1,y-34)
ですね(-_-;)
この回答への補足あり
    • good
    • 0

一番最後のFor文の中で設定しているAnsが一意になっています


右側の合計欄に設定すべきはAns(3)だと思うのですが如何でしょうか
なので
Cells(561, y) = Ans
この部分は
Cells(561, y) = Ans(y-34)
が正解です
この回答への補足あり
    • good
    • 0

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