• 締切済み

任意の日付を選択、対応する数字を返すVBAの書き方

VBA初心者です。 A列に日付とB列にそれぞれの日に対応する損益が並んでいるエクセルシートから (1)ランダムに任意の一日を選択 (2)その日から10日前までの損益を合計 (3)選択した日と、その日から数えた損益の合計値を別のシート(例:sheet1)に返す (4)上記(1)-(3)の動作を10回繰り返し(数字を返すセルは変えていく) というVBAを書きたいのですがVBAを使用したことがなく、使用方法がわかりかねます。 どなたかアドバイスいただけませんでしょうか? よろしくお願いします。

みんなの回答

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

VBAの経験が無いのにこういうことを質問するということは、コピペしてそのままで動くコードをそっくり作ってくれということになる。このコーナーはそういう下請けをするコーナーではないはず。 普段にある程VBAやエクセルを勉強していて、そういう「VBAでやる」になるはず。 ーー なぜVBAを使うのか。 エクセルでも「在る日付から10日前から今日まで」のデータを抜き出す、操作のフィルタやフィルタオプションの設定、関数のSUMIFS(エクセルのバージョンぐらい質問に書くこと)などで出来るのでは? エクセルの経験も余りないのでは。 ーー >ランダムに任意の一日を選択 このやり方も(少し凝ったやり方も含めると)具体的には色々考えられる。 そういうことも質問に書いてない。決ったセルに日付を入れ、処理の発動ボタンを設け、クリックして実行するのが一番簡単かなと思うが。 >10日前までの これもカレンダー上で10日前なら簡単だが(-10で良い)、営業日、祝日除きなどになると複雑化する。 エクセルの経験が少ないので、どういうことがサブテーマ問題になるか気づいてないのだろう。 ーーー VBAなら、一番やさしいのは、全データ行の問題の日付について、10日前までの日付かどうか判別し(IFステートメント)該当したら足しこめば、全行処理が終わると望みの計数が得られる。 SUMIFSなど関数で出来る場合はVBAでその関数を使うことも出来る。 ーー >数字を返すセルは変えていく 「数字」とかあいまいな表現でなく、「条件に該当した計数」だろう。 「条件に該当した計数」を書き出す、そのセルの行や列を示すポインターを、毎回+1などすれば良い。Cells(i,j)のi、j.。 書き出した列の最終行の次に毎回結果を書き出すやり方も在る。最終行をとらえるコードは Googleででも「vba エクセル 最終行」で照会すると記事が多数出てくる。 http://www.happy2-island.com/excelsmile/smile03/capter00702.shtml >上記(1)-(3)の動作を10回繰り返し(数 For Nextで10回繰り返せば良い。

すると、全ての回答が全文表示されます。

関連するQ&A