Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2085 / 13645 ツリー ←次へ | 前へ→

【70037】[無題] tanaka 11/10/11(火) 22:34 質問[未読]
【70039】Re:[無題] UO3 11/10/12(水) 6:13 発言[未読]
【70040】Re:[無題] UO3 11/10/12(水) 9:55 発言[未読]
【70050】Re:[無題] UO3 11/10/12(水) 15:58 発言[未読]

【70037】[無題]
質問  tanaka  - 11/10/11(火) 22:34 -

引用なし
パスワード
   Option Explicit

Const line As Integer = 11
Const row As Integer = 21
Const gyou As Integer = 21
Const retu As Integer = 1


Dim A(line, row) As Double
Dim B(gyou, retu) As Double

Sub Mondai()

  Call Worksheets("sheet6").Activate
  
  Dim i As Integer
  Dim j As Integer
  Dim k As Integer
  Dim sum As Double
  Dim l As Integer
  
  
  For i = 1 To line
    For j = 1 To row
      A(i, j) = Cells(i, j)
    Next j
  Next i

   For k = 1 To gyou
    For l = 1 To retu
      B(k, l) = Cells(k, l + line + 1)
    Next l
  Next k


  For i = 1 To line
        For j = 1 To row
          sum = 0
          For k = 1 To gyou
            
              
              sum = sum + A(i, k) * B(k, j)
              
            
          Next k
         Cells(i + line + 1, row + j + 11) = sum
        Next j
  Next i


End Sub

11*21と21*1の行列の掛け算を求めたいのですがどこが違うか正してください。

【70039】Re:[無題]
発言  UO3  - 11/10/12(水) 6:13 -

引用なし
パスワード
   ▼tanaka さん:

おはようございます

コードそのものは改善の余地はありますが、さておき。

>11*21と21*1の行列の掛け算を求めたいのですがどこが違うか正してください。

と聞いておられるということは、何か困っておられるということですね。

・結果が思った数値にならない?
・あるいはエラーになる?

後者でしょうけど、その場合、どのコードでどんなエラーになったかを明記しないと回答者側では、とまどってしまいますよ。

>Dim B(gyou, retu) As Double

retu は 1 ですから配列 B の Ubound は 1 ですね。
一方、

>        For j = 1 To row

ですから j には 1 から 21 までが与えられます。

そうすると

>              sum = sum + A(i, k) * B(k, j)

この B(k, j) の j も 1 のみならず 2,3,4・・・・と 「1を超える値」になりますね。

【70040】Re:[無題]
発言  UO3  - 11/10/12(水) 9:55 -

引用なし
パスワード
   ▼tanaka さん:

追伸です。
シートのどこの11行21列の値か、どこの21行1列の値か、
それらを、具体的にどのような計算をさせて、結果を、シートのどこに転記したいのか
こういったことを具体的に説明いただけますか?

もちろん、それは「コード」に書いてあるわけですが、もしかしたら「コードが間違っている」可能性もありますからね。

【70050】Re:[無題]
発言  UO3  - 11/10/12(水) 15:58 -

引用なし
パスワード
   ▼tanaka さん:

回答がいただけないので(?)もう1つコメントします。

配列A には A1:U11 の範囲の値をいれていますね。
で、配列B ですが、Cells(k, l + line + 1) この l + line + 1 は常に 13です。
つまり、配列B には M1:M21 の値を入れています。

だめだということじゃありませんが、M列って、A1:U11 の範囲の中ですよね。
これでいいのですか?

2085 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free