Excel VBA質問箱 IV

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

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


6002 / 13646 ツリー ←次へ | 前へ→

【47742】配列の中の範囲選択 hiyo 07/3/21(水) 13:27 質問[未読]
【47744】Re:配列の中の範囲選択 Kein 07/3/21(水) 14:28 発言[未読]
【47746】Re:配列の中の範囲選択 Kein 07/3/21(水) 14:39 回答[未読]
【47751】Re:配列の中の範囲選択 hiyo 07/3/21(水) 16:36 お礼[未読]

【47742】配列の中の範囲選択
質問  hiyo  - 07/3/21(水) 13:27 -

引用なし
パスワード
   頻繁に質問してすいません。


Application.WorksheetFunction.Average(Ba(1, 2), Ba(10, 2))
としますとBa(1,2)とBa(10,2)の平均になってしまいますが。
Ba(1,2)からBa(10,2)までの平均を出すためにはどう入力すれば
よいのでしょうか?

【47744】Re:配列の中の範囲選択
発言  Kein  - 07/3/21(水) 14:28 -

引用なし
パスワード
   Average(Ba(1, 2), Ba(2, 2), Ba(3, 2), ・・・Ba(10, 2))

というように、全ての要素を並べて書くしかないのでは ?

【47746】Re:配列の中の範囲選択
回答  Kein  - 07/3/21(水) 14:39 -

引用なし
パスワード
   Dictionaryオブジェクトを使って、Itemsコレクションの平均を出す方法なら
引数は一つにまとめられます。
例) A1:A10 に"A"〜"J"までの文字を入れ、B1:B10 に適当な数値を入れて下さい。
そして↓のマクロを実行して、正しく全体の平均が取得できていることを確認して
下さい。

Sub MyDic()
  Dim C As Range
  Dim Dic As Object
 
  Set Dic = CreateObject("Scripting.Dictionary")
  For Each C In Range("A1:A10")
   Dic.Add C.Value, C.Offset(, 1).Value
  Next
  MsgBox WorksheetFunction.Average(Dic.Items)
  Dic.RemoveAll: Set Dic = Nothing
End Sub

【47751】Re:配列の中の範囲選択
お礼  hiyo  - 07/3/21(水) 16:36 -

引用なし
パスワード
   keinさん回答ありがとうございます。
たしかにこれでも出来ますがちょっと私の求めているものと違います。
keinさんの47744番の回答をrange(cells〜,cells〜)の配列版ように
すっきりとまとめたかったのですが、やはり方法はないのかもしれませんね。
でもほんとありがとうございました。

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