Excel VBA質問箱 IV

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

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


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

【31281】不特定範囲の平均値 初心者 05/11/16(水) 15:50 質問[未読]
【31284】Re:不特定範囲の平均値 Kein 05/11/16(水) 16:04 発言[未読]
【31285】Re:不特定範囲の平均値 初心者 05/11/16(水) 16:24 質問[未読]
【31292】Re:不特定範囲の平均値 Kein 05/11/16(水) 17:14 回答[未読]
【31307】Re:不特定範囲の平均値 初心者 05/11/17(木) 9:33 質問[未読]
【31315】Re:不特定範囲の平均値 Kein 05/11/17(木) 11:52 回答[未読]

【31281】不特定範囲の平均値
質問  初心者  - 05/11/16(水) 15:50 -

引用なし
パスワード
   いつも大変お世話になっています。
初心者で、どのように記述してよいか
分かりません。
どなたか教えていただけると大変〃助かります。

以下のようなデータがありますが、
それぞれのA列の範囲がスペースで
区切られています。

範囲ごとの平均値をB列に入れたいのですが
(実データはもっと複雑な関数が入りますが、、)
範囲は各シート30個以上有り、シート数5枚
31ブックに同じ処理を実行しなければなりません。


-----------------------------
  A  B
1 230
2 550
3 630 =Average(A1:A3)
4
5 123
6 12  =Average(A5:A6)
7
8 155
9 633
10 2666
11 233
12 112 =Average(A8:A12)
13
14
15 111 =Average(A15:A15)

・・・・・・・・・・・・・・・・・・・・・1000行くらいつづく

【31284】Re:不特定範囲の平均値
発言  Kein  - 05/11/16(水) 16:04 -

引用なし
パスワード
   >実データはもっと複雑な関数が
これはA列に表示されているデータが、数式の計算結果という意味ですか ?
>範囲は各シート30個以上
具体的にどのように入力されてますか ? 例えばA列から一列おきにとか・・。
>31ブックに同じ処理
これらは、専用フォルダーに保存していますか ? マクロを実行するための
ブックは、そのフォルダーの中にあるのでしょーか ?

【31285】Re:不特定範囲の平均値
質問  初心者  - 05/11/16(水) 16:24 -

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

初心者です。
ありがとうございます。

>>実データはもっと複雑な関数が
>これはA列に表示されているデータが、数式の計算結果という意味ですか ?

実はピボットテーブルで集計された値に
ある数式を入れて出した結果になります。
VBAで出してありますので、数値として入っています。

--------------------------------------------------------------------------
For c = 6 To Lastrow2
  If Range("H" & c).Value = "" Then
    Range("G" & c).Value = ""
    Range("I" & c).Value = ""
  Else
    Range("G" & c).Value = 10 ^ (Range("B" & c).Value / 10)
    Range("I" & c).Value = (Range("G" & c).Value) * (Range("H" & c).Value)
  
  End If
  
Next c

-------------------------------------------------------------------------

>>範囲は各シート30個以上
>具体的にどのように入力されてますか ? 例えばA列から一列おきにとか・・。

同一列です。(実データはI列なので、J列に結果が出ればベストです。)

>>31ブックに同じ処理
>これらは、専用フォルダーに保存していますか ? マクロを実行するための
>ブックは、そのフォルダーの中にあるのでしょーか ?

同一フォルダ内です。

よろしくお願い致します。

【31292】Re:不特定範囲の平均値
回答  Kein  - 05/11/16(水) 17:14 -

引用なし
パスワード
   では、それらのブックを保存しているフォルダーとは別のところに、マクロ実行ブック
を入れておくという前提で

Sub MyAverage()
  Dim MyF As String
  Dim WB As Workbook
  Dim WS As Worksheet
  Dim MyR As Range, C As Range
  Const Ph As String = _
  "C:\Documents and Settings\User\My Documents\Exl_Files\"
  '↑処理対象のブックを保存しているフォルダーのバスを指定する

  With Application
   .DisplayStatusBar = True
   .StatusBar = "★ 只今マクロ処理中です ★"
   .ScreenUpdating = False
  End With
  MyF = Dir(Ph & "*.xls")
  Do Until MyF = ""
   Set WB = Workbooks.Open(Ph & MyF)
   For Each WS In WB.Worksheets
     If WorksheetFunction.Count(WS.Range("I:I")) > 1 Then
      Set MyR = WS.Range("I:I").SpecialCells(2, 1)
      For Each C In MyR.Areas
        C.Cells(C.Count, 1).Offset(, 1).Value = _
        WorksheetFunction.Average(C)
      Next
      Set MyR = Nothing
     End If
   Next
   WB.Close True: Set WB = Nothing
   MyF = Dir()
  Loop
  With Application
   .StatusBar = False
   .DisplayStatusBar = False
   .ScreenUpdating = True
  End With
  MsgBox "処理が終了しました", 64
End Sub

で、出来ると思います。時間はかかるでしょうけど・・。

【31307】Re:不特定範囲の平均値
質問  初心者  - 05/11/17(木) 9:33 -

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

ありがとうございます!!

早速実行したいと思っていますが、
下記の部分で、今までの集計過程からAverage関数ではなく
I列の変換値合計/H列のピボット出した値の個数合計
で算出しなければならないため、

>WorksheetFunction.Average(C)

を計算式に変えれば出せるでしょうか?

不慣れなため、意味をひとつひとつ辞書を引いて
理解しようとしていますが、ForEachからの部分が
どうしても分かりません。
時間も限られており、アドバイスいただけると
大変助かります。
どうかよろしくお願い致します。

【31315】Re:不特定範囲の平均値
回答  Kein  - 05/11/17(木) 11:52 -

引用なし
パスワード
   >計算式に変えれば出せるでしょうか
数式を埋め込みたいのであれば Value ではなく、Formula プロパティに変更し

C.Cells(C.Count, 1).Offset(, 1).Formula = _
"=I列の変換値合計/H列のピボット出した値の個数合計"

のように数式を "" で囲み、先頭は = とします。

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