• ベストアンサー

Excel VBAで、Averageの範囲を変数を使って記述したい。

VBA初心者です。 例えば、 n=1~26 n=1の時 Range(A1:Z1).Formula=("=average(A2:A5)") n=2の時 Range(B1:Z1).Formula=("=average(B2:B5)") n=3の時 Range(C1:Z1).Formula=("=average(C2:C5)") (以下、n=26まで続く) これを変数を使って、すっきり記述するにはどうすればよいのでしょうか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

n = 2 col = Chr(Asc("A") + n - 1) Range(col & "1:Z1").Formula = "=average($" & col & "2:$" & col & "5)" みたいな感じで良いかも

mumu001
質問者

お礼

アドバイスを参考に記述したところ、目的とする結果を得ることができました。助かりました。ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 私には、何をしたいのか、コードからは読み取れませんが、分岐なのでしょうか? Sub TestSample1() Dim n As Integer n = InputBox("数字を入れてください") If n > 0 And n < 27 Then  ActiveSheet.Cells(1, n).Resize(, 27 - n).FormulaLocal = "=Average(R[1]C:R[4]C)" End If End Sub

mumu001
質問者

お礼

nの値をInputBoxなどで取得し、その値に応じてAverageの範囲を設定したいと思いました。質問が分かり難く、すみませんでした。おかげさまで、すっきりと記述することができました。ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

モデル例 Sub test01() For j = 1 To 3 d = ActiveSheet.Cells(9, j).End(xlUp).Row ' MsgBox d avg = WorksheetFunction.Average(Range(Cells(2, j), Cells(d, j))) Cells(10, j) = avg Next j End Sub 質問者の場合への修正。 For j = 1 To 3の3は26(列)に変える。 Cells(10, j) = avgの10は合計行の行番号に変える。 d = ActiveSheet.Cells(9, j).End(xlUp).Rowの9は合計行の直上の行番号に変える。

mumu001
質問者

お礼

なにぶん初心者なもので、一読しただけでは理解できない箇所がありますので、ゆっくり調べてみたいと思います。ありがとうございました。

関連するQ&A

  • VBAに関数を入れる方法

    VBA記述の中に、例えばAVERAGE関数を入れないのですが良く判りません。 もし、A1からA500位までにデータがあって、B20位から下位行にA列と平行して平均値を求めたい場合DO ~ LOOPで繰り返すのですが、B20にセルを置き ActiveCell.Formula = ”=AVERAGE(A1;A20)” の様な時に、もしA1なりA10なりに変数を使用したい場合には、”=AVERAGE(A1;A20)” の部分はどのように記述すればいいのでしょうか?。 よろしくお願いします。

  • エクセルVBE の変数の使い方を教えてください

    VBEについてはまだ始めたばかりのまったく初心者の60代です。 変数を使う関数式ができません。本、ネット等で調べたのですがお手上げの状態になってしまいました。 質問)計算1()で得た数値を変数として計算2()を実行するとA2セルの答えが#NAME となります。変数の使い方が間違っているのでしょうか。どなたか教えていただけないでしょうか。どうぞよろしくお願いいたします。 Sub 計算1() range("A1").Formula = "=180*F25/pi()/C25" End Sub Sub 計算2() Dim x x = range("A1").Value range("A2").Formula = "=Sin(Radians(x))" End Sub

  • VBAの記述の仕方で

    エクセルのVBAで、A1に Range("B1").Select という文字列を入力させたいのですが、以下の記述だといずれもエラーになってしまいます。 Cells(1, 1).Value = Range("B1").Select   Cells(1, 1).Value = "Range("B1").Select"   どこをどう直せばいいのでしょう?

  • ☆Excel VBAでAVERAGE関数を使うとき・・・

    こんにちは。VBA初心者です。 VBAでAVERAGE関数を使いたいのですが、参照範囲を最終行まで指定したい場合、 どのようプログラムすれば良いのでしょうか?     A   B   C    1 5000  2 2000  3 3000  4 1000  5 6000  6  :  7  :    ← A列の値を平均する。           A列には膨大な行が存在すると仮定します。 VBAに詳しい方、教えてください。 どうか、よろしくお願いしますm(_ _)m

  • エクセルのセルに記述した式をVBAで読込む方法

    エクセルのセルに  a*x^2+b*x+c という式を埋め込んでおいて  (式はa,b,cの数値は定数、xはマクロ側でいろいろな数値を指定されます。) VBAのマクロに  ε=a*x^2+b*x+c のように式を埋め込む方法はないでしょうか。 例えば  n=....  x=sin(n*3.14/180) ε=a*x^2+b*x+c  Range(”D2”).value=ε   この中段の行にエクセルのセルの式を呼び出したいのです。 この式はセルにはいろいろな2次式、3次式が任意に組み込まれ、VBAを実行するたびに埋め込まれた式に自動的に記述し直すようにしたいのです。 (数式の結果の数値を入れるのではなくて式を入れたいのです) 可能でしょうか。その場合どのようなコードが考えられるでしょうか。 よろしくお願いします。

  • VBA 変数の指定について

    エクセル2010を使っている者です。 過去の質問を見ていると、以下の記述が見つかりました。 Sub swap() Dim w, x As Range, y As Range If Selection.Areas.Count <> 2 Then Exit Sub Set x = Selection.Areas(1) Set y = Selection.Areas(2) w = x.Formula x.Formula = y.Formula y.Formula = w End Sub 変数の指定のところで、x, yはRangeの型を指定していますが、 wはどのようになっているのでしょうか? 検索してみると、変数の型を書かないと自動でVariantとして扱われるように なっているとのことですが、この場合もwもVariant型になっているのでしょうか? また、このようにwを中途半端に書かずに Dim x As Range, y As Range とwを外して書いてしまってもwは変数として機能するのでしょうか? よろしくお願いいたします。

  • EXCEL VBA Worksheet_Chang

    お世話になります。 EXCEL VBAで 以下の処理をしています。 C6の内容に応じて、セルに式を設定するだけなのですが このシートの全然関係ないセルで[Delete]キーを押下した際に 実行時エラー 13 型が一致しません というエラーが発生します。 どういう理由でエラーとなるのでしょうか? また、どのような対処をすればいいでしょうか? 以下、実際のコードです Private Sub Worksheet_Change(ByVal Target As Range) If Target = Range("C6") Then If Range("C6").Value = "する" Then Range("I11").Formula = "=C7" Range("I12").Formula = "=C7" Range("I13").Formula = "=C7" Range("I14").Formula = "=C7" Range("J11").Formula = "=C8" Range("J12").Formula = "=C8" Range("J13").Formula = "=C8" Range("J14").Formula = "=C8" Else Range("I11").Formula = "" Range("I12").Formula = "" Range("I13").Formula = "" Range("I14").Formula = "" Range("J11").Formula = "" Range("J12").Formula = "" Range("J13").Formula = "" Range("J14").Formula = "" End If Else End If End Sub

  • VBAの記述あってますか?それともミスプリ?

    まちゅといいます。よろしくお願い致します。 昔買ったVBAの入門書をみながら、問題を解いていたのですが、どうにも納得いかない部分がありましたので質問させていただきます。 添付した画像のC列はA1×B1の答えが入るようになっています。 C17にはオートSUMなどは入っておらず、A1×B2の答えを計算すると C1に答えを記述、その都度C17に答えが加算されて最後に消費税と合計も記述されるというDo~Loopの問題なのですが、下記のマクロではどうしてもC列が計算されないんですがこれはミスプリントですか? それとも私が勘違いしてますか? ※インプレス「できるexcel2000マクロ&VBA編」P148より Sub test4() Range("C1") = 0 Range("C1").Select Do Until ActiveCell.Offset(0, -2).Value = "" With ActiveCell Range("C17").Value = Range("C17") + .Value .Offset(1, 0).Select End With Loop Range("C18") = Range("C17").Value * Range("D18").Value Range("C19") = Range("c17").Value + Range("C18").Value End Sub

  • エクセルVBAの掛け算

    お世話になります。 VBA初心者です。 セルA1にはB1×C1の答え Range("A1").Value = Range("B1") * Range("C1") これを、B1が空白ならA1も空白に、そうでないならA1にB1×C1の答えを入れたいのですが 分かりません。 Range("A1").Value = "IF(B1="""","""",B1 * C1)"これだと A1に『 =IF(****** 』と関数が入ってしまいます。 どなたか 分かる方教えて下さい。 宜しくお願いします。

  • エクセルVBAで複数範囲の変数使用指定方法につい

    エクセルVBAの初心者です。複数の範囲を変数を使用して指定したいのですが、色々と調べてみましたがよくわかりません。 一つの範囲に対しては、下記の方法で正常に動きました。 i1=1 j1=3 i2=4 j2=8 Range(Cells(j1, i1), Cells(j2, i2)).Name = "範囲_全体" 異なる範囲に対して変数を使用せずに名前をつける場合は下記の方法で動くことがわかっています。 Range("A3:A8, C3:C8").Name = "範囲_分離" 但し、例えば Cellsを使用して Range(Cells(3, 1), Cells(8, 1)) と Range(Cells(3, 3), Cells(8, 3)) を まとめて「範囲_分離」と名前を付けたいのですが、よくわかりません。 どなたかご教授方、お願いいたします。

専門家に質問してみよう