測定機器のカウンターからRS232C経由でエクセルにA1、B1から順番にA1 B1,A2 B2、A3 B3とその時刻とデーターを書き込んでいくソフトがあります。A列の最後まで行くとそこで終了です。
この1分毎のデーターをリアルタイムでたとえばD列とE列にその時刻とデーターの30分間分をVBAを使ってコピーしたいのです。30分終了したら全部消去してまた新たに30分間分をコピーする。この繰り返しです。目的はこのD列とE列のデーターでリアルタイムのグラフにして観測したいと思っています。こんなことがVBAを使って出来るのでしょうか。また、実はこのデーターは15桁ありその中の9桁目から5桁目までの5桁だけコピーしたいのです。私には敷居が高すぎてとても解決できません。どうかよろしくお願いします。この記録されるエクセルにはVBAとかの記録は特に無いようです。
No.1
- 回答日時:
>A1、B1から順番にA1 B1,A2 B2、A3 B3とその時刻とデーターを書き込んでいくソフトがあります
そのソフトが自動的にデータを記入していくのなら、マクロにコピーさせずに例えば「常に最新の(いま入ってる一番下から)30行分をD:E列に数式で表示させ、それを元にグラフを表示」させておいた方が、簡単で安全です。
#ソフトが自動でデータを記入する都度、勝手にグラフが時系列を「流れていく」(30分ごとにワイプするのではなく)といった見え方になります
#マクロが30分ごとに割り込みをかけるそのタイミングで、通信ソフトとバッティングしてデータ欠損みたいな事が起きる心配も無くなります
作成例:「30分」でどんだけデータが蓄積されるのか不明なので仮に30行分
E1に
=IF(COUNT(A:A)>30-ROW(E1),INDEX(A:A,MAX(1,COUNT(A:A)-30+ROW(E1))),NA())
F1に
=IF(COUNT(B:B)>30-ROW(F1),INDEX(B:B,MAX(1,COUNT(B:B)-30+ROW(F1))),NA())
E1:F1をE30:F30までコピー貼り付け
E1:F30でグラフを描画。
A1:B1以下に順繰りデータが入る都度、下から上にデータが自動スクロールします。
No.2
- 回答日時:
>時刻とデーターを書き込んでいくソフトがあります
このソフトの動作を制御できないようであれば、難しいと思われます
ソフトの動作としては、
”ソフト上でExcelの新規ブックを開き一定間隔でデータの書き込みを行なっている”
こんな感じなんでしょうか?
・新規に作成されたブックにマクロを登録することが出来ない
(ソフトで開くブックをマクロを含むテンプレートブックに指定することが出来れば可能?)
・他のユーザー(ソフト)が開いているブックを別のユーザ(ソフト)がアクセス出来ない
(読み込み専用として開くことは可能ですが、新規作成されたブックは保存されるまでは読みこみ専用としても開くことは出来ないので、ソフト上で一定間隔で保存するような設定を行うことが出来れば可能)
上記2点がネックになります
No.3ベストアンサー
- 回答日時:
関数で対応できるでしょう。
A1セルとB1セルから下方に1分ごとにデータが自動的に追加されていくとします。
なお、B列のデータは15ケタで9ケタ目から5ケタ目までをE列に抽出したいとのことですね。
D列とE列への最初のデータの取り込み時刻を8:00からとしたい場合にはC1セルに9:00と入力します。C1セルには必ず時刻を入力します。
その指定した時刻からスタートして30分ごとに表が自動的に変わるようにします。A列でのデータの最終行を判断してD列およびE列のデータが自動的に変化します。
D1セルには次の式を入力して下方にオートフィルドラッグします。
=IF(ROW(A1)>30,"",IF(INDEX(A:A,INT((COUNT($A:$A)-MATCH($C$1,$A:$A,1)-1)/30)*30+MATCH($C$1,$A:$A,1)+ROW(A1)-1)=0,"",INDEX(A:A,INT((COUNT($A:$A)-MATCH($C$1,$A:$A,1)-1)/30)*30+MATCH($C$1,$A:$A,1)+ROW(A1)-1)))
E1セルには15ケタの数値の内の9ケタ目から5ケタ目までの数値を表示するために次の式を入力し下方にドラッグコピーします。
=IF(ROW(B1)>30,"",IF(INDEX(B:B,INT((COUNT($A:$A)-MATCH($C$1,$A:$A,1)-1)/30)*30+MATCH($C$1,$A:$A,1)+ROW(B1)-1)=0,"",MID(INDEX(B:B,INT((COUNT($A:$A)-MATCH($C$1,$A:$A,1)-1)/30)*30+MATCH($C$1,$A:$A,1)+ROW(B1)-1),7,5)*1))
なおE列のセルの表示形式は標準にします。
早速に回答ありがとうございました。
やりたかったことが出来ました。関数を使うんですね。私から見たら正に天才としか言いようがありません。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- その他(Microsoft Office) excel テーブル 4 2023/03/18 16:11
- Excel(エクセル) EXCEL 行内のデータを2行に分けて、表を作り直したいのです。教えてください。 5 2023/06/25 14:00
- Visual Basic(VBA) エクセルVBAで次の様にデーターをテンプレートに反映したいのですが、よろし 5 2022/04/17 15:52
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) エクセルVBAで次の様にデーターをテンプレートに反映したいのですが、よろしくお願い致します。 1 2022/04/17 15:56
- Visual Basic(VBA) エクセルVBAで次の様にデーターをテンプレートに反映したいのですが 9 2022/04/06 18:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
MicrosoftOfficeの1ユーザー2...
-
MicrosoftOffice2019なんですが、
-
Microsoft 365のディフェンダー...
-
英数字のみ全角から半角に変換
-
Excel 日付を比較したら、同じ...
-
Microsoft Officeを2台目のPCに...
-
Microsoft365の「お支払いを更...
-
会社PCのメールが更新されない
-
エクセル関数について
-
エクセルのシフト表を簡単にGoo...
-
ウィンドウィズ メモ帳で日付だ...
-
会社のTeamsのことで相談です。...
-
バソコンが二台とも壊れ後換装...
-
Microsoft Formsの「個人情報や...
-
複数の写真を1枚に印刷
-
Formsにて、匿名にて回答する方...
-
パソコン画面の中の小さい画面...
-
マイクロソフト 一時使用コード...
-
MicrosoftOfficeについて質問で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
【スプレッドシート】指定の日...
-
英数字のみ全角から半角に変換
-
会社PCのメールが更新されない
-
マイクロソフト 一時使用コード...
-
Office 2021 Professional Plus...
-
エクセルで例えば、関数を使っ...
-
Microsoft Formsの「個人情報や...
-
1つのPCに「Excel 2010」「Exc...
-
エクセルで例えば、A1に㈱ベ...
-
理由を教えてください。
-
エクセルでXLOOKUP関数...
-
マイクロソフト オフィスについて
-
VLOOKUP関数について
-
teams設定教えて下さい。 ①ビデ...
-
Googleのスプレッドシートでシ...
-
【Excel VBA】PDFを作成して,...
-
Microsoft365で写真をアルバム...
-
Outlook で宛先が複数の場合の人数
-
Excel テーブル内の空白行の削除
おすすめ情報