• 締切済み

現在値と時系列データをマクロで作りたい

エクセル2010をウインドウズ7にて使用しています。 グラフを作る元データを形成するために自分なりにマクロ式を作ってみましたが、 うまくいかず困っています。 そこで、以下の内容を満たすマクロ式をぜひ例示していただけないでしょうか。 当方マクロには疎いため、エクセルにコピペすれば動作する式を例示いただければ大変助かります。 1.実現したいこと ○刻々と変化する数字データを一定時間ごとの時系列に固定化・記録したい ○現在の時間帯に相当するセルにはリアルタイムデータを表示する 2.説明 添付の画像をもとに説明します B列には、他のワークシートから参照したリアルタイムデータが入っています。 (「=別のシート!A2」という感じです) なおB列にある各行は、それぞれ別のセルから引用した個別のデータです。 それらのデータを、C列以降に30分ごとの区切りで記録していくとともに、 現在時間にあたる列(たとえば10:15であればE列)には、 「=B2」のように現在のリアルタイムデータを表示させたいのです。 つまり、現在データは現在の時間帯のセルに表示させつつ、 一定時間ごとで区切った過去の時系列データも記録したいということです。 その時系列データ・現在データをもとにグラフを作成することを考えています。 (具体的には、「スパークライン」の作成) 自分でマクロを作成してみたときの流れは以下のような感じです 09:00直前の処理 1.C2に「=B2」を入力 2.C2を下へドラッグし、C3以下にB2同様に=B3、=B4・・と連続データを作成 09:30の処理 1.C2以下のデータをコピーし、C列に「値として貼り付け」を行うことで終値を固定データ化する 2.D2に「=B2」を入力 3.D2を下へドラッグし、D3以下にD2同様に=B3、=B4・・と連続データを作成 10:00の処理 1.D2以下のデータをコピーし、D列に「値として貼り付け」を行うことで終値を固定データ化する 2.E2に「=B2」を入力 3.E2を下へドラッグし、E3以下にE2同様に=B3、=B4・・と連続データを作成 同様の処理を30分ごとにO列まで繰り返す 以上です。 できれば一つのマクロで完結するような計算式だとありがたいです。 わかりにくい点がありましたらご指摘ください。 よろしくお願いいたします。

みんなの回答

noname#192382
noname#192382
回答No.1

下記のマクロをコピーペーストしてください。このマクロは B列の最終行を6にしていますので、適宜変更してください。 データ採取間隔はkankの定数として指定することにしていますのでプログラムの中で指定してください。 またカラム数もmaxkazuとして指定することにしていますのでプログラムの中で指定してください。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2012/5/13 ユーザー名 : ' Dim d As Variant, mycol As Integer, myrange As Range, strtd As Variant, kank As Variant, maxkazu As Variant strtd = Hour(Time) * 60 + Minute(Time) 'kankaku kank = 1 'column kazu maxkazu = 5 Do d = Hour(Time) * 60 + Minute(Time) - strtd mycol = Int(d / kank) + 3 'MsgBox (d) 'MsgBox (mycol) Cells(2, mycol) = Time Range(Cells(3, mycol), Cells(6, mycol)).Value = Range(Cells(3, 2), Cells(6, 2)).Value Loop While mycol < maxkazu ' End Sub

moon160
質問者

お礼

回答ありがとうございます。 これから対象のエクセルシートに組み込んで動作させます。 取り急ぎお礼まで。

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