• 締切済み

VBAのコードに関してです。

データ数のリサンプリングのコードを教えてください。 M2から不特定のデータが不特定の列まで入っている状態です。各列に200程数値データが入力されてます。この数値データを上から順に2つの平均をとってデータ数をリサンプリングしたいと思っています。 どのようにコードをくめばいいのでしょうか? M2とM3の平均をM2に出力、M4とM5の平均をM3に出力というようにリサンプリングを行いたいです。 分かりづらかったらすいません。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

基本的にはループを回して処理する事になります。 データを書き換えてしまうと確認もできないので、Sheet2に結果を出力させました。 Sub Sample()   With Worksheets("Sheet1")     For i = 13 To .Range("M2").End(xlToRight).Column       nRow = 2       For j = 2 To .Cells(2, i).End(xlDown).Row Step 2         Sheets("Sheet2").Cells(1 + j / 2, i) = WorksheetFunction.Average(.Range(.Cells(j, i), .Cells(j + 1, i)))       Next j     Next i   End With End Sub

関連するQ&A

  • VBAのコードに関する質問です。

    B列の値が3の時に対応するJ列の値を選択し、そのJ列の値の平均値をI2に出力する、というVBAのコードを教えてほしいです。

  • EXCEL2000:上書きするVBAのコードを教えてください。

    EXCEL2000のマクロを使用して以下のようなことをやりたいと考えています。 VBAに記載するコードを教えていただけますでしょうか。 ●シート構成 1.データシート A列:各データを識別するコード(3桁で000、001等) B列:氏名 C列:年齢 D列:性別 2.入力シート A列:各データを識別するコード(3桁で000、001等) B列:氏名 C列:年齢 ●やりたいこと 1.「入力シート」に識別コードをふり、データを入力しています。 2.そのデータとは別に、「データシート」にもデータを入力しています。 3.「データシート」に存在するデータに関しては、入力シート上のA列:識別コードと同じデータのB列:氏名とC列:年齢を、「入力シート」上のそれぞれの列に上書きします。 4.「データシート」に存在しないデータに関しては、「入力シート」上に存在するデータをそのまま残します。 マクロを作動させると、上記一連の作業が完了するようにできればと考えています。 まとめますと、「データシート」上にデータが存在すればそれを「入力シート」上に表示し、存在しなければ「入力シート」のデータをそのまま表示するというような仕組みにできればと考えています。 ご回答よろしくお願い致します。

  • VBA 表作成 再 続

    引き続きよろしくお願いします。 入力データというブックがありそこには B列に日付と曜日(日付の下)3行目~、 M列に区分(1か2が入力)3行目~、 T列に商品名3行目~、 AQ列に商品数3行目~、 BA列4行目~にコードが入力されています。 日付を入力したブックに 入力データにある、日付の部分を見て入力フォームで日付から1ヶ月の間の日付で一致すれば、商品名、コードを別ブックにある表に貼り付けます。日付部分の表に数値を商品名とコードにあわせて貼り付け、日付も、商品名もコードも同じであれば足してから表示します。 元にあるのはひとつ分しかはいらないので増えるたびに行数を挿入していくようにします。 最初にある表は    B   M   L ・・・ 4          日付・・・ 5          曜日・・・ 6  商品名 コード 数値・・・ 7          小計・・・ 8  商品名 コード 日付・・・ 9          小計・・・  10         合計・・・ という表になっています。上段には区分1、下段には区分2のものが入ります。 わかりますかね・・・;; 説明下手で申し訳ありません よろしくお願いします

  • アルゴリズム(行列積)

    行列M1,M2,M3,M4が以下の数の行、列を持つ行列としたとき、行列積M1,M2,M3,M4をもっとも少ない演算回数で計算するには、どの順序で計算すればよいか? M1:20行60列 M2:60行5列 M3:5行20列 M4:20行100列 全くわかりません(>_<)みなさま手取り足取り教えてくださいm(__)m

  • VBAのコードをお聞きしたいです。

    VBAのコードをお聞きしたいです。 いま、ある周期で角度をとっていて、グラフが傾いているものを周期毎に傾きを導出してグラフの基準を横一直線にしようとしています。A列に時間(A2から)が1~3000なんぼまでがはいっていて、B列に時間に対応する値(グラフが傾いている元のデータ)、C列に周期毎のデータ数、D列に周期毎の傾きが入力されています。 元データ(B列)の値に傾き(D列)と時間(A列)を掛けた値を引いていく、というのを周期のデータ数分(C列)繰り返す。1周期終わったらまた時間1から2周期目で同じように繰り返してというコードを教えてほしいです。 A B C D Time deg count slope 1 -0.41 475 -0.43 2 -0.82 169 -0.814 3 -1.23 198 -0.54 4 -1.49 190 -0.81 5 -1.9 201 -0.35 6 -2.31 189 -0.89 ~ ~ ~ ~ 3000 -1605.88 というようにExcelにあります。 具体的な計算を書くと (1)E2=B2-D2*A2 / E3=B3-$D$2*A3 / E4=B4-$D$2*A4 ・・これをcount分つまり475回繰り返す (2)E476=B476-$B$476-D3*A2 / E477=B477-$B$476-D3*A3 / E478=B478-$B$476-D3*A4 ・・これを169回繰り返す (3)E674=B674-$B$674-D4*A2 / E675=B675-$B$674-D4*A3 ・・ といったように1周期ごとにtimeを初期化してかけられるようにして、またcount数で区切りをいれるというようなことがでえきるコードを教えてほしいです。 わかりにくい部分があればご指摘ください。補足説明させていただきます。 よろしくお願いします。

  • エクセルで縦に一定数 ほかのセルのデータを繰り返し 入力 の方法

    あるデータがあり、そのデータの一つ一つを3つずつ縦に並べて入力したいのですが、1行目 =M1 2行目 =M1 3行目 =M1 4行目 =M2 5行目 =M2 6行目 =M2 7行目 =M3・・・・・・と入力してフィル入力すると、うまくいきません。どうしたらよいでしょうか? 

  • VBAのコードを教えていただけないでしょうか。

    VBAのコードを教えていただけないでしょうか。 概要はリスト形式のデータの複数の条件に合うデータをオートフィルタで抽出して、その結果を別ファイルにする、というものです。用途は建設業のデータ入力です。 リスト形式のシート「記入用」は次のようになっています。 ・B5:Qはデータを記入する領域。(Qの下の行はどれだけになるかわかりませんが、今は500ぐらいまです) ※5行目は見出し行です。 ・C3に仕入れ先の会社を入力 ・E3・F3はそれぞれ年月日を入力して、検索するときに何月何日から何月何日の間、というようにするためのセルです。E3が調べたい年月日の始めの日、F3は調べたい年月日の終わりの日です。 ・「支払い月」の列はB列 上記の調べたい年月日の対象となるデータです。 ・「仕入先」はF列 エクセルは2003を使っていますが、2007でも使用します。 以上の条件ですが、実現したいことは、 (例) ●2010/4/1から2010/7/31までの間で、仕入先が〇〇工務店のデータを抽出 ●その抽出結果に名前をつけて別ファイルで保存。その保存名は検索した年月日(from to)+仕入先名  この例の場合、[20100401~20100731 〇〇工務店]というファイル名 こんな夢のことができるコードを教えていただけないでしょうか。周りにはエクセルができる人はいますが、このようなVBAのコードが書ける人はおらず、なかなか進みません。 どなたかよろしくお願い致します。

  • Access初心者向けに

    データ出力時に、 作成するエクセルファイルのD列に、出力画面で指定したコンボボックスの値に よって入力する内容を選択し表示させるには、どうしたら良いでしょうか? D列へ入力する値のは、C列と同じデータ数だけ入力させます。 出力テーブル作成時に、 手数料コードというフィールドがあり特定のコードの時には、 手数料名称の欄にある手数料名の後ろに(課税)と表示したい。 どのようにするのが時間が掛からず簡単にできますか? (初心者でも) ある処理の時にだけ、コードの通らせないようにする部分があるが、 どうしたら良いでしょうか?

  • excel関数

    excelで作成した表のなかで a列には各コードが入力 b列は文字列 c列は数字 別にシートを作りコード順に 最小値と最大値、平均を求めたい b列に文字が入っていないデータを探して、別シートに入力したa列コードと一致するデータをc列から探し(複数データあります)その中で更に最小値と最大値、平均を求めたいのですが 関数が分かりません。 教えていただけば助かります。 よろしくお願いします。

  • CASL1

    CASL1の問題でわからないものがありました。お手伝いいただけると助かります。問題に解説も載っていたので一緒に載せておきます。きっとそれほど難しくない問題なのでしょうが、CASLになれない為参考書を読んでもよく理解できません。。 10進入力と数字コード 入力 1~4個の10進数字の列。 出力 入力を正の10進数とみなしたときの2進表現。但し、有効数字のみを出力すること。 例:入力 2006[Enter] 出力 11111010110(メモリーの16ビット表現をそのまま出力した 0000011111010110は不可) 解説: (1)CASLの入出力はメモリー上の連続する領域(入出力バッファ)に文字データとして置かれた内容をINマクロ、OUT マクロでバッファの名前(先頭番地に付けたラベル)、バッファの長さを指定して行う。 (2)文字列を10進数として処理するためには、各文字が意味として0~9の数値をもつこと、各桁が10の冪乗の重みをもつことを理解する必要がある。前者では文字データから数値への変換(文字0~9に対するJIS の文字コードは連続しているので文字0に対するデータを引けば数値になる)し、後者では(それまでに処理した)上位桁の数値を10倍して次の新しい桁の数値を加えればよい。CASLには乗算の命令はないので2倍したもの(左1ビットシフト)と8倍(更に左2ビットシフト)したものとを加えればよい。 (3)数値を2進数字の列として求めるには1ビットずつ処理してシフトすればよい。例えば、1とAND を取ると最下位ビットが抽出される。

専門家に質問してみよう