Excel VBA質問箱 IV

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

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


50035 / 76732 ←次へ | 前へ→

【31593】Re:マクロにおけるMMULT関数
発言  ichinose  - 05/11/26(土) 9:12 -

引用なし
パスワード
   皆さん、おはようございます。


>    A    B    C
>1つ目の行列            
>2    1    1    1
>3    2    2    2
>4    3    3    3
>        
>        
>1つ目の行列
>12    1    1    1
>13    2    2    2
>14    3    3    3
>15            
という入力データとしてのセル範囲に対して

結果として


>        
>行列積を A22 から貼り付け

>22     6   6    6
>23    12   12   12     
>24    18   18   18

という出力をしたい。
>
ちかさんへ
上記のような具体例を提示して
やりたいことと
入力データと出力データを明確にした記述をすることを
心がけてください。

文章だけでは判りづらいと思いませんか?
具体例が一つで足りなければ二つでも三つでも提示します。

自分が知りたいことを見ている方に理解してもらう
努力をしましょう!!

>Sub 行列積()
>Dim n1 As Long, n2 As Long
>Dim m1 As Long, m2 As Long
>Dim addrss1 As String, addrss2 As String
>  '
>  '1つ目の行列の範囲 (m1,n1)行列
>  m1 = 3: n1 = 3
>  addrss1 = Range("A2").Resize(m1, n1).Address(0, 0)
>  '2つ目の行列の範囲 (m2,n2)行列
>  m2 = 3: n2 = 3
>  addrss2 = Range("A12").Resize(m2, n2).Address(0, 0)
>  '
>  '行列積の貼り付け
>  Sheets("sheet1").Range("A22").Resize(m1, n2).FormulaArray = _
>     "=MMult(Sheet1!" & addrss1 & "," & "Sheet1!" & addrss2 & ")"
>End Sub

で、 kobasanさんの提示された例のデータを基にして・・・。

MMULT関数って私は、使ったことがありませんが
本来は、 kobasanさんのコードのように配列数式として使用することで
その機能を発揮するものだと思います(特例は除いて)。


配列を使用せずに行と列の掛け算の和を少しでも簡単にするために使用する
というのなら、上記のデータ例を引用すると

'================================================================
Sub 行列積2()
  dim rrng as range
  dim crng as range
  dim rw as long,col as long
  Set rrng = Range("A2").Resize(, 3)
  Set crng = Range("A12").Resize(3)
  With Range("a22")
    For rw = 1 To 3
     For col = 1 To 3
      .Cells(rw, col).Formula = "=mmult(" & rrng.Offset(rw - 1, 0).Address & "," & _
            crng.Offset(0, col - 1).Address & ")"
      Next
     Next
    End With
End Sub

で試してみて下さい
2 hits

【31547】マクロにおけるMMULT関数 ちか 05/11/25(金) 13:21 お礼
【31550】Re:マクロにおけるMMULT関数 Kein 05/11/25(金) 13:57 発言
【31553】Re:マクロにおけるMMULT関数 ちか 05/11/25(金) 14:43 発言
【31556】Re:マクロにおけるMMULT関数 Kein 05/11/25(金) 15:16 発言
【31591】Re:マクロにおけるMMULT関数 kobasan 05/11/26(土) 1:08 発言
【31593】Re:マクロにおけるMMULT関数 ichinose 05/11/26(土) 9:12 発言
【31595】Re:マクロにおけるMMULT関数 追伸 ichinose 05/11/26(土) 9:25 発言
【31601】Re:マクロにおけるMMULT関数 追伸 kobasan 05/11/26(土) 13:05 発言

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