No.2ベストアンサー
- 回答日時:
全体として以下の様な動作をしています。
ans2(1,1) = Range("C3")~Range("C5")の合計を代入
ans2(1,2) = Range("D3")~Range("D5")の合計を代入
ans2(1,3) = Range("E3")~Range("E5")の合計を代入
> x2 = Range("C3:E5").Value
x2は、要素が行方向1~3、列方向1~3の二次元配列になります。
x2(1,1)がC3セルの値
x2(1,2)はD3セルの値
…
X2(3,3)がE5セルの値
> ReDim ans2(1 To 1, 1 To UBound(x2))
各列の合計を代入するans2は要素が行方向1~1,列方向が1~3の二次元配列の構成が必要となります。
その割り当てを行っています。
そして以下で各列の合計を計算しています。
> For i = LBound(x2, 2) To UBound(x2, 2) '列方向の要素変化(1~3/C列~E列)
> For j = LBound(x2) To UBound(x2) '行方向の要素変化(1~3/3行~5行)
> ans2(1, i) = ans2(1, i) + x2(j, i) '各列ごとに行の値を足しこむ
> Next j
> Next i
試しに
Range("A1:C1").Value = ans2
とすれば対応するセルに計算結果が表示されます。
No.4
- 回答日時:
No.1です。
補足に対して。
間が空いてしまい申し訳なかったです。
PCが古いので調整などしてまして。。。。。
>For i = LBound(x2) To UBound(x2) ← UBound(x2) UBound(x2,2)としても結果同じになります。
質問文の内容では確かに同じになります。
でも
・UBound(x2)
・UBound(x2,2)
は意味が違います。
同じになる原因はセルの範囲が【行・列同じ数】だからですね。
テストされるなら揃えなければ気づいたはずです。
・UBound(x2) ・・・・・セル範囲の行方向を見てます。
・UBound(x2,2) ・・・・セル範囲の列方向を見てます。
ここは既にsiffon9さんが補足して頂いてて感謝です。
補足の後半につきましては記載されているような受け取り方で宜しいのではと思います。
No.3
- 回答日時:
No.2です。
No.1さんの仰るとおり
ReDim ans2(1 To 1, 1 To UBound(x2,))
↓
ReDim ans2(1 To 1, 1 To UBound(x2, 2))
だと思います。
No.1
- 回答日時:
>下記のコードを詳しく教えて
>x2 = Range("C3:E5").Value
>ReDim ans2(1 To 1, 1 To UBound(x2)) ←この部分の意味
詳しくの前に何をしたいのかが不明。
と言うより間違いでしょうね。
多分本来は2次元配列の2番目の要素数を与えたいのでしょうから、
ReDim ans2(1 To 1, 1 To UBound(x2, 2))
こんな感じでは?
>この部分の意味 → ans2(1, i) = ans2(1, i) + x2(j, i)
2次元配列の個々の値( x2(j, i) )を2番目の要素毎に加算していくって感じでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) userformでSheetを選択して開くコード 1 2023/05/15 16:27
- Visual Basic(VBA) セルS2に入力した「月」と一致したB列の右隣へセルS110の値を転記する下記マクロを実行するとエラー 2 2022/12/06 17:32
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) ExcelVBAで質問です。離れた二次元配列を一つにしたい 4 2022/07/26 19:06
- Visual Basic(VBA) 1つの入力フォルダの値を読み込み、3分割をして新しい変数に代入する方法を教えていただきたいです。 読 4 2022/10/17 20:52
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
Excel UserForm の表示位置
-
VBA 複数条件の分岐処理の上手...
-
Excelで空白セル直前のセルデー...
-
特定の色のついたセルを削除
-
入力規則のリスト選択
-
Excel VBA IF文がうまく動作し...
-
EXCEL VBA 文中の書式ごと複写...
-
DataGridViewのフォーカス遷移...
-
DataGridViewで指定したセルの...
-
【VBA】【ユーザーフォーム_Lis...
-
EXCEL 2010 VBAでピボットで複...
-
Excel VBAでCheckboxの名前を変...
-
VBA にて、条件付き書式で背景...
-
【VBA】写真の貼り付けコードが...
-
VBAでユーザーフォームにセル値...
-
JTableにチェックBOXの埋め込み...
-
VBA コンボボックスで選んだも...
-
セルの半透明着色処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
Excel UserForm の表示位置
-
【Excel VBA】一番右端セルまで...
-
エクセルの合計を自動で表示さ...
-
【VBA】【ユーザーフォーム_Lis...
-
EXCEL VBA 文中の書式ごと複写...
-
下記のマクロの説明(意味)を...
-
Excel VBAでCheckboxの名前を変...
-
【VBA】写真の貼り付けコードが...
-
特定の色のついたセルを削除
-
VBA:日付を配列に入れ別セルに...
-
VBA にて、条件付き書式で背景...
-
DataGridViewのフォーカス遷移...
-
関数の引数でrangeを指定したとき
-
入力規則のリスト選択
-
DataGridViewで指定したセルの...
-
VBAでユーザーフォームにセル値...
-
複数指定セルの可視セルのみを...
おすすめ情報
For i = LBound(x2) To UBound(x2) ← UBound(x2) UBound(x2,2)としても結果同じになります。
For j = LBound(x2, 1) To UBound(x2, 2)
ans2(1, i) = ans2(1, i) + x2(j, i)
ans2 1,1 ← 格納←1,1 1,1 1,2 1,3
ans2 1,2 ← 格納←1,2 2,1 2,2 2,3
ans2 1,3 ← 格納←1,3 3,1 2,3 3,3
こういうことでしょうか
わかりにくいかもしれませんが。
LBound(x2, 2) To UBound(x2, 2)ということは
LBound(x2, 2) 列の最小値
UBound(x2, 2) 列の最大値
とうことですか。すなわち
LBound(x2, 2) 2だと列
LBound(x2) だと行ということですか