![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
測定機器のカウンターから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.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列のセルの表示形式は標準にします。
早速に回答ありがとうございました。
やりたかったことが出来ました。関数を使うんですね。私から見たら正に天才としか言いようがありません。ありがとうございました。
No.2
- 回答日時:
>時刻とデーターを書き込んでいくソフトがあります
このソフトの動作を制御できないようであれば、難しいと思われます
ソフトの動作としては、
”ソフト上でExcelの新規ブックを開き一定間隔でデータの書き込みを行なっている”
こんな感じなんでしょうか?
・新規に作成されたブックにマクロを登録することが出来ない
(ソフトで開くブックをマクロを含むテンプレートブックに指定することが出来れば可能?)
・他のユーザー(ソフト)が開いているブックを別のユーザ(ソフト)がアクセス出来ない
(読み込み専用として開くことは可能ですが、新規作成されたブックは保存されるまでは読みこみ専用としても開くことは出来ないので、ソフト上で一定間隔で保存するような設定を行うことが出来れば可能)
上記2点がネックになります
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以下に順繰りデータが入る都度、下から上にデータが自動スクロールします。
お探しの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ランキング
-
Officeを開くたびの「再起動メ...
-
大学のレポート A4で1枚レポー...
-
英数字のみ全角から半角に変換
-
outlookのメールが固まってしま...
-
Microsoft Formsの「個人情報や...
-
逆順
-
office365って抵抗感ないですか?
-
Microsoft365で写真をアルバム...
-
teams設定教えて下さい。 ①ビデ...
-
エクセルやワードを無料で使え...
-
Office 2021 Professional Plus...
-
エクセルでXLOOKUP関数...
-
VLOOKUP関数について
-
【マクロ】文字を1文字づつ、...
-
Microsoft 365 Apps for busine...
-
【Excel VBA】PDFを作成して,...
-
会社のPCに入っているExcelでバ...
-
会社PCのメールが更新されない
-
EXCELのセルへの色づけ
-
Microsoft Officeに似たキング...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
英数字のみ全角から半角に変換
-
「生産性ソフトウェア」とは何...
-
会社PCのメールが更新されない
-
【関数】○年○ヶ月と表示された...
-
WEBの記事を印刷する際にA...
-
エクセルでXLOOKUP関数...
-
Microsoft familyに追加されま...
-
会社のOutlookにてメールを予約...
-
Microsoft Formsの「個人情報や...
-
Microsoft365の一部を解約したい
-
マクロ自動コピペ 貼り付ける場...
-
Outlook で宛先が複数の場合の人数
-
outlookのメールが固まってしま...
-
【Excel VBA】PDFを作成して,...
-
大学のレポート A4で1枚レポー...
-
office365って抵抗感ないですか?
-
Microsoftにofficeアプリについ...
-
Excel テーブル内の空白行の削除
-
マイクロソフト 一時使用コード...
おすすめ情報